
John Maddock wrote:
So.... I'm looking for testers to run the attached program on as many different platforms/compilers as possible, basically I want to see if there's any mileage in this or if I'm on to a looser with this code!
Please build the test program with optimisations turned on: many compilers make non-IEEE arithmetic assumptions once you tell them to optimise the code.
Some results: Linux-x86_64, glibc-2.3.5: gcc 3.3.6 without optimizations: ok gcc 3.3.6 -ffast-math breaks (1) gcc 3.3.6 with a lot of optimizations, without -ffast-math: ok gcc 3.4.4 without optimizations: ok gcc 3.4.4 -ffast-math breaks (1) gcc 3.4.4 with a lot of optimizations, without -ffast-math: ok gcc 4.0.0 without optimizations: ok gcc 4.0.0 with a lot of optimizations, without -ffast-math: ok gcc 4.0.0 with a lot of optimizations, including -ffast-math: ok Linux-x86, glibc-2.3.5: gcc 3.2.3 without optimizations: ok gcc 3.2.3 with a lot of optimizations, including -ffast-math: ok gcc 3.3.6 without optimizations: ok gcc 3.3.6 -ffast-math breaks (1) gcc 3.3.6 with a lot of optimizations, without -ffast-math: ok gcc 3.4.4 without optimizations: ok gcc 3.4.4 -ffast-math breaks (1) gcc 3.4.4 with a lot of optimizations, without -ffast-math: ok gcc 4.0.2 without optimizations: ok gcc 4.0.2 with a lot of optimizations, without -ffast-math: ok gcc 4.0.2 with a lot of optimizations, including -ffast-math: ok icc 8.1 without optimizations, using gcc 3.3.6 libs: breaks (1) icc 8.1 with -O3, using gcc 3.3.6 libs: breaks (1) icc 8.1 without optimizations, using icc libs: ok icc 8.1 with -O3, using icc libs: ok icc 9.0 without optimizations, using gcc 3.3.6 libs: breaks (1) icc 9.0 with -O3, using gcc 3.3.6 libs: breaks (1) icc 9.0 without optimizations, using icc libs: ok icc 9.0 with -O3, using icc libs: ok I didn't use -ffinite-math-only nor -funsafe-math-optimizations flags. HTH, m 1: Running 1 test case... Platform has FP_NORMAL macro. FP_ZERO: 2 FP_NORMAL: 4 FP_INFINITE: 1 FP_NAN: 0 FP_SUBNORMAL: 3 Testing type float classify.cpp(167): error in "test_main_caller( argc, argv )": check (::pending::fpclassify)(t) == (int)FP_NAN failed [1 != 0] classify.cpp(168): error in "test_main_caller( argc, argv )": check (::pending::fpclassify)(-t) == (int)FP_NAN failed [1 != 0] classify.cpp(173): error in "test_main_caller( argc, argv )": check (::pending::fpclassify)(t) == (int)FP_NAN failed [1 != 0] classify.cpp(174): error in "test_main_caller( argc, argv )": check (::pending::fpclassify)(-t) == (int)FP_NAN failed [1 != 0] Testing type double classify.cpp(167): error in "test_main_caller( argc, argv )": check (::pending::fpclassify)(t) == (int)FP_NAN failed [1 != 0] classify.cpp(168): error in "test_main_caller( argc, argv )": check (::pending::fpclassify)(-t) == (int)FP_NAN failed [1 != 0] classify.cpp(173): error in "test_main_caller( argc, argv )": check (::pending::fpclassify)(t) == (int)FP_NAN failed [1 != 0] classify.cpp(174): error in "test_main_caller( argc, argv )": check (::pending::fpclassify)(-t) == (int)FP_NAN failed [1 != 0] Testing type long double classify.cpp(167): error in "test_main_caller( argc, argv )": check (::pending::fpclassify)(t) == (int)FP_NAN failed [2 != 0] classify.cpp(168): error in "test_main_caller( argc, argv )": check (::pending::fpclassify)(-t) == (int)FP_NAN failed [2 != 0] classify.cpp(173): error in "test_main_caller( argc, argv )": check (::pending::fpclassify)(t) == (int)FP_NAN failed [2 != 0] classify.cpp(174): error in "test_main_caller( argc, argv )": check (::pending::fpclassify)(-t) == (int)FP_NAN failed [2 != 0] Send instant messages to your online friends http://au.messenger.yahoo.com