Peter Shenkin wrote:
> This is a question of history; my recollection is that VAXen were
> around before the IEEE floating-point standard. They had REAL and
> DOUBLE PRECISION, but these differed from the later IEEE definitions.
Correct so far. VAX systems originally (1978) had two floating datatypes -
F_float, a single-precision type (8 bit exponent, 24 bit fraction) and
D_float, a double-precision type (8 bit exponent, 56 bit fraction). Note
that D_float did not have extended range over F_float. These types were
modelled after one of the several PDP-11 floating point formats, which
explains their rather strange looking layout. In 1980, the VAX architecture
was extended to add G_float, an alternative double-precision type (11 bit
exponent, 53 bit fraction) and H_float, a quad-precision type (15 bit
exponent, 113 bit fraction). Various processor models provided hardware
support for differing subsets of the four types. The VAX 9000 was the last
model to provide hardware assist for all four types, subsequent models
offered hardware assist for F, D and G and software emulation for H.
DIGITAL did submit to the IEEE committee a proposal based generally on the
VAX floating format, but Kahan's proposal was chosen instead.
> When IEEE came along, the user could select either VAX or IEEE
> floating point at compile time, but one never got both in the same
> program. There may also have been quad precision, maybe even back
> before IEEE.
>
> This is "as I remember it", but in any event, I wonder what OpenVMS
> systems do now. My guess is that they still support the old VAX
> floating point definitions in some way.
VAX processors have never supported IEEE float. To this day, they continue
to support the VAX float types only. (The VAX Fortran compiler does offer
an I/O conversion feature which allows you to read and write data in IEEE
format, but data is stored in memory (and computed) in VAX format only.)
When Alpha processors were introduced in 1992, the CPU offered native
support for IEEE single and double formats as well as VAX F and G types. A
limited form of support for VAX D_float was available, but rounded to 53
fraction bits. OpenVMS Alpha supported (and still supports) the VAX F and G
types as the default format and optionally (if you ask for it during
compilation) IEEE single and double. UNIX and Windows NT on Alpha support
the IEEE formats only. A quad-precision IEEE-style datatype was added later
- it is supported through software interpretation only (but very good
software!) Even if you were using the VAX F and G datatypes on OpenVMS
Alpha, quad-precision was the IEEE-style layout.
I hope this clears up the history of the VAX floating type.
Steve Lionel mailto:[log in to unmask]
DIGITAL Fortran Development http://www.digital.com/info/slionel.html
Compaq Computer Corporation
110 Spit Brook Road, ZKO2-3/N30
Nashua, NH 03062-2698 "Free advice is worth every cent"
DIGITAL Fortran web site: http://www.digital.com/fortran
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|