DIPlib / diplib

Quantitative Image Analysis in C++, MATLAB and Python
https://diplib.org
Apache License 2.0
211 stars 48 forks source link

One test fails: ERROR: CHECK( dip::pow10( -5 ) == std::pow( 10, -5 ) ) is NOT correct! #120

Closed yurivict closed 1 year ago

yurivict commented 1 year ago
-- Build files have been written to: /disk-samsung/freebsd-ports/graphics/diplib/work/.build
ninja: no work to do.
[ 33% 1/3] /usr/local/libexec/ccache/c++ -DDIP_CONFIG_DOCTEST_IN_SHARED_LIB -DDIP_CONFIG_ENABLE_DOCTEST -DDIP_CONFIG_ENABLE_STACK_TRACE -DDIP_CONFIG_HAS_PRETTY_FUNCTION -DDIP_IMPLEMENT_UNIT_TESTS -DDOCTEST_CONFIG_NO_SHORT_MACRO_NAMES -I/disk-samsung/freebsd-ports/graphics/diplib/work/diplib-3.3.0/dependencies/doctest -I/disk-samsung/freebsd-ports/graphics/diplib/work/diplib-3.3.0/include -O2 -pipe -fno-omit-frame-pointer -fstack-protector-strong -fno-strict-aliasing -fno-omit-frame-pointer -Wall -Wconversion -Wsign-conversion -pedantic -Wno-c++17-extensions -O2 -pipe -fno-omit-frame-pointer -fstack-protector-strong -fno-strict-aliasing -fno-omit-frame-pointer -MD -MT src/CMakeFiles/unit_tests.dir/library/unit_tests.cpp.o -MF src/CMakeFiles/unit_tests.dir/library/unit_tests.cpp.o.d -o src/CMakeFiles/unit_tests.dir/library/unit_tests.cpp.o -c /disk-samsung/freebsd-ports/graphics/diplib/work/diplib-3.3.0/src/library/unit_tests.cpp
[ 66% 2/3] : && /usr/local/libexec/ccache/c++ -O2 -pipe -fno-omit-frame-pointer -fstack-protector-strong -fno-strict-aliasing -fno-omit-frame-pointer -Wall -Wconversion -Wsign-conversion -pedantic -Wno-c++17-extensions -O2 -pipe -fno-omit-frame-pointer -fstack-protector-strong -fno-strict-aliasing -fno-omit-frame-pointer -fstack-protector-strong src/CMakeFiles/unit_tests.dir/library/unit_tests.cpp.o -o src/unit_tests  -Wl,-rpath,"\$ORIGIN"  src/libDIP.so && :
[100% 3/3] cd /disk-samsung/freebsd-ports/graphics/diplib/work/.build/src && /disk-samsung/freebsd-ports/graphics/diplib/work/.build/src/unit_tests
FAILED: src/CMakeFiles/DIP_check /disk-samsung/freebsd-ports/graphics/diplib/work/.build/src/CMakeFiles/DIP_check 
cd /disk-samsung/freebsd-ports/graphics/diplib/work/.build/src && /disk-samsung/freebsd-ports/graphics/diplib/work/.build/src/unit_tests
[doctest] doctest version is "2.4.8"
[doctest] run with "--help" for options
100 s
1 m
===============================================================================
/disk-samsung/freebsd-ports/graphics/diplib/work/diplib-3.3.0/src/support/numeric.cpp:542:
TEST CASE:  [DIPlib] testing the dip::pow10 function

/disk-samsung/freebsd-ports/graphics/diplib/work/diplib-3.3.0/src/support/numeric.cpp:547: ERROR: CHECK( dip::pow10( -5 ) == std::pow( 10, -5 ) ) is NOT correct!
  values: CHECK( 0.00001 == 0.00001 )

===============================================================================
[doctest] test cases:   84 |   83 passed | 1 failed | 0 skipped
[doctest] assertions: 2837 | 2836 passed | 1 failed |
[doctest] Status: FAILURE!
ninja: build stopped: subcommand failed.

Version: 3.3.0 clang-14 FreeBSD 13.1

crisluengo commented 1 year ago

It is true, 10 to the power of -5 cannot be represented exactly in floating point. Interesting how BSD is the first platform so far where pow(10,-5) is rounded differently.

Thanks for reporting!