Fortran 90 on the SGI 2000

Compilation on the SGI 2000 using Fortran 90.

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 on the SGI 2000 using Fortran 90.

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