|
Boost : |
From: Boris Gubenko (Boris.Gubenko_at_[hidden])
Date: 2006-12-07 16:46:10
Johan Rede wrote:
> Try both with and without /float=ieee/ieee=denorm,
> and let me know the results.
>
/float=ieee is necessary on AlphaVMS because on this platform, the
default floating point mode is G_FLOAT: one of so called VAX FP modes.
With iVMS, we bit the bullet and made IEEE the default, although it
also supports VAX FP modes.
/ieee=denorm is equivalent of -ieee on Tru64 (this is the default on iVMS). It
enables full support of IEEE 754-1985. /ieee=fast is equivalent of compiling on
Tru64 without -ieee (this is the default on AlphaVMS).
The results below are in the following order:
AlphaVMS
test
with full IEEE support
in fast IEEE mode
inspect
with full IEEE support
in fast IEEE mode
iVMS
test
with full IEEE support
in fast IEEE mode
inspect
with full IEEE support
in fast IEEE mode
I also attached a build.com script that I used, just in case.
As far as I can see, the only difference between the two platforms
is -n.min/2 in fast IEEE mode for float and double:
Alpha
------
float: -n.min/2 00 00 00 00
double: -n.min/2 00 00 00 00 00 00 00 00
IPF
--- float: -n.min/2 80 00 00 00 double: -n.min/2 80 00 00 00 00 00 00 00 Here is the results: AlphaVMS ======== CXXC::_1> @build test HP C++ V7.1-018 for OpenVMS Alpha V7.3-2 AlphaServer 4100 5/533 4MB *** full IEEE support (as with -ieee on Tru64) fp_traits<float>::type is specialized fp_traits<double>::type is generic fp_traits<long double>::type is generic sizeof(long double) = 16 Testing float Testing double Testing long double *** fast IEEE mode (as without -ieee on Tru64) fp_traits<float>::type is specialized fp_traits<double>::type is generic fp_traits<long double>::type is generic sizeof(long double) = 16 Testing float Testing double Testing long double CXXC::_1> CXXC::_1> @build inspect HP C++ V7.1-018 for OpenVMS Alpha V7.3-2 AlphaServer 4100 5/533 4MB *** full IEEE support (as with -ieee on Tru64) This platform is little-endian. BOOST_LITTTLE_ENDIAN is defined. ---------- float -------------------- 0 00 00 00 00 sn.min 00 00 00 01 -sn.min 80 00 00 01 n.min/256 00 00 80 00 n.min/2 00 40 00 00 -n.min/2 80 40 00 00 n.min 00 80 00 00 1 3f 80 00 00 3/2 3f c0 00 00 4/3 3f aa aa ab max 7f 7f ff ff inf 7f 80 00 00 q.nan ff c0 00 00 s.nan 7f 85 55 55 ---------- double ------------------- 0 00 00 00 00 00 00 00 00 sn.min 00 00 00 00 00 00 00 01 -sn.min 80 00 00 00 00 00 00 01 n.min/256 00 00 10 00 00 00 00 00 n.min/2 00 08 00 00 00 00 00 00 -n.min/2 80 08 00 00 00 00 00 00 n.min 00 10 00 00 00 00 00 00 1 3f f0 00 00 00 00 00 00 3/2 3f f8 00 00 00 00 00 00 4/3 3f f5 55 55 55 55 55 55 max 7f ef ff ff ff ff ff ff inf 7f f0 00 00 00 00 00 00 q.nan ff f8 00 00 00 00 00 00 s.nan 7f f5 55 55 55 55 55 55 ---------- long double -------------- 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 sn.min 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 -sn.min 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 n.min/256 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 n.min/2 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 -n.min/2 80 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 n.min 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1 3f ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3/2 3f ff 80 00 00 00 00 00 00 00 00 00 00 00 00 00 4/3 3f ff 55 55 55 55 55 55 55 55 55 55 55 55 55 55 max 7f fe ff ff ff ff ff ff ff ff ff ff ff ff ff ff inf 7f ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 q.nan ff ff c0 00 00 00 00 00 00 00 00 00 00 00 00 00 s.nan 7f ff 55 55 55 55 55 55 55 55 55 55 55 55 55 55 *** fast IEEE mode (as without -ieee on Tru64) This platform is little-endian. BOOST_LITTTLE_ENDIAN is defined. ---------- float -------------------- 0 00 00 00 00 sn.min -- -- -- -- -sn.min -- -- -- -- n.min/256 00 00 00 00 n.min/2 00 00 00 00 -n.min/2 00 00 00 00 n.min 00 80 00 00 1 3f 80 00 00 3/2 3f c0 00 00 4/3 3f aa aa ab max 7f 7f ff ff inf -- -- -- -- q.nan -- -- -- -- s.nan -- -- -- -- ---------- double ------------------- 0 00 00 00 00 00 00 00 00 sn.min -- -- -- -- -- -- -- -- -sn.min -- -- -- -- -- -- -- -- n.min/256 00 00 00 00 00 00 00 00 n.min/2 00 00 00 00 00 00 00 00 -n.min/2 00 00 00 00 00 00 00 00 n.min 00 10 00 00 00 00 00 00 1 3f f0 00 00 00 00 00 00 3/2 3f f8 00 00 00 00 00 00 4/3 3f f5 55 55 55 55 55 55 max 7f ef ff ff ff ff ff ff inf -- -- -- -- -- -- -- -- q.nan -- -- -- -- -- -- -- -- s.nan -- -- -- -- -- -- -- -- ---------- long double -------------- 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 sn.min -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -sn.min -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- n.min/256 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 n.min/2 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 -n.min/2 80 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 n.min 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1 3f ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3/2 3f ff 80 00 00 00 00 00 00 00 00 00 00 00 00 00 4/3 3f ff 55 55 55 55 55 55 55 55 55 55 55 55 55 55 max 7f fe ff ff ff ff ff ff ff ff ff ff ff ff ff ff inf -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- q.nan -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- s.nan -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- CXXC::_1> iVMS ==== ICXX::_1> @build test HP C++ V7.2-021 on OpenVMS IA64 V8.3 HP rx2600 (1.30GHz/3.0MB) *** full IEEE support (as with -ieee on Tru64) fp_traits<float>::type is specialized fp_traits<double>::type is generic fp_traits<long double>::type is generic sizeof(long double) = 16 Testing float Testing double Testing long double *** fast IEEE mode (as without -ieee on Tru64) fp_traits<float>::type is specialized fp_traits<double>::type is generic fp_traits<long double>::type is generic sizeof(long double) = 16 Testing float Testing double Testing long double ICXX::_1> ICXX::_1> @build inspect HP C++ V7.2-021 on OpenVMS IA64 V8.3 HP rx2600 (1.30GHz/3.0MB) *** full IEEE support (as with -ieee on Tru64) This platform is little-endian. BOOST_LITTTLE_ENDIAN is defined. ---------- float -------------------- 0 00 00 00 00 sn.min 00 00 00 01 -sn.min 80 00 00 01 n.min/256 00 00 80 00 n.min/2 00 40 00 00 -n.min/2 80 40 00 00 n.min 00 80 00 00 1 3f 80 00 00 3/2 3f c0 00 00 4/3 3f aa aa ab max 7f 7f ff ff inf 7f 80 00 00 q.nan ff c0 00 00 s.nan 7f 85 55 55 ---------- double ------------------- 0 00 00 00 00 00 00 00 00 sn.min 00 00 00 00 00 00 00 01 -sn.min 80 00 00 00 00 00 00 01 n.min/256 00 00 10 00 00 00 00 00 n.min/2 00 08 00 00 00 00 00 00 -n.min/2 80 08 00 00 00 00 00 00 n.min 00 10 00 00 00 00 00 00 1 3f f0 00 00 00 00 00 00 3/2 3f f8 00 00 00 00 00 00 4/3 3f f5 55 55 55 55 55 55 max 7f ef ff ff ff ff ff ff inf 7f f0 00 00 00 00 00 00 q.nan ff f8 00 00 00 00 00 00 s.nan 7f f5 55 55 55 55 55 55 ---------- long double -------------- 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 sn.min 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 -sn.min 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 n.min/256 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 n.min/2 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 -n.min/2 80 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 n.min 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1 3f ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3/2 3f ff 80 00 00 00 00 00 00 00 00 00 00 00 00 00 4/3 3f ff 55 55 55 55 55 55 55 55 55 55 55 55 55 55 max 7f fe ff ff ff ff ff ff ff ff ff ff ff ff ff ff inf 7f ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 q.nan ff ff c0 00 00 00 00 00 00 00 00 00 00 00 00 00 s.nan 7f ff 55 55 55 55 55 55 55 55 55 55 55 55 55 55 *** fast IEEE mode (as without -ieee on Tru64) This platform is little-endian. BOOST_LITTTLE_ENDIAN is defined. ---------- float -------------------- 0 00 00 00 00 sn.min -- -- -- -- -sn.min -- -- -- -- n.min/256 00 00 00 00 n.min/2 00 00 00 00 -n.min/2 80 00 00 00 n.min 00 80 00 00 1 3f 80 00 00 3/2 3f c0 00 00 4/3 3f aa aa ab max 7f 7f ff ff inf -- -- -- -- q.nan -- -- -- -- s.nan -- -- -- -- ---------- double ------------------- 0 00 00 00 00 00 00 00 00 sn.min -- -- -- -- -- -- -- -- -sn.min -- -- -- -- -- -- -- -- n.min/256 00 00 00 00 00 00 00 00 n.min/2 00 00 00 00 00 00 00 00 -n.min/2 80 00 00 00 00 00 00 00 n.min 00 10 00 00 00 00 00 00 1 3f f0 00 00 00 00 00 00 3/2 3f f8 00 00 00 00 00 00 4/3 3f f5 55 55 55 55 55 55 max 7f ef ff ff ff ff ff ff inf -- -- -- -- -- -- -- -- q.nan -- -- -- -- -- -- -- -- s.nan -- -- -- -- -- -- -- -- ---------- long double -------------- 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 sn.min -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -sn.min -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- n.min/256 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 n.min/2 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 -n.min/2 80 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 n.min 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1 3f ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3/2 3f ff 80 00 00 00 00 00 00 00 00 00 00 00 00 00 4/3 3f ff 55 55 55 55 55 55 55 55 55 55 55 55 55 55 max 7f fe ff ff ff ff ff ff ff ff ff ff ff ff ff ff inf -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- q.nan -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- s.nan -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ICXX::_1> build.com --------- $ Say :== write sys$output $ if p1 .eqs. "" $ then $ Say "usage: @", f$parse(f$envir("procedure"),,,"name"), " module-name" $ exit $ endif $! $ cxx/ver $ Say f$getsyi("hw_name") $ Say "" $! $ cxx_command="cxx/float=ieee/stand=strict_ansi/nopure_cname" + - "/include=(""../"",""BOOST_BUILD_PATH/boost/"")" + - "/warning=disable=NOSTDLONGLONG" $! $ Say "*** full IEEE support (as with -ieee on Tru64)" $ pipe 'cxx_command'/ieee=denorm 'p1'.cpp ; cxxl 'p1' ; run 'p1' $ Say "*** fast IEEE mode (as without -ieee on Tru64)" $ pipe 'cxx_command'/ieee=fast 'p1'.cpp ; cxxl 'p1' ; run 'p1'
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk