Cray CF77 and CF90

Fortran 90 properties already in CF77.

Cray has a full Fortran 90 system available, but many of the new commands in Fortran 90 were already available in Cray Fortran 77, since Cray Research has been active in the development of the new standard. The array concepts are almost entirely included, since this area is close to Cray's general interest in vectorization and parallelization. See articles in CRAY CHANNELS, Fall 1992, (Vol. 14, No. 4), pp. 18-21.

For the present CF77 version 6.0 the following is already included:

Basic properties:

Control statements:

Specifications:

File operations.

Intrinsic functions:

Arrays:

Additional concepts:

You have to be careful with both recursion and pointers on the Cray. Pointers in Fortran 90 and Cray Fortran are discussed in the article "Fortran 90 Pointers vs. "Cray" Pointers" by Jeanne Martin in the Fortran Forum, Vol. 11, No. 2, pp. 17 - 23, June 1992.

Removed extensions:

Cray F90

Further information is available via Cray F90 Programming Environment.

I here list the most important switches to the compilation command for the Cray CF 90 2.0 Programming Environment.

   -c               compilation only (no linking)
   -C               creates an information file
   -d		    disables compiling options
   -e		    enables compiling options
   -f fixed         the old form of the source code
   -f free          the new form of the source code
   -g               generates information for debugging
   -G               more general debugging
   -i               decides on integer length
   -I incldir       Fortran 90 looks automatically for 
		    files to INCLUDE in the present directory, 
		    in directories in the I-list and in 
		    /usr/local/lib/f90 
   -l               linking of a library
   -Ldir            Add dir to the list of directories 
		    for library routines
   -m 		    specifies the level for error messages
   -M 		    used to suppress error messages
   -N		    specifies 72 or 80 colums for the fixed form source code
		    For free source code 132 is always valid
   -o               naming the output file
   -O		    optimization level
   -p pathname      Fortran 90 looks automatically for 
		    modules in the present directory, 
		    in directories in the I-list and in 
		    /usr/local/lib/f90
   -r               produces a compilation list 
 
   -S               produces source code in assembler
   -v               give comment about how the compilation 
		    is proceeding
   -V               gives the compiler's version number
   -Wl              sens information to the linker segldr
It can be mentioned here that Cray CF90 permits the use of REAL*8 instead of REAL and REAL*16 instead of DOUBLE PRECISION . The use of these notations should be avoided.

System parameters on the Cray C90 using CF90.

System parameters on the Cray C90, using the Cray Fortran 90 compiler are given here. Compare with the NAG table. Note that Cray uses the number of bytes for the KIND value. Cray also permits the values 1, 2 and 4 for logical variables (with the same result as the default value 8), the values 1, 2, 4, 6 and 8 for integers and the values 4, 8 and 16 for real and complex variables. The notation half for the REAL case with KIND = 4 is my own, and so are also the notations int7, int15, int31, int46 and int63.

Remark. Our tests indicate that half is not implemented completely on the Cray Y-MP, in reality you get variables of the usual precision (called single below). Information from Cray Research indicate that half is introduced in order to obtain a certain compatibility with Cray T3D, on which system that precision (half) really exists.

WARNING: I will have to double check this table at each revision of the compiler! The parameters are being changed by Cray. The present system is Cray F90 Version 1.0 (1.56 or 1.70), CRAY CF 90 Version 1.0.1.0 (779005) or 1.0.2.0 (047431). The parameters below are also valid for Cray CF90 Version 2.0.0.0.

See also the numerical inquiry functons in Appendix 5.8.

In Cray CF90 Version 3.0.1.0 the default for integers has changed from KIND = 6 to KIND = 8, and the KIND = 6 with int46 has been completely removed.

LOGICAL              Default
  KIND number =            8
 
INTEGER               (Default)          int7          int15
 KIND number =              (6)             1              2
      digits =              46              7             15
       radix =               2              2              2
       range =              13              2              4
        huge =  70368744177663            127          32767
    bit_size =              46              8             16
 
INTEGER                  int31         (int46)              int64
 KIND number =               4             (6)                  8
      digits =              31             46                  63
       radix =               2              2                   2
       range =               9             13                  18
        huge =      2147483647 70368744177663 9223372036854775807
    bit_size =              32             46                  64
 
REAL                        half  Default,single          double
  KIND number =                4               8              16
       digits =               24              47              96
  maxexponent =             8189            8189            8190
  minexponent =            -8188           -8188           -8189
    precision =                6              13              28
        radix =                2               2               2
        range =             2465            2465            2465
      epsilon =   0.11920929E-06   0.14210855-13  0.25243549E-28
         tiny =  0.73344155-2465 0.73344155-2465 0.73344155-2465  
         huge =  0.13634352+2466 0.13634352+2466 0.13634352+2466 
  
COMPLEX                    half  Default,single         double
  KIND number =               4               8             16
    precision =               6              13             28
        range =            2465            2465           2465

System parameters on the Cray T3E using CF90.

System parameters on the Cray T3E, using the Cray Fortran 90 compiler are given here. Compare with the Cray C90 table, the Digital Alpha table, and the NAG table. Note that Cray uses the number of bytes for the KIND value. Cray also permits the values 1, 2, and 4 for logical variables in addition to the default value 8, the values 2, 4, and 8 for integers and only the values 4 and 8 for real and complex variables. The notations int15, int31, and int63 are my own.

INTEGER                     default
 KIND number =                    8
      digits =                   63
       radix =                    2
       range =                   18
        huge =  9223372036854775807
    bit_size =                   64
  
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
  KIND number =            8           1           2
LOGICAL              Default        word      double
  KIND number =            8           4           8

REAL                      single          double         default
  KIND number =                4               8               8
       digits =               24              53              53
  maxexponent =              128            1024            1024
  minexponent =             -125           -1021           -1021
    precision =                6              15              15
        radix =                2               2               2
        range =               37             307             307
      epsilon =   0.11920929E-06  0.22204460E-15  0.22204460E-15
         tiny =   0.11754944E-37  0.22250739-307  0.22250739-307
         huge =   0.34028235E+39  0.17976931+309  0.17976931+309
  
COMPLEX                  single         double
  KIND number =               4              8
    precision =               6             15
        range =              37            307


Information for local Cray users

NSC has made the Cray Fortran 90 manuals available on a special Web-server.

Back to Appendix 6


Last modified: 30 April 1998
boein@nsc.liu.se