Fortran 90 on the SGI 2000
The present compiler is MIPSpro Compiler Version 7.3.1.1m. Compiler
options are obtained with man f90. You compile with f90.
If you use f90 -r8 all single precision variables become
double precision, and if you use f90 -d16 all double precision
variables become quad precision. It is also possible to use the combined
f90 -r8 -d16.
System parameters for the SGI 2000 using the SGI Fortran 90 compiler.
Note that SGI uses the the number of bytes for the KIND value.
The notations halfword, quad, int15, int31, and int63
are my own.
Compare with the Cray C90 table,
the Cray T3E table, the Digital
Alpha table, and the NAG table.
INTEGER default
KIND number = 4
digits = 31
radix = 2
range = 9
huge = 2147483647
bit_size = 32
INTEGER int15 int31 int63
KIND number = 2 4 8
digits = 15 31 63
radix = 2 2 2
range = 4 9 18
huge = 32767 2147483647 9223372036854775807
bit_size = 16 32 64
LOGICAL default byte halfword word double
KIND number = 4 1 2 4 8
REAL single double quad default
KIND number = 4 8 16 4
digits = 24 53 107 24
maxexponent = 128 1024 1023 128
minexponent = -125 -1021 -915 -125
precision = 6 15 31 6
radix = 2 2 2 2
range = 37 307 275 37
epsilon = 0.11920929E-06 0.22204460E-15 0.12325952E-31 0.11920929E-06
tiny = 0.11754944E-37 0.22250739-307 0.18051944-275 0.11754944E-37
huge = 0.34028235E+39 0.17976931+309 0.89884657+308 0.34028235E+39
COMPLEX single double quad
KIND number = 4 8 16
precision = 6 15 31
range = 37 307 275
Note. According to the SGI man models the value of
minexponent in quad precision should be -967 instead
of -915.
The small exponent range in quad precision is astonishing! Working
with the methods from the introductory course in Numerical Methods,
and with Fortran 90 but avoiding the intrinsics, I find that the
exponent parameters maxexponent, minexponent,
and range seem to be the same in quad precision as in double
precision, but we do not get full quad precision outside the parameters
above. The above table is therefore verified!
The SGI quad precision is very different from the Digital
Alpha quad precision, which has a very large range. The reason
is that with SGI the quad variables are represented as the sum or
difference of two doubles, normalized so that the smaller double
is <= 0.5 units in the last position of the larger.
Back to Appendix 6
Last modified: 29 June 2000
boein@nsc.liu.se |