Boost logo

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