Hash float functions - request for help

Hello everyone, The hash functional tests have finally made it into the regression summary, but there are a few failures, mainly caused by the float functions. I've committed a couple of fixes that should improve matters, but I could use some help porting them to other compilers/platforms. I've attached a couple of test files, it would be great if you could run them on the compilers and platforms that you have access to and send me the results. It's quite likely that the second test will fail to compile, just let me know if it does. Send the results to me directly, to avoid noise. You'll need to add the boost include path when compiling the tests. The tests try to discover the versions of the float functions for the different float types - if you know of a differently named function for your platform that would be a great help. I guess the proper way to do this would be to add macros and tests to Boost.Config, but it's too near to the release to do that. thanks for any help, Daniel

Solaris 5.8, SunPRO CC: % ./test_float1 Compiler: Sun compiler version 0x530 Platform: Sun Solaris Library: Rogue Wave standard library version 0x020101 C++ overload tests: ldexp(float): float ldexp(double): double ldexp(long double): long double frexp(float): float frexp(double): double frexp(long double): long double % CC -g -o test_float2 -I$HOME/src/boost-regression/boost test_float2.cpp "test_float2.cpp", line 36: Error: The function "ldexpf" must have a prototype. "test_float2.cpp", line 42: Error: The function "ldexpl" must have a prototype. "test_float2.cpp", line 45: Error: The function "frexpf" must have a prototype. "test_float2.cpp", line 51: Error: The function "frexpl" must have a prototype. Solaris 5.8, gcc 3.4.3: % ./test_float1 Compiler: GNU C++ version 3.4.3 Platform: Sun Solaris Library: GNU libstdc++ version 20041105 C++ overload tests: ldexp(float): float ldexp(double): double ldexp(long double): long double frexp(float): float frexp(double): double frexp(long double): long double % g++ -g -o test_float2 -I$HOME/src/boost-regression/boost test_float2.cpp test_float2.cpp: In function `int main()': test_float2.cpp:36: error: `ldexpf' undeclared (first use this function) test_float2.cpp:36: error: (Each undeclared identifier is reported only once for each function it appears in.) test_float2.cpp:42: error: `ldexpl' undeclared (first use this function) test_float2.cpp:45: error: `frexpf' undeclared (first use this function) test_float2.cpp:51: error: `frexpl' undeclared (first use this function) -- Caleb Epstein caleb dot epstein at gmail dot com

Caleb Epstein wrote:
Solaris 5.8, SunPRO CC:
% ./test_float1 Compiler: Sun compiler version 0x530 Platform: Sun Solaris Library: Rogue Wave standard library version 0x020101 [snip]
Thank you, that's very helpful. The same version of Rogue Wave on Borland has completely different results - it seems this is as dependent on platfrom and compiler as library version. I've also used google to lookup similar info on Tru64, and it seems that only has long double functions on one platform. And gcc varies considerably, even on the same processor. Oh well. Also, thanks to Joaquín. Daniel

Better later than never... All tests were performed on:
uname -a OSF1 ... V5.1 2650 alpha
---
cxx -version V6.5-042 -V Compaq C++ V6.5-042 for Compaq Tru64 UNIX V5.1B (Rev. 2650) Compiler Driver V6.5-042 (cxx) cxx Driver
as -V Alpha Assembler Version 3.07.11 on Tru64 UNIX V5.1B (Rev. 2650) Compiler Driver V6.5-003 (sys) cc Driver
cxx -noimplicit_include -g -model ansi -version V6.5-042 -ieee -I/vol1/boost/boost -lm test_float1.cpp
./a.out Compiler: Dec Alpha True64 60590042 Platform: Generic Unix Library: Rogue Wave standard library version 0x0203
C++ overload tests: ldexp(float): double ldexp(double): double ldexp(long double): double frexp(float): double frexp(double): double frexp(long double): double
cxx -noimplicit_include -g -model ansi -version V6.5-042 -ieee -I/vol1/boost/boost -lm test_float2.cpp
./a.out Compiler: Dec Alpha True64 60590042 Platform: Generic Unix Library: Rogue Wave standard library version 0x0203
C99 function tests: ldexpf(float): float ldexp(double): double ldexpl(long double): long double frexpf(float): float frexp(double): double frexpl(long double): long double ---
/opt/gcc-3.3.4/bin/g++ -mieee -I/vol1/boost/boost -static -lm test_float1.cpp
./a.out Compiler: GNU C++ version 3.3.4 Platform: Generic Unix Library: GNU libstdc++ version 20040531
C++ overload tests: ldexp(float): float ldexp(double): double ldexp(long double): long double frexp(float): float frexp(double): double frexp(long double): long double
/opt/gcc-3.3.4/bin/g++ -mieee -I/vol1/boost/boost -static -lm test_float2.cpp
./a.out Compiler: GNU C++ version 3.3.4 Platform: Generic Unix Library: GNU libstdc++ version 20040531
C99 function tests: ldexpf(float): float ldexp(double): double ldexpl(long double): long double frexpf(float): float frexp(double): double frexpl(long double): long double ---
/opt/gcc-3.4.3/bin/g++ -mieee -I/vol1/boost/boost -static -lm test_float1.cpp
./a.out Compiler: GNU C++ version 3.4.3 Platform: Generic Unix Library: GNU libstdc++ version 20041105
C++ overload tests: ldexp(float): float ldexp(double): double ldexp(long double): long double frexp(float): float frexp(double): double frexp(long double): long double
/opt/gcc-3.4.3/bin/g++ -mieee -I/vol1/boost/boost -static -lm test_float2.cpp
./a.out Compiler: GNU C++ version 3.4.3 Platform: Generic Unix Library: GNU libstdc++ version 20041105
C99 function tests: ldexpf(float): float ldexp(double): double ldexpl(long double): long double frexpf(float): float frexp(double): double frexpl(long double): long double --- HTH, Markus
participants (3)
-
Caleb Epstein
-
Daniel James
-
Markus Schöpflin