Relax test tolerance for cross correlation measure for densities
authorChristian Blau <cblau@gwdg.de>
Mon, 2 Dec 2019 13:52:27 +0000 (14:52 +0100)
committerChristian Blau <cblau@gwdg.de>
Mon, 2 Dec 2019 13:52:27 +0000 (14:52 +0100)
Some compilers do not perform the optimisations that are necessary to
reach default real tolerance when calculating the cross correlation of
larger three dimensional densities (100x100x100 voxels)

This patch loosens the requirement on the precision of cross correlation
evaluations.

refs #3205

Change-Id: Iad1bb1b17bb6935b2ce2537bcbb6c3902172a6bc

src/gromacs/math/tests/densityfit.cpp

index d56bb7da5300865cc3b9ae473b63e0c6965f6bc4..1efd3ed325fd9da0b80aa2530b5fd75e284f5357 100644 (file)
@@ -209,8 +209,9 @@ TEST(DensitySimilarityTest, CrossCorrelationIsOne)
     MultiDimArray<std::vector<float>, dynamicExtents3D> comparedDensity(100, 100, 100);
     std::iota(begin(comparedDensity), end(comparedDensity), -10000);
 
-    const real expectedSimilarity = 1;
-    EXPECT_REAL_EQ(expectedSimilarity, measure.similarity(comparedDensity.asConstView()));
+    const real             expectedSimilarity = 1;
+    FloatingPointTolerance tolerance(relativeToleranceAsUlp(1.0, 10'000));
+    EXPECT_REAL_EQ_TOL(expectedSimilarity, measure.similarity(comparedDensity.asConstView()), tolerance);
 }
 
 TEST(DensitySimilarityTest, CrossCorrelationIsMinusOneWhenAntiCorrelated)
@@ -228,8 +229,9 @@ TEST(DensitySimilarityTest, CrossCorrelationIsMinusOneWhenAntiCorrelated)
     MultiDimArray<std::vector<float>, dynamicExtents3D> comparedDensity(100, 100, 100);
     std::iota(begin(comparedDensity), end(comparedDensity), -10000);
 
-    const real expectedSimilarity = -1;
-    EXPECT_REAL_EQ(expectedSimilarity, measure.similarity(comparedDensity.asConstView()));
+    const real             expectedSimilarity = -1;
+    FloatingPointTolerance tolerance(relativeToleranceAsUlp(-1.0, 10'000));
+    EXPECT_REAL_EQ_TOL(expectedSimilarity, measure.similarity(comparedDensity.asConstView()), tolerance);
 }
 
 TEST(DensitySimilarityTest, CrossCorrelationGradientIsZeroWhenCorrelated)