summaryrefslogtreecommitdiff
path: root/fuzzylite/test/BenchmarkTest.cpp
diff options
context:
space:
mode:
authorJohannes 'josch' Schauer <josch@debian.org>2019-02-03 10:33:22 +0100
committerJohannes 'josch' Schauer <josch@debian.org>2019-02-03 10:48:07 +0100
commit80960ae38da9db032dfbfec6405398653e8205ff (patch)
treec23937aa811cf83786893791a6022a7dda493057 /fuzzylite/test/BenchmarkTest.cpp
parent09cd1eae556a50ee21e8e6d225d1d1d68c7226f4 (diff)
when testing large float numbers for equality, use a larger epsilon
Diffstat (limited to 'fuzzylite/test/BenchmarkTest.cpp')
-rw-r--r--fuzzylite/test/BenchmarkTest.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/fuzzylite/test/BenchmarkTest.cpp b/fuzzylite/test/BenchmarkTest.cpp
index 3fb270a..2b97663 100644
--- a/fuzzylite/test/BenchmarkTest.cpp
+++ b/fuzzylite/test/BenchmarkTest.cpp
@@ -96,7 +96,17 @@ namespace fl {
CHECK(Op::isEq(1.0, Benchmark::convert(1000.0, Benchmark::MilliSeconds, Benchmark::Seconds)));
FL_LOG(Benchmark::convert(1000.0, Benchmark::MilliSeconds, Benchmark::Seconds));
- CHECK(Op::isEq(35e9, Benchmark::convert(35, Benchmark::Seconds, Benchmark::NanoSeconds)));
+ scalar eps =
+#ifndef __i386__
+ fuzzylite::macheps();
+#else
+ // on i386, due to the 80bit x87 register, double floating point
+ // numbers are handled differently and thus the difference between
+ // 35e9 and the result of Benchmark::convert() will be 2.179e-6,
+ // which is greater than the default epsilon of 1e-6.
+ 1e-5;
+#endif
+ CHECK(Op::isEq(35e9, Benchmark::convert(35, Benchmark::Seconds, Benchmark::NanoSeconds), eps));
CHECK(Op::isEq(35, Benchmark::convert(35e9, Benchmark::NanoSeconds, Benchmark::Seconds)));
}