[med-svn] [SCM] mia branch, master, updated. upstream/2.0.8-71-g67bbbd6
Gert Wollny
gw.fossdev at gmail.com
Wed Mar 6 12:17:28 UTC 2013
The following commit has been merged in the master branch:
commit d205281607d612fb54508e680ffb27c273be7044
Author: Gert Wollny <gw.fossdev at gmail.com>
Date: Fri Mar 1 15:35:16 2013 +0100
add patch to correct tests that fail on i386 for floating point accuracy problems
diff --git a/mia/2d/SegFrame.cc b/mia/2d/SegFrame.cc
index e1ed3e2..c5899b7 100644
--- a/mia/2d/SegFrame.cc
+++ b/mia/2d/SegFrame.cc
@@ -267,7 +267,8 @@ C2DUBImage CSegFrame::get_section_masks(size_t n_sections) const
for (size_t y = 0; y < result.get_size().y; ++y) {
for (size_t x = 0; x < result.get_size().x; ++x, ++i) {
if (*i) {
- const C2DFVector ray_b(x - m_star.m_center.x, y - m_star.m_center.y);
+ const C2DFVector ray_b(static_cast<float>(x) - m_star.m_center.x,
+ static_cast<float>(y) - m_star.m_center.y);
double a = scale * angle(ray_a, ray_b);
if (a >= n_sections)
a -= n_sections;
diff --git a/mia/2d/cost/test_lsd.cc b/mia/2d/cost/test_lsd.cc
index 56e04cf..b490f5c 100644
--- a/mia/2d/cost/test_lsd.cc
+++ b/mia/2d/cost/test_lsd.cc
@@ -46,14 +46,14 @@ BOOST_FIXTURE_TEST_CASE( test_LSD_2D_self, LSDFixture )
cost.set_reference(*src);
double cost_value = cost.value(*src);
- BOOST_CHECK_CLOSE(cost_value, 0.0, 0.1);
+ BOOST_CHECK_SMALL(cost_value, 1e-10);
C2DFVectorfield force(C2DBounds(8,8));
BOOST_CHECK_CLOSE(cost.evaluate_force(*src, force), 0.0, 0.1);
- BOOST_CHECK_EQUAL(force(1,1).x, 0.0f);
- BOOST_CHECK_EQUAL(force(1,1).y, 0.0f);
+ BOOST_CHECK_SMALL(force(1,1).x, 1e-10f);
+ BOOST_CHECK_SMALL(force(1,1).y, 1e-10f);
}
@@ -71,8 +71,17 @@ BOOST_FIXTURE_TEST_CASE( test_LSD_2D, LSDFixture )
for (auto iforce = force.begin(), ig = grad.begin(); ig != grad.end(); ++ig, ++iforce) {
- BOOST_CHECK_CLOSE(iforce->x, ig->x, 0.1f);
- BOOST_CHECK_CLOSE(iforce->y, ig->y, 0.1f);
+ if (ig->x == 0.0)
+ BOOST_CHECK_SMALL(iforce->x, 1e-10f);
+ else
+ BOOST_CHECK_CLOSE(iforce->x, ig->x, 0.1f);
+
+ if (ig->y == 0.0)
+ BOOST_CHECK_SMALL(iforce->y, 1e-10f);
+ else
+ BOOST_CHECK_CLOSE(iforce->y, ig->y, 0.1f);
+
+
};
}
diff --git a/mia/2d/test_rigidregister.cc b/mia/2d/test_rigidregister.cc
index 3ab527d..509e50d 100644
--- a/mia/2d/test_rigidregister.cc
+++ b/mia/2d/test_rigidregister.cc
@@ -243,7 +243,7 @@ BOOST_AUTO_TEST_CASE( test_rigidreg_affine_cost_gradient ) //, RigidRegisterFixt
BOOST_FIXTURE_TEST_CASE( test_rigidreg_rigid_gd, RigidRegisterFixture )
{
- auto tr_creator = C2DTransformCreatorHandler::instance().produce("rigid:imgboundary=repeat");
+ auto tr_creator = C2DTransformCreatorHandler::instance().produce("rigid:imgboundary=zero");
auto transformation = tr_creator->create(size);
auto params = transformation->get_parameters();
params[0] = 1.0;
diff --git a/mia/2d/test_segframe.cc b/mia/2d/test_segframe.cc
index d3f9c3a..8dbb538 100644
--- a/mia/2d/test_segframe.cc
+++ b/mia/2d/test_segframe.cc
@@ -258,9 +258,9 @@ BOOST_FIXTURE_TEST_CASE(test_frame_get_mask, FrameTestRead)
BOOST_FIXTURE_TEST_CASE(test_frame_get_mask_different, FrameTestRead)
{
- CSegPoint2D center(7.5,7.5);
+ CSegPoint2D center(7.6,7.59);
float r = 4;
- CSegPoint2D d1(1.0,0);
+ CSegPoint2D d1(1.0, 0.0);
CSegPoint2D d2(0.0,-1.0);
CSegPoint2D d3(-1.0,0.0);
CSegStar star(center, r, d1, d2, d3);
@@ -310,15 +310,15 @@ BOOST_FIXTURE_TEST_CASE(test_frame_get_mask_different, FrameTestRead)
/* x */
/*8*/ 0, 4, 4, 4, 4, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,
- /*9*/ 0, 4, 4, 4, 4, 4, 0, 0, 2, 1, 1, 1, 1, 0, 0, 0,
+ /*9*/ 0, 4, 4, 4, 4, 4, 0, 0, 2, 2, 1, 1, 1, 0, 0, 0,
- /*10*/ 0, 0, 4, 4, 4, 4, 3, 3, 2, 2, 2, 1, 0, 0, 0, 0,
+ /*10*/ 0, 0, 4, 4, 4, 4, 3, 3, 2, 2, 2, 1, 1, 0, 0, 0,
/*11*/ 0, 0, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 0, 0, 0, 0,
/*12*/ 0, 0, 0, 4, 3, 3, 3, 3, 2, 2, 2, 0, 0, 0, 0, 0,
- /*13*/ 0, 0, 0, 0, 0, 3, 3, 3, 2, 0, 0, 0, 0, 0, 0, 0,
+ /*13*/ 0, 0, 0, 0, 0, 3, 3, 3, 2, 2, 0, 0, 0, 0, 0, 0,
/*14*/ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
diff --git a/mia/2d/transform/test_vectorfield.cc b/mia/2d/transform/test_vectorfield.cc
index 1c04202..baa7b6f 100644
--- a/mia/2d/transform/test_vectorfield.cc
+++ b/mia/2d/transform/test_vectorfield.cc
@@ -94,17 +94,25 @@ BOOST_FIXTURE_TEST_CASE(test_gridtransform_derivative, GridTransformFixture)
C2DFMatrix dv = field.derivative_at(x, y);
if ( x > 0 && x < size.x- 1) {
BOOST_CHECK_CLOSE(dv.x.x, 1.0f - dfx_x(x, y), 1);
- BOOST_CHECK_CLOSE(dv.x.y, -dfy_x(x, y), 1);
+ float test_value = -dfy_x(x, y);
+ if (fabs(test_value) < 1e-10)
+ BOOST_CHECK_SMALL(dv.x.y,1e-10f);
+ else
+ BOOST_CHECK_CLOSE(dv.x.y, test_value, 0.1);
}else {
- BOOST_CHECK_EQUAL(dv.x.x, 1.0f);
- BOOST_CHECK_EQUAL(dv.x.y, 0);
+ BOOST_CHECK_CLOSE(dv.x.x, 1.0f, 0.1);
+ BOOST_CHECK_SMALL(dv.x.y, 1e-10f);
}
if ( y > 0 && y < size.y - 1) {
- BOOST_CHECK_CLOSE(dv.y.x, -dfx_y(x, y), 1);
+ float test_value = -dfx_y(x, y);
+ if (fabs(test_value) < 1e-10)
+ BOOST_CHECK_SMALL(dv.y.x, 1e-10f);
+ else
+ BOOST_CHECK_CLOSE(dv.y.x, test_value , 1);
BOOST_CHECK_CLOSE(dv.y.y, 1.0f - dfy_y(x, y), 1);
}else {
- BOOST_CHECK_EQUAL(dv.y.x, 0);
- BOOST_CHECK_EQUAL(dv.y.y, 1.0f);
+ BOOST_CHECK_SMALL(dv.y.x, 1e-10f);
+ BOOST_CHECK_CLOSE(dv.y.y, 1.0f, 0.1);
}
}
--
Packaging of mia in Debian
More information about the debian-med-commit
mailing list