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