File fix-floating-point-epsilon-in-tests-i586.patch of Package lib2geom
From: Antonio Larrosa <alarrosa@suse.com>
Subject: Fix floating point error on i586 by using epsilon
Submitted to upstream at
https://gitlab.com/inkscape/lib2geom/-/merge_requests/52
Index: lib2geom-1.1/tests/bezier-test.cpp
===================================================================
--- lib2geom-1.1.orig/tests/bezier-test.cpp
+++ lib2geom-1.1/tests/bezier-test.cpp
@@ -134,12 +134,13 @@ TEST_F(BezierTest, Casteljau) {
unsigned N = wiggle.order() + 1;
std::vector<Coord> left(N), right(N);
std::vector<Coord> left2(N), right2(N);
+ double eps = 1e-15;
for (unsigned i = 0; i < 10000; ++i) {
double t = g_random_double_range(0, 1);
double vok = bernstein_value_at(t, &wiggle[0], wiggle.order());
double v = casteljau_subdivision<double>(t, &wiggle[0], &left[0], &right[0], wiggle.order());
- EXPECT_EQ(v, vok);
+ EXPECT_near(v, vok, eps);
EXPECT_EQ(left[0], wiggle.at0());
EXPECT_EQ(left[wiggle.order()], right[0]);
EXPECT_EQ(right[wiggle.order()], wiggle.at1());
@@ -147,8 +148,8 @@ TEST_F(BezierTest, Casteljau) {
double vl = casteljau_subdivision<double>(t, &wiggle[0], &left2[0], NULL, wiggle.order());
double vr = casteljau_subdivision<double>(t, &wiggle[0], NULL, &right2[0], wiggle.order());
EXPECT_EQ(vl, vok);
- EXPECT_EQ(vr, vok);
- EXPECT_vector_equal(left2, left);
+ EXPECT_near(vr, vok, eps);
+ EXPECT_vector_near(left2, left, eps);
EXPECT_vector_equal(right2, right);
double vnone = casteljau_subdivision<double>(t, &wiggle[0], NULL, NULL, wiggle.order());