
Johan Rede wrote:
Your processor is a bit odd! It does not have denorms, inifinity and NaN, except that long double does have denorms. (Look at min/2 and min/256 in the output from the inspect tool.)
As Markus pointed out, it is not the processor itself: one needs to compile -ieee in order to get full support of ANSI/IEEE Standard 754-1985. For your library, compiling with cxx on Tru64 without -ieee makes little sense. Likewise, on AlphaVMS, it should be compiled /float=ieee/ieee=denorm. On iVMS, i.e. VMS on ia64, the full support for IEEE features is on by default.
std::numeric_limits incorrectly states that long double does not have denorms. Fortunately my library does not use std::numeric_limits.
Again, you need to compile with -ieee -- see below. Relatively recently, I fixed a problem with denorm_min() for std::numeric_limits<long double> for all three platforms: Tru64, AlphaVMS and iVMS. I'm not sure if the fix is in the RW library Markus is using, but if your library does not use std::numeric_limits, it is not affected by this bug.
I think now we are done. The current version (v.20) may very well become the final version.
Where can I download your library and the inspect tool from? I'd like to try it on AlphaVMS and iVMS. Thanks, Boris x.cxx ----- #include <limits> #include <stdio.h> main() { printf("%d\n", std::numeric_limits<long double>().has_denorm); } cxxosf.zko.hp.com> cxx -V Compaq C++ V7.1-006 for Compaq Tru64 UNIX V5.1B (Rev. 2650) Compiler Driver V7.1-006 (cxx) cxx Driver cxxosf.zko.hp.com> cxx -ieee x.cxx && a.out 1 cxxosf.zko.hp.com> cxx x.cxx && a.out 0 cxxosf.zko.hp.com> CXXC::_3> cxx/ver HP C++ X7.3-007 for OpenVMS Alpha V7.3-2 CXXC::_3> pipe cxx/float=ieee/ieee=denorm x.cxx ; cxxl x.obj ; run x.exe 1 CXXC::_3> ICXX::_2> cxx/ver HP C++ V7.2-021 on OpenVMS IA64 V8.3 ICXX::_2> pipe cxx x.cxx ; cxxl x.obj ; run x.exe 1 ICXX::_2> ----- Original Message ----- From: "Johan RĂ¥de" <rade@maths.lth.se> To: <boost@lists.boost.org> Sent: Wednesday, December 06, 2006 7:46 AM Subject: Re: [boost] Optimized portable isnan, isfinite, fpclassify etc
Markus,
Now all tests have passed, even without -ieee.
Your processor is a bit odd! It does not have denorms, inifinity and NaN, except that long double does have denorms. (Look at min/2 and min/256 in the output from the inspect tool.)
std::numeric_limits incorrectly states that long double does not have denorms. Fortunately my library does not use std::numeric_limits.
I think now we are done. The current version (v.20) may very well become the final version.
Thanks for the help.
--Johan
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost