SlideShare a Scribd company logo
1




Fortran 90 Overview

J.E. Akin, Copyright 1998




    This overview of Fortran 90 (F90) features is presented as a series of tables that illustrate the syntax
and abilities of F90. Frequently comparisons are made to similar features in the C++ and F77 languages
and to the Matlab environment.
    These tables show that F90 has significant improvements over F77 and matches or exceeds newer
software capabilities found in C++ and Matlab for dynamic memory management, user defined data
structures, matrix operations, operator definition and overloading, intrinsics for vector and parallel pro-
cessors and the basic requirements for object-oriented programming.
    They are intended to serve as a condensed quick reference guide for programming in F90 and for
understanding programs developed by others.
List of Tables

 1    Comment syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .        .   .   .   .   .   .   .    4
 2    Intrinsic data types of variables . . . . . . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .    4
 3    Arithmetic operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .    4
 4    Relational operators (arithmetic and logical) . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   .    5
 5    Precedence pecking order . . . . . . . . . . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .    5
 6    Colon Operator Syntax and its Applications . . . . . . . . . . . . . . . . .        .   .   .   .   .   .   .    5
 7    Mathematical functions . . . . . . . . . . . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .    6
 8    Flow Control Statements . . . . . . . . . . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .    7
 9    Basic loop constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   .    7
 10   IF Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   .    8
 11   Nested IF Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .    8
 12   Logical IF-ELSE Constructs . . . . . . . . . . . . . . . . . . . . . . . . .        .   .   .   .   .   .   .    8
 13   Logical IF-ELSE-IF Constructs . . . . . . . . . . . . . . . . . . . . . . .         .   .   .   .   .   .   .    8
 14   Case Selection Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   .    9
 15   F90 Optional Logic Block Names . . . . . . . . . . . . . . . . . . . . . .          .   .   .   .   .   .   .    9
 16   GO TO Break-out of Nested Loops . . . . . . . . . . . . . . . . . . . . . .         .   .   .   .   .   .   .    9
 17   Skip a Single Loop Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   10
 18   Abort a Single Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   10
 19   F90 DOs Named for Control . . . . . . . . . . . . . . . . . . . . . . . . .         .   .   .   .   .   .   .   10
 20   Looping While a Condition is True . . . . . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   11
 21   Function definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   11
 22   Arguments and return values of subprograms . . . . . . . . . . . . . . . .          .   .   .   .   .   .   .   12
 23   Defining and referring to global variables . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   12
 24   Bit Function Intrinsics . . . . . . . . . . . . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   12
 25   The ACSII Character Set . . . . . . . . . . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   13
 26   F90 Character Functions . . . . . . . . . . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   13
 27   How to type non-printing characters . . . . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   13
 28   Referencing Structure Components . . . . . . . . . . . . . . . . . . . . . .        .   .   .   .   .   .   .   14
 29   Defining New Types of Data Structure . . . . . . . . . . . . . . . . . . . .         .   .   .   .   .   .   .   14
 30   Nested Data Structure Definitions . . . . . . . . . . . . . . . . . . . . . .        .   .   .   .   .   .   .   14
 31   Declaring, initializing, and assigning components of user-defined datatypes          .   .   .   .   .   .   .   14
 32   F90 Derived Type Component Interpretation . . . . . . . . . . . . . . . .           .   .   .   .   .   .   .   15
 33   Definition of pointers and accessing their targets . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   15
 34   Nullifing a Pointer to Break Association with Target . . . . . . . . . . . . .       .   .   .   .   .   .   .   15
 35   Special Array Characters . . . . . . . . . . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   15
 36   Array Operations in Programming Constructs . . . . . . . . . . . . . . . .          .   .   .   .   .   .   .   16
 37   Equivalent Fortran90 and M ATLAB Intrinsic Functions . . . . . . . . . . .          .   .   .   .   .   .   .   17
 38   Truncating Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . .        .   .   .   .   .   .   .   18
 39   F90 WHERE Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . .        .   .   .   .   .   .   .   18
 40   F90 Array Operators with Logic Mask Control . . . . . . . . . . . . . . .           .   .   .   .   .   .   .   19
 41   Array initialization constructs . . . . . . . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   20
 42   Array initialization constructs . . . . . . . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   20

                                                  3
LIST OF TABLES                                                                                                                            3

  43   Elementary matrix computational routines . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
  44   Dynamic allocation of arrays and pointers . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21
  45   Automatic memory management of local scope arrays .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21
  46   F90 Single Inheritance Form . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21
  47   F90 Selective Single Inheritance Form . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   22
  48   F90 Single Inheritance Form, with Local Renaming . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   22
  49   F90 Multiple Selective Inheritance with Renaming . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   22
4                                                                                                          LIST OF TABLES



                          Language                           Syntax                          Location
                          M ATLAB          % comment (to end of line)                        anywhere
                          C                /*comment*/                                       anywhere
                          F90              ! comment (to end of line)                        anywhere
                          F77              * comment (to end of line)                        column 1


                                                Table 1: Comment syntax.




        Storage           M ATLAB a           C++               F90                        F77
    byte                                   char          character::            character
    integer                                int           integer::              integer
    single precision                       float         real::                 real
    double precision                       double        real*8::               double precision
                                                    b
    complex                                              complex::              complex
    Boolean                                bool          logical::              logical
    argument                                             parameter::            parameter
    pointer                                *             pointer::
    structure                              struct        type::
   a M ATLAB 4 requires no variable type declaration; the only two distinct types in M ATLAB are strings and reals (which include

complex). Booleans are just 0s and 1s treated as reals. M ATLAB 5 allows the user to select more types.
   b There is no specific data type for a complex variable in C++; they must be created by the programmer.


                                       Table 2: Intrinsic data types of variables.




                                   Description               M ATLAB a        C++       Fortranb
                              addition                       +                +         +
                              subtractionc                   -                -         -
                              multiplication                 * and .*         *         *
                              division                       / and ./         /         /
                              exponentiation                 ˆ and .ˆ         powd      **
                              remainder                                       %
                              increment                                       ++
                              decrement                                       --
                              parentheses (expres-           ()               ()        ()
                              sion grouping)
    a When doing arithmetic operations on matrices in M ATLAB , a period (‘.’) must be put before the operator if scalar arithmetic

is desired. Otherwise, M ATLAB assumes matrix operations; figure out the difference between ‘*’ and ‘.*’. Note that since matrix
and scalar addition coincide, no ‘.+’ operator exists (same holds for subtraction).
    b Fortran 90 allows the user to change operators and to define new operator symbols.
    c In all languages the minus sign is used for negation (i.e., changing sign).
                                                               ¨¦¤¢ 
                                                              § ¥ £ ¡
    d In C++ the exponentiation is calculated by function pow           .

                                              Table 3: Arithmetic operators.
LIST OF TABLES                                                                                                            5

                             Description                M ATLAB         C++         F90          F77
                               Equal to                    ==           ==          ==          .EQ.
                             Not equal to                  ˜=           !=          /=          .NE.
                              Less than                     <            <           <          .LT.
                             Less or equal                 <=           <=          <=          .LE.
                             Greater than                   >            >           >          .GT.
                           Greater or equal                >=           >=          >=          .GE.
                             Logical NOT                    ˜            !        .NOT.         .NOT.
                            Logical AND                     &           &&       .AND.          .AND.
                         Logical inclusive OR              !            ||         .OR.         .OR.
                         Logical exclusive OR              xor                   .XOR.         .XOR.
                          Logical equivalent                ==           ==      .EQV.         .EQV.
                         Logical not equivalent             ˜=           !=      .NEQV.        .NEQV.


                               Table 4: Relational operators (arithmetic and logical).

                    M ATLAB
                                          C++ Operators            F90 Operatorsa            F77 Operators
                    Operators
                ()                       () [] -> .                ()                       ()
                + -                      !     ++ -- +             **                       **
                                         - * & (type)
                                         sizeof
                * /                      * / %                     * /                      * /
                + -b                     + -b                      + -b                     + -b
                < <= > >=                << >>                     //                       //
                == ˜=                    < <= > =>                 == /= < <= >             .EQ. .NE.
                                                                   >=                       .LT. .LE.
                                                                                            .GT. .GE.
                ˜                        == !=                     .NOT.                    .NOT.
                &                        &&                        .AND.                    .AND.
                |                        ||                        .OR.                     .OR.
                =                        |                         .EQV. .NEQV.             .EQV. .NEQV.
                                         ?:
                                         = += -= *= /=
                                         %= &= ˆ= |=
                                         <<= >>=
                                         ,
  a User-defined    unary (binary) operators have the highest (lowest) precedence in F90.
  b These   are binary operators representing addition and subtraction. Unary operators + and - have higher precedence.

                                           Table 5: Precedence pecking order.

                                       B = Beginning, E = Ending, I = Increment

       Syntax             F90        M ATLAB                            Use                         F90      M ATLAB
      Default            B:E:I         B:I:E               Array subscript ranges                   yes         yes
                                                           Character positions in a string          yes         yes
       




            B             B:            B:
                                                           Loop control                              no         yes
      ¡




            E             :E            :E
      Full range           :             :                 Array element generation                  no         yes


                               Table 6: Colon Operator Syntax and its Applications.
6                                                                                                                                                LIST OF TABLES




         Description                      M ATLAB                               C++                            F90                            F77
    exponential                          exp(x)                    exp(x)                          exp(x)                                exp(x)
    natural log                          log(x)                    log(x)                          log(x)                                log(x)
    base 10 log                          log10(x)                  log10(x)                        log10(x)                              log10(x)
    square root                          sqrt(x)                   sqrt(x)                         sqrt(x)                               sqrt(x)
    raise to power ( )       ¡ ¢         x.ˆr                      pow(x,r)                        x**r                                  x**r
    absolute value                       abs(x)                    fabs(x)                         abs(x)                                abs(x)
    smallest integer x           £       ceil(x)                   ceil(x)                         ceiling(x)
    largest integer x    ¤               floor(x)                  floor(x)                        floor(x)
    division remainder                   rem(x,y)                  fmod(x,y)                       mod(x,y)                  ¥           mod(x,y)
    modulo                                                                                         modulo(x,y)a
    complex conjugate                    conj(z)                                                   conjg(z)                              conjg(z)
    imaginary part                       imag(z)                                                   imag(z)                               aimag(z)
    drop fraction                        fix(x)                                                    aint(x)                               aint(x)
    round number                         round(x)                                                  nint(x)                               nint(x)
    cosine                               cos(x)                    cos(x)                          cos(x)                                cos(x)
    sine                                 sin(x)                    sin(x)                          sin(x)                                sin(x)
    tangent                              tan(x)                    tan(x)                          tan(x)                                tan(x)
    arc cosine                           acos(x)                   acos(x)                         acos(x)                               acos(x)
    arc sine                             asin(x)                   asin(x)                         asin(x)                               asin(x)
    arc tangent                          atan(x)                   atan(x)                         atan(x)                               atan(x)
    arc tangentb                         atan2(x,y)                atan2(x,y)                      atan2(x,y)                            atan2(x,y)
    hyperbolic cosine                    cosh(x)                   cosh(x)                         cosh(x)                               cosh(x)
    hyperbolic sine                      sinh(x)                   sinh(x)                         sinh(x)                               sinh(x)
    hyperbolic tangent                   tanh(x)                   tanh(x)                         tanh(x)                               tanh(x)
    hyperbolic arc cosine                acosh(x)
    hyperbolic arc sine                  asinh(x)
    hyperbolic arctan                    atanh(x)
     a Differ
                       ©§¡
                      ¨ ¦
                for          .                                                    ¡   ¥                            £
     b atan2(x,y)    is used to calculate the arc tangent of                                in the range                   . The one-argument function atan(x)
                                     ¡                   £         
computes the arc tangent of in the range              .                
                                                Table 7: Mathematical functions.
LIST OF TABLES                                                                                               7




            Description                      C++                       F90            F77         M ATLAB
 Conditionally execute statements             if                        if             if           if
                                              ¡ ¢                     end if         end if         end

 Loop a specific number of times          for k=1:n                   do k=1,n      do # k=1,n    for k=1:n
                                              ¡ ¢                     end do       # continue       end

 Loop an indefinite number of times          while                    do while          —           while
                                              ¡ ¢                     end do           —            end

 Terminate and exit loop                    break                      exit          go to         break

 Skip a cycle of loop                     continue                    cycle          go to           —
 Display message and abort                 error()                     stop          stop          error

 Return to invoking function               return                     return        return         return

 Conditional array action                     —                       where            —             if

 Conditional alternate statements           else                       else           else          else
                                           else if                    elseif         elseif        elseif

 Conditional array alternatives               —                      elsewhere         —            else
                                              —                         —              —           elseif

 Conditional case selections             switch
                                                     ¡ ¢            select case        if           if
                                                                     end select      end if         end


                                    Table 8: Flow Control Statements.




      Loop                     M ATLAB                                  C++                      Fortran
 Indexed loop           for index=matrix             for (init;test;inc)
                                                                                        do index=b,e,i
                          statements                                                      statements
                          end                               statements
                                                            ¡                             end do


 Pre-test loop          while test                   while (test)
                                                                                        do while (test)
                          statements                   statements
                                                            ¡                              statements
                          end                                                              end do

 Post-test loop                                      do
                                                                                        do
                                                            statements
                                                            ¡                                 statements
                                                              while (test)                    if (test) exit
                                                                                              end do



                                      Table 9: Basic loop constructs.
8                                                                                   LIST OF TABLES

        M ATLAB                           Fortran                                 C++
    if l expression     IF (l expression) THEN                            if (l expression)
                                                                               
     true group          true group
    end                 END IF                                                true group;
                                                                              ¡
                        IF (l expression) true statement                  if (l expression)
                                                                           true state-
                                                                          ment;


Table 10: IF Constructs. The quantity l expression means a logical expression having a value that
is either TRUE of FALSE. The term true statement or true group means that the statement or group
of statements, respectively, are executed if the conditional in the if statement evaluates to TRUE.

          M ATLAB                          Fortran                                C++
    if l expression1         IF (l expression1) THEN               if (l expression1)
                                                                       
     true group A             true group A
     if l expression2         IF (l expression2) THEN                 true group A
       true group B             true group B                          if (l expression2)
                                                                           
     end                      END IF
     true group C             true group C                                true group B
                                                                          ¡
    end                      END IF
    statement group D        statement group D                        true group C
                                                                      ¡
                                                                   statement group D


                                 Table 11: Nested IF Constructs.

          M ATLAB                          Fortran                                C++
    if l expression          IF (l expression) THEN                if (l expression)
                                                                       
     true group A             true group A
    else                     ELSE                                     true group A
                                                                      ¡
     false group B            false group B
    end                      END IF                                else
                                                                       
                                                                      false group B
                                                                      ¡

                              Table 12: Logical IF-ELSE Constructs.

          M ATLAB                            Fortran                                    C++
    if l expression1           IF (l expression1) THEN                    if (l expression1)
                                                                               
     true group A               true group A
    elseif l expression2       ELSE IF (l expression2) THEN                   true group A
                                                                              ¡
     true group B               true group B
    elseif l expression3       ELSE IF (l expression3) THEN               else if (l expression2)
                                                                               
     true group C               true group C
    else                       ELSE                                           true group B
                                                                              ¡
     default group D            default group D
    end                        END IF                                     else if (l expression3)
                                                                               
                                                                              true group C
                                                                              ¡
                                                                          else 
                                                                              default group D
                                                                              ¡

                            Table 13: Logical IF-ELSE-IF Constructs.
LIST OF TABLES                                                                                   9



                            F90                                   C++
             SELECT CASE (expression)             switch (expression)
                                                     
              CASE (value 1)
                group 1                                 case value 1 :
              CASE (value 2)                             group 1
                group 2                                  break;
                 .
                 .                                      case value 2 :
                 .                                       group 2
              CASE (value n)                             break;
                group n                                    .
              CASE DEFAULT                                 .
                                                           .
                default group                           case value n :
             END SELECT                                  group n
                                                         break;
                                                        default:
                                                         default group
                                                    ¡    break;




                               Table 14: Case Selection Constructs.




                    F90 Named IF                             F90Named SELECT
           name: IF (logical 1) THEN            name: SELECT CASE (expression)
            true group A                         CASE (value 1)
           ELSE IF (logical 2) THEN                group 1
            true group B                         CASE (value 2)
           ELSE                                    group 2
            default group C                      CASE DEFAULT
           ENDIF name                              default group
                                                 END SELECT name



                           Table 15: F90 Optional Logic Block Names.




                               Fortran                           C++
                     DO 1 ...
                      DO 2 ...
                                                        for (...)
                                                         for (...)
                                                                     
                        ...                                ...
                        IF (disaster) THEN                 if (disaster)
                         GO TO 3                            go to error
                        END IF                          ¡¡ ...
                        ...
                   2 END DO
                   1 END DO                             error:
                   3 next statement



Table 16: GO TO Break-out of Nested Loops. This situation can be an exception to the general recom-
mendation to avoid GO TO statements.
10                                                                  LIST OF TABLES




            F77                             F90                         C++
   DO 1 I = 1,N               DO I = 1,N                      for (i=1; in; i++)
                                                                
    ...                        ...
    IF (skip condi-            IF (skip condi-                 if (skip condition)
 tion) THEN                   tion) THEN                        continue; // to next
      GO TO 1                    CYCLE ! to next I             else if
    ELSE                       ELSE                             false group
      false group                false group                   end
    END IF                     END IF                          ¡
 1 continue                   END DO



                        Table 17: Skip a Single Loop Cycle.




            F77                             F90                         C++
   DO 1 I = 1,N               DO I = 1,N                      for (i=1; in; i++)
                                                                
    IF (exit condi-            IF (exit condi-
 tion) THEN                   tion) THEN                       if (exit condition)
      GO TO 2                    EXIT ! this do                 break;// out of loop
    ELSE                       ELSE                            else if
      false group                false group                    false group
    END IF                     END IF                          end
                                                               ¡
 1 CONTINUE                   END DO
 2 next statement             next statement                  next statement



                          Table 18: Abort a Single Loop.




                      main: DO ! forever
                       test: DO k=1,k max
                         third: DO m=m max,m min,-1
                          IF (test condition) THEN
                            CYCLE test ! loop on k
                          END IF
                         END DO third ! loop on m
                         fourth: DO n=n min,n max,2
                          IF (main condition) THEN
                            EXIT main ! forever loop
                         END DO fourth ! on n
                       END DO test ! over k
                      END DO main
                      next statement


                       Table 19: F90 DOs Named for Control.
LIST OF TABLES                                                                                           11




                                     M ATLAB                                     C++
                       initialize test                            initialize test
                       while l expression                         while (l expression)
                                                                        
                        true group
                        change test                                    true group
                       end                                             change test
                                                                       ¡

                                        F77                                      F90
                         initialize test                          initialize test
                       # continue                                 do while (l expression)
                        IF (l expression) THEN                     true group
                          true group                               change test
                          change test                             end do
                          go to #
                        END IF



                                   Table 20: Looping While a Condition is True.




 Function
                              M ATLABa                                     C++                 Fortran
    Type
 program           statements             main(argc,char **argv)
                                                                                        program main
                   [y1...yn]=f(a1,...,am)                                               type y
                   [end of file]            statements                                  type a1,...,type am
                                            y = f(a1,I,am);  ¡                          statements
                                                                                        y = f(a1,...,am)
                                                                                        call s(a1,...,am)
                                                                                        end program

 subroutine                                              void f                         subroutine s(a1,...,am)
                                                         (type a1,...,type am)
                                                                                        type a1,...,type am
                                                                                          statements
                                                             statements
                                                             ¡                            end


 function          function [r1...rn]                    type f (type a1,...,type am)   function f(a1,...,am)
                     =f(a1,...,am)                                                      type f
                                                          




                                                            statements       ¡




                   statements                                                           type a1,...,type am
                                                                                          statements
                                                                                          end


  a Every   function or program in M ATLAB must be in separate files.

Table 21: Function definitions. In each case, the function being defined is named f and is called with m
arguments a1,...,am.
12                                                                          LIST OF TABLES


                        One-Input, One-Result Procedures
     M ATLAB     function out = name (in)
     F90         function name (in) ! name = out
                 function name (in) result (out)
     C++         name (in, out)

                   Multiple-Input, Multiple-Result Procedures
     M ATLAB     function [inout, out2] = name (in1, in2, inout)
     F90         subroutine name (in1, in2, inout, out2)
     C++         name(in1, in2, inout, out2)


               Table 22: Arguments and return values of subprograms.


                            Global Variable Declaration
                M ATLAB     global list of variables
                F77         common /set name/ list of variables
                F90         module set name
                               save
                               type (type tag) :: list of variables
                             end module set name
                C++          extern list of variables

                             Access to Global Variables
                M ATLAB      global list of variables
                F77          common /set name/ list of variables
                F90          use set name, only subset of variables
                             use set name2 list of variables
                C++          extern list of variables


                Table 23: Defining and referring to global variables.


                           Action               C++                F90
                 Bitwise AND                                       iand
                 Bitwise exclusive OR                               ieor
                                                          




                 Bitwise exclusive OR                        ¡      ior
                 Circular bit shift                               ishftc
                 Clear bit                                         ibclr
                 Combination of bits                              mvbits
                 Extract bit                                       ibits
                 Logical complement                  ¢              not
                 Number of bits in integer    sizeof             bit size
                 Set bit                                           ibset
                 Shift bit left                  £                 ishft
                 Shift bit right                 ¤                 ishft
                 Test on or off                                    btest
                 Transfer bits to integer                        transfer


                          Table 24: Bit Function Intrinsics.
LIST OF TABLES                                                                                                                13

     0        NUL  1      SOH  2        STX  3       ETX     4    EOT      5   ENQ      6   ACK      7                  BEL
     8        BS   9      HT  10        NL  11       VT     12    NP      13   CR      14   SO      15                  SI
    16        DLE 17      DC1 18        DC2 19       DC3    20    DC4     21   NAK     22   SYN     23                  ETB
    24        CAN 25      EM  26        SUB 27       ESC    28    FS      29   GS      30   RS      31                  US
    32        SP  33       !  34           35        #     36     $      37    %      38          39                   ’
    40         (  41       )  42         *  43        +     44     ,      45    -      46    .      47                   /
    48         0  49       1  50         2  51        3     52     4      53    5      54    6      55                   7
    56         8  57       9  58         :  59        ;     60           61    =      62          63                   ?
    64         @  65       A  66         B  67        C     68     D      69    E      70    F      71                   G
    72         H  73       I  74         J  75        K     76     L      77    M      78    N      79                   O
    80         P  81       Q  82         R  83        S     84     T      85    U      86    V      87                   W
    88         X  89       Y  90         Z  91        [     92           93    ]      94    ˆ      95                   _
    96         ‘  97       a  98         b  99        c    100     d     101    e     102    f     103                   g
   104         h 105       i 106         j 107        k    108     l     109    m     110    n     111                   o
   112         p 113       q 114         r 115        s    116     t     117    u     118    v     119                   w
   120         x 121       y 122         z 123        {    124     |     125    }     126    ˜     127                  DEL
                                           Table 25: The ACSII Character Set.

                 ACHAR (I)                                     Character number I in ASCII collating set
                 ADJUSTL (STRING)                              Adjust left
                 ADJUSTR (STRING)                              Adjust right
                 CHAR (I)        




                                                               Character I in processor collating set
                 IACHAR (C)                                    Position of C in ASCII collating set
                 ICHAR (C)                                     Position of C in processor collating set
                 INDEX (STRING, SUBSTRING)a                    Starting position of a substring
                 LEN (STRING)                                  Length of a character entity
                 LEN TRIM (STRING)                             Length without trailing blanks
                 LGE (STRING A, STRING B)                      Lexically greater than or equal
                 LGT (STRING A, STRING B)                      Lexically greater than
                 LLE (STRING A, STRING B)                      Lexically less than or equal
                 LLT (STRING A, STRING B)                      Lexically less than
                 REPEAT (STRING, NCOPIES)                      Repeated concatenation
                 SCAN (STRING, SET)a                           Scan a string for a character in a set
                 TRIM (STRING)                                 Remove trailing blank characters
                 VERIFY (STRING, SET)a                         Verify the set of characters in a string
                 STRING A//STRING B                            Concatenate two strings
  a Optional   arguments not shown.

                                           Table 26: F90 Character Functions.

                          Action                    ASCII Character          F90 Inputa        C++ Input¡




                      Alert (Bell)                         7                  Ctrl-G               a
                                                                                                    ¡




                      Backspace                            8                  Ctrl-H               b
                                                                                                            ¡




                      Carriage Return                     13                  Ctrl-M               r
                      End of Transmission                  4                  Ctrl-D            Ctrl-D
                                                                                                                ¡




                      Form Feed                           12                  Ctrl-L               f
                                                                                                                    ¡




                      Horizontal Tab                       9                   Ctrl-I               t
                                                                                                    ¡




                      New Line                            10                   Ctrl-J              n
                                                                                                    ¡




                      Vertical Tab                        11                  Ctrl-K               v
  a “Ctrl-”   denotes control action. That is, simultaneous pressing of the CONTROL key and the letter following.

                                     Table 27: How to type non-printing characters.
14                                                                                LIST OF TABLES



                       C, C++           Variable.component.sub component
                       F90              Variable%component%sub component


                              Table 28: Referencing Structure Components.




                C, C++        struct data tag
                                                             
                                  intrinsic type 1 component names;
                              ¡   intrinsic type 2 component names;
                                ;

                F90           type data tag
                                  intrinsic type 1 :: component names;
                                  intrinsic type 2 :: component names;
                              end type data tag



                             Table 29: Defining New Types of Data Structure.




             C, C++      struct data tag
                                                     
                             intrinsic type 1 component names;
                         ¡   struct tag 2 component names;
                           ;

             F90         type data tag
                             intrinsic type :: component names;
                             type (tag 2) :: component names;
                         end type data tag



                                  Table 30: Nested Data Structure Definitions.




 C, C++   struct data tag variable list; /* Definition */
                                                                           ¡
          struct data tag variable = component values ; /* Initializa-
          tion */
          variable.component.sub component = value; /* Assignment */

 F90      type (data tag) :: variable list ! Definition
          variable = data tag (component values) ! Initialization
          variable%component%sub component = value ! Assignment



       Table 31: Declaring, initializing, and assigning components of user-defined datatypes.
LIST OF TABLES                                                                                        15


                  INTEGER, PARAMETER :: j max = 6
                  TYPE meaning demo
                      INTEGER, PARAMETER :: k max = 9, word = 15
                      CHARACTER (LEN = word) :: name(k max)
                  END TYPE meaning demo
                  TYPE (meaning demo) derived(j max)
               Construct                                    Interpretation
     derived                        All components of all derived’s elements
                                                       ¤¢ 
                                                      £ ¡
     derived(j)                     All components of     element of derived
                                                                                    ¦¥ 
                                                                                   £ ¡
     derived(j)%name                All k max components of name within       element of derived
     derived%name(k)                Component k of the name array for all elements of derived
                                                                           ¦¥ 
                                                                          £ ¡
     derived(j)%name(k)             Component k of the name array of     element of derived


                       Table 32: F90 Derived Type Component Interpretation.


                                C++                                                        F90
 Declaration     type tag *pointer name;                     type (type tag), pointer ::
                                                             pointer name
 Target          target name                                type (type tag), target ::          target name
 Examples        char *cp, c;                                character, pointer :: cp
                 int *ip, i;                                 integer, pointer :: ip
                 float *fp, f;                               real, pointer :: fp
                 cp =  c;                                   cp = c
                                                                 §
                 ip =  i;                                   ip = i
                                                                 §
                 fp =  f;                                   fp = f
                                                                 §




                      Table 33: Definition of pointers and accessing their targets.


                           C, C++    pointer name = NULL
                           F90       nullify (list of pointer names)
                           F95       pointer name = NULL()


                    Table 34: Nullifing a Pointer to Break Association with Target.


                                    Purpose                      F90             M ATLAB
                        Form subscripts                           ()                ()
                        Separates subscripts  elements            ,                 ,
                        Generates elements  subscripts            :                 :
                        Separate commands                          ;                 ;
                        Forms arrays                             (/ /)              []
                        Continue to new line                                      ...
                        Indicate comment                           !                %
                        Suppress printing                       default              ;


                                    Table 35: Special Array Characters.
16




                Description                           Equation                            Fortran90 Operator                               Matlab Operator                          Original Sizes                   Result Size




                                                                         ¤
                                                                                                                        ¤
                                                                                                                                                                                                      §
                                                                                                                                                                                                                               §




                                                                    £
                                                                                                                    £
                                                                                                                                                                     £




                                                   
                                                              ¢
                                                                                                       
                                                                                                               ¢
                                                                                                                                                
                                                                                                                                                            ¢
                                                                                                                                                                  ¥ ¦¤




                                                          ¡
                                                                                                           ¡
                                                                                                                                                        ¡
                                                                                                                                                                                               ¨ ©§
                                                                                                                                                                                                                        ¨ ©§




                Scalar plus scalar




                                                                              ¤
                                                                                                                        ¤
                                                                                                                                                                                                                 §




                                                                          £
                                                                                                                    £
                                                                                                                                                                     £




                                                                                                       
                                                                                                               ¢
                                                                                                                                                
                                                                                                                                                            ¢
                                                                                                                                                                                           
                                                                                                                                                                                                                               




                                                                                                                                                                  ¥ ¦¤




                                                          ¡
                                                                                                           ¡
                                                                                                                                                        ¡




                                             
                                                                   




                                              
                                                              ¢
                                                                                                                                                                                     ¨ 
                                                                                                                                                                                                          ¨ ©§
                                                                                                                                                                                                                         ¨ 




                Element plus scalar                                                                                                                                                             and




                                                                                                                        ¤




                                                                             £
                                                                                                                    £
                                                                                                                                                                     £




                                                                                                       
                                                                                                               ¢
                                                                                                                                                
                                                                                                                                                            ¢
                                                                                                                                                                                           
                                                                                                                                                                                                                 
                                                                                                                                                                                                                               




                                                                                                                                                                  ¥ ¦¤




                                                       ¡
                                                                                                           ¡
                                                                                                                                                        ¡




                                                  
                                                                
                                                                           




                                            
                                                           ¢
                                                                          ¤
                                                                                                                                                                                    ¨ 
                                                                                                                                                                                                           ¨ 
                                                                                                                                                                                                                         ¨ 




                Element plus element                                                                                                                                                           and




                                                                         ¤
                                                                                                                        ¤
                                                                                                                                                                                                      §
                                                                                                                                                                                                                               §




                                                                   
                                                                                                                    
                                                                                                                                                                




                                                   
                                                              ¢
                                                                                                       
                                                                                                               ¢
                                                                                                                                                    
                                                                                                                                                              ¢
                                                                                                                                                            ¥ ¦¤




                                                          ¡
                                                                                                           ¡
                                                                                                                                                        ¡
                                                                                                                                                                                               ¨ ©§
                                                                                                                                                                                                                        ¨ ©§




                Scalar times scalar




                                                                              ¤
                                                                                                                        ¤
                                                                                                                                                                                                                 §




                                                                          
                                                                                                                    
                                                                                                                                                               




                                                                                                       
                                                                                                               ¢
                                                                                                                                                    
                                                                                                                                                             ¢
                                                                                                                                                                                           
                                                                                                                                                                                                                               




                                                                                                                                                            ¥ ¤




                                                          ¡
                                                                                                           ¡
                                                                                                                                                        ¡




                                             
                                                                   




                                              
                                                              ¢
                                                                                                                                                                                     ¨ 
                                                                                                                                                                                                          ¨ ©§
                                                                                                                                                                                                                         ¨ 




                Element times scalar                                                                                                                                                            and




                                                                                                                        ¤




                                                                          
                                                                                                                    
                                                                                                                                                                    




                                                                                                       
                                                                                                               ¢
                                                                                                                                                
                                                                                                                                                            ¢
                                                                                                                                                                                           
                                                                                                                                                                                                                 
                                                                                                                                                                                                                               




                                                                                                                                                                  ¥ ¦¤




                                                       ¡
                                                                                                           ¡
                                                                                                                                                        ¡




                                                  
                                                                
                                                                        




                                            
                                                           ¢
                                                                       ¤
                                                                                                                                                                                    ¨ 
                                                                                                                                                                                                           ¨ 
                                                                                                                                                                                                                         ¨ 




                Element times element                                                                                                                        .                                 and




                                                                   
                                                                                                                    
                                                                                                                                                                 




                                                                      ¤
                                                                                                                       ¤
                                                                                                                                                                                                      §
                                                                                                                                                                                                                               §




                                                       
                                                                ¢
                                                                                                       
                                                                                                               ¢
                                                                                                                                                    
                                                                                                                                                            ¢
                                                                                                                                                                    ¥ ¦¤




                                                           ¡
                                                                                                           ¡
                                                                                                                                                        ¡
                                                                                                                                                                                               ¨ ©§
                                                                                                                                                                                                                        ¨ ©§




                Scalar divide scalar




                                                                         
                                                                                                                    
                                                                                                                                                                 




                                                                             ¤
                                                                                                                       ¤
                                                                                                                                                                                                                 §




                                                                                                       
                                                                                                               ¢
                                                                                                                                                    
                                                                                                                                                            ¢
                                                                                                                                                                                           
                                                                                                                                                                                                                               




                                                                                                                                                                    ¥ ¦¤




                                                           ¡
                                                                                                           ¡
                                                                                                                                                        ¡




                                                  
                                                                




                                                   
                                                                ¢
                                                                                                                                                                                     ¨ 
                                                                                                                                                                                                          ¨ ©§
                                                                                                                                                                                                                         ¨ 




                Scalar divide element                                                                                                                                                           and




                                                                     
                                                                                                                    
                                                                                                                                                                  




                                                                                                                       ¤




                                                                                                       
                                                                                                               ¢
                                                                                                                                                    
                                                                                                                                                                                           
                                                                                                                                                                                                                 
                                                                                                                                                                                                                               




                                                                                                                                                                    ¥ ¦¤




                                                          ¡
                                                                                                           ¡
                                                                                                                                                        ¡




                                             
                                                                   
                                                                           




                                              
                                                              ¢
                                                                           ¤
                                                                                                                                                             ¢
                                                                                                                                                                                    ¨ 
                                                                                                                                                                                                           ¨ 
                                                                                                                                                                                                                         ¨ 




                Element divide element                                                                                                                                                         and




                                                                    !
                                                                                                                        ¤
                                                                                                                                                                                                      §
                                                                                                                                                                                                                               §




                                                                                                                                                                     




                                                                                                                   
                                                                                                                    




                                                        
                                                                  ¢
                                                                                                       
                                                                                                               ¢
                                                                                                                                                
                                                                                                                                                            ¢
                                                                                                                                                                  ¥ ¦¤




                                                              ¡
                                                                                                           ¡
                                                                                                                                                        ¡
                                                                                                                                                                                               ¨ ©§
                                                                                                                                                                                                                        ¨ ©§




                Scalar power scalar




                                                                     !
                                                                                                                        ¤
                                                                                                                                                                                                                 §




                                                                                                                                                                     




                                                                                                                   
                                                                                                                    




                                                                                                       
                                                                                                               ¢
                                                                                                                                                
                                                                                                                                                            ¢
                                                                                                                                                                                           
                                                                                                                                                                                                                               




                                                                                                                                                                  ¥ ¦¤




                                                              ¡
                                                                                                           ¡
                                                                                                                                                        ¡




                                                       
                                                   
                                                                         
                                                                    ¢
                                                                                                                                                                                     ¨ 
                                                                                                                                                                                                          ¨ ©§
                                                                                                                                                                                                                         ¨ 




                Element power scalar                                                                                                                                                            and




                                                                     #
                                                                    %$!
                                                                                                                        ¤
                                                                                                                                                                     




                                                                                                                   
                                                                                                                    




                                                                                                       
                                                                                                               ¢
                                                                                                                                                
                                                                                                                                                            ¢
                                                                                                                                                                                           
                                                                                                                                                                                                                 
                                                                                                                                                                                                                               




                                                                                                                                                                  ¥ ¦¤




                                                              ¡
                                                                                                           ¡
                                                                                                                                                        ¡




                                                       
                                                   
                                                                         
                                                                    ¢
                                                                                                                                                                                    ¨ 
                                                                                                                                                                                                           ¨ 
                                                                                                                                                                                                                         ¨ 




                Element power element                                                                                                                       .                                  and



                                                                                                                             6
                                                                                                                                   7
                                                                                                                                 '
                                                                                                                                                                    '




                                                  
                                                                                          
                                                                                                                                                    




                                                                                                                    4
                                                                                                                        25




                                                                                                  )(
                                                                                                          10
                                                                                                               32
                                                                                                                                                                                                      
                                                                                                                                                                                                                               




                                                                                                                                                                  ¥ 8




                                                              ¡
                                                                                                  ¡
                                                                                                                                                            ¡




                                                                          




                                                      
                                                                     '
                                                                                                                                                                                               ¨ 
                                                                                                                                                                                                                        ¨ 




                Matrix transpose




                                                           A
                                                                                                                       6
                                                                                                                                   7

                                                                                                                           '
                                                                                                                                                            '




                                                                                          
                                                                                                                                               




                                                                                                                    E




                                                                              B
                                                                                                                                   B




                                                                                                           (
                                                                                                                                                                  




                                                                                                          0
                                                                                                      C
                                                                                                               CD
                                                                                                                                                                                           F
                                                                                                                                                                                                                 
                                                                                                                                                                                                                               




                                                                                                                                                                        ¥ B




                                                      ¡
                                                                                              ¡
                                                                                                                                                        ¡




                                                                          




                                          9 @
                                                                    9 '
                                                                                 




                                                              
                                                                                                                           ¨
                                                                                                                                                                                     ¨ 
                                                                                                                                                                                                          ¨ F
                                                                                                                                                                                                                         ¨ 




                Matrix times matrix                                                                                                                                                             and




                                                           A
                                                                                                               6
                                                                                                                               7
                                                                                                                                                            6




                                                                    '
                                                                                                                    '




                                                                             B
                                                                                                                               B
                                                                                                                                                                                B
                                                                                                                                                                                           §
                                                                                                                                                                                                                 §
                                                                                                                                                                                                                               §




                                                                                                                        
                                                                                                                                                                       




                                             
                                                                                               
                                                                                                      D2
                                                                                                               C
                                                                                                                                            
                                                                                                                                                   D2
                                                                                                                                                        C
                                                                                                                                                                              ¥ 7




                                                  ¡
                                                                                                  ¡
                                                                                                                                               ¡




                                                                      
                                                                              




                                                              
                                                                                                                                                                 G'
                                                                                                                                                                                    ¨ 
                                                                                                                                                                                                           ¨ 
                                                                                                                                                                                                                        ¨ ©§




                Vector dot vector                                                                                            6                                                                 and
                                                                                                                                       7


                                                                                                                                 '
                                                                                                                                                            '




                                                                                              H
                                                                                                                                       B
                                                                                                                                                                         B
                                                                                                                                                                                           §
                                                                                                                                                                                                                 §
                                                                                                                                                                                                                               §




                                                                                                  (
                                                                                                                           (
                                                                                                                                                                




                                                                                              4
                                                                                                                4
                                                                                                                        I




                                                                                       
                                                                                                      3
                                                                                                          )
                                                                                                               D H
                                                                                                                                                
                                                                                                                                                                       ¥ 8




                                                                                          ¡
                                                                                                                                                    ¡




                                                                                                                                 ¨
                                                                                                                                                                                    ¨ 
                                                                                                                                                                                                           ¨ 
                                                                                                                                                                                                                        ¨ ©§




                                                                                                                                                                                               and

Table 36: Array Operations in Programming Constructs. Lower case letters denote scalars or scalar elements of arrays. Matlab arrays are allowed a maximum of
two subscripts while Fortran allows seven. Upper case letters denote matrices or scalar elements of matrices.
                                                                                                                                                                                                                                   LIST OF TABLES
LIST OF TABLES                                                                                        17

             Table 37: Equivalent Fortran90 and M ATLAB Intrinsic Functions.
             The following KEY symbols are utilized to denote the TYPE of the in-
             trinsic function, or subroutine, and its arguments: A-complex, integer,
             or real; I-integer; L-logical; M-mask (logical); R-real; X-real; Y-real;
             V-vector (rank 1 array); and Z-complex. Optional arguments are not
             shown. Fortran90 and M ATLAB also have very similar array operations
             and colon operators.

 Type   Fortran90                    M ATLAB              Brief Description
 A      ABS(A)                       abs(a)               Absolute value of A.
 R      ACOS(X)                      acos(x)              Arc cosine function of real X.
 R      AIMAG(Z)                     imag(z)              Imaginary part of complex number.
 R      AINT(X)                      real(fix(x))          Truncate X to a real whole number.
 L      ALL(M)                       all(m)               True if all mask elements, M, are true.
 R      ANINT(X)                     real(round(x))       Real whole number nearest to X.
 L      ANY(M)                       any(m)               True if any mask element, M, is true.
 R      ASIN(X)                      asin(x)              Arcsine function of real X.
 R      ATAN(X)                      atan(x)              Arctangent function of real X.
 R      ATAN2(Y,X)                   atan2(y,x)           Arctangent for complex number(X, Y).
 I      CEILING(X)                   ceil(x)              Least integer = real X.
                                                                        £
 Z      CMPLX(X,Y)                   (x+yi)               Convert real(s) to complex type.
 Z      CONJG(Z)                     conj(z)              Conjugate of complex number Z.
 R      COS(R Z)                     cos(r z)             Cosine of real or complex argument.
 R      COSH(X)                      cosh(x)              Hyperbolic cosine function of real X.
 I      COUNT(M)                     sum(m==1)            Number of true mask, M, elements.
 R,L    DOT PRODUCT(X,Y)             x’ y                 Dot product of vectors X and Y.
 R
 R,Z
        EPSILON(X)
        EXP(R Z)
                                     eps
                                     exp(r z)
                                                          Number, like X,       ¢
                                                                                . £¡
                                                          Exponential of real or complex number.
 I      FLOOR(X)                     floor                 Greatest integer X.
                                                                            ¡




 R      HUGE(X)                      realmax              Largest number like X.
 I      INT(A)                       fix(a)                Convert A to integer type.
 R      LOG(R Z)                     log(r z)             Logarithm of real or complex number.
 R      LOG10(X)                     log10(x)             Base 10 logarithm function of real X.
 R      MATMUL(X,Y)                    
                                     x y                  Conformable matrix multiplication, X*Y.
 I,V    I=MAXLOC(X)                  [y,i]=max(x)         Location(s) of maximum array element.
 R      Y=MAXVAL(X)                  y=max(x)             Value of maximum array element.
 I,V    I=MINLOC(X)                  [y,i]=min(x)         Location(s) of minimum array element.
 R      Y=MINVAL(X)                  y=min(x)             Value of minimum array element.
 I      NINT(X)                      round(x)             Integer nearest to real X.
 A      PRODUCT(A)                   prod(a)              Product of array elements.
 call
 call
        RANDOM NUMBER(X)
        RANDOM SEED
                                     x=rand
                                     rand(’seed’)
                                                          Pseudo-random numbers in         ©¢¨¦¥¤
                                                                                            .
                                                          Initialize random number generator.
                                                                                               §
 R      REAL (A)                     real(a)              Convert A to real type.
 R
 I,V
        RESHAPE(X, (/ I, I2 /))
        SHAPE(X)
                                     reshape(x, i, i2)
                                     size(x)
                                                                                       
                                                          Reshape array X into I I2 array.
                                                          Array (or scalar) shape vector.
 R      SIGN(X,Y)                                         Absolute value of X times sign of Y.
 R      SIGN(0.5,X)-SIGN(0.5,-X)     sign(x)              Signum, normalized sign, –1, 0, or 1.
 R,Z    SIN(R Z)                     sin(r z)             Sine of real or complex number.
 R      SINH(X)                      sinh(x)              Hyperbolic sine function of real X.
 I      SIZE(X)                      length(x)            Total number of elements in array X.
 R,Z    SQRT(R Z)                    sqrt(r z)            Square root, of real or complex number.
 R      SUM(X)                       sum(x)               Sum of array elements.
                                           (continued)
18                                                                                    LIST OF TABLES

 Type Fortran90                        M ATLAB               Brief Description
 R       TAN(X)                        tan(x)                Tangent function of real X.
 R       TANH(X)                       tanh(x)               Hyperbolic tangent function of real X.
 R       TINY(X)                       realmin               Smallest positive number like X.
 R       TRANSPOSE(X)                  x’                    Matrix transpose of any type matrix.
 R       X=1                           x=ones(length(x)) Set all elements to 1.
 R       X=0                           x=zero(length(x)) Set all elements to 0.
 For more detailed descriptions and example uses of these intrinsic functions see Adams, J.C., et al.,
 Fortran 90 Handbook, McGraw-Hill, New York, 1992, ISBN 0–07–000406–4.




           C++                –          int         –            –      floor      ceil
           F90              aint         int     anint          nint     floor     ceiling
           M ATLAB        real (fix)      fix   real (round)    round     floor      ceil
           Argument                                Value of Result
            –2.000            –2.0        –2        –2.0         –2          –2          –2
            –1.999            –1.0        –1        –2.0         –2          –2          –1
            –1.500            –1.0        –1        –2.0         –2          –2          –1
            –1.499            –1.0        –1        –1.0         –1          –2          –1
            –1.000            –1.0        –1        –1.0         –1          –1          –1
            –0.999             0.0         0        –1.0         –1          –1           0
            –0.500             0.0         0        –1.0         –1          –1           0
            –0.499             0.0         0          0.0          0          1           0
              0.000            0.0         0          0.0          0          0           0
              0.499            0.0         0          0.0          0          0           1
              0.500            0.0         0          1.0          1          0           1
              0.999            0.0         0          1.0          1          0           1
              1.000            1.0         1          1.0          1          1           1
              1.499            1.0         1          1.0          1          1           2
              1.500            1.0         1          2.0          2          1           2
              1.999            1.0         1          2.0          2          1           2
              2.000            2.0         2          2.0          2          2           2

                                      Table 38: Truncating Numbers.

           WHERE (logical array expression)
              true array assignments
           ELSEWHERE
              false array assignments
           END WHERE

           WHERE (logical array expression) true array assignment



                                     Table 39: F90 WHERE Constructs.
LIST OF TABLES                                                                                           19




   Function                   Description                   Opt                   Example
     all      Find if all values are true, for a fixed di-    d    all(B = A, DIM = 1)
              mension.                                            (true, false, false)
     any      Find if any value is true, for a fixed di-      d    any (B      §   2, DIM = 1)
              mension.                                            (false, true, true)
    count     Count number of true elements for a            d    count(A = B, DIM = 2)
              fixed dimension.                                     (1, 2)
   maxloc     Locate first element with maximum              m     maxloc(A, A
                                                                                           9)
              value given by mask.                                (2, 3)
   maxval     Max element, for fixed dimension, given         b    maxval (B, DIM=1, B           §   0)
              by mask.                                            (2, 4, 6)


                                                                   ££¥¥ ¡
    merge     Pick true array, A, or false array, B, ac-     –    merge(A, B, L)
              cording to mask, L.                                 © ¤£¢§
                                                                     ¨ ¦
   minloc     Locate first element with minimum value        m     minloc(A, A         §    3)
              given by mask.                                      (2, 2)
   minval     Min element, for fixed dimension, given         b    minval(B, DIM = 2)
              by mask.                                            (1, 2)
     pack     Pack array, A, into a vector under control     v    pack(A, B
                                                                                          4)
              of mask.                                            (0, 7, 3)
   product    Product of all elements, for fixed dimen-       b    product(B) ; (720)
              sion, controlled by mask.                           product(B, DIM = 1, T)
                                                                  (2, 12, 30)
     sum      Sum all elements, for fixed dimension,          b    sum(B) ;(21)
              controlled by mask.                                 sum(B, DIM = 2, T)
                                                                  (9, 12)


                           £¢§¡
                          © ¨ ¦  ¥
   unpack     Replace the true locations in array B con-     –    unpack(U, L, B)
              trolled by mask L with elements from the
              vector U.


          § ¨ §  ¤  %§ ©  $$ #¡  § © £¢¥ ¡  § © ££¥ ¡ 
                                      $ ! ¤£¢§  ¤£¢¦ 
                                               ¦            ¨
                                     $ 
Table 40: F90 Array Operators with Logic Mask Control. and denote true and false, respectively.
Optional arguments: b -- DIM  MASK, d -- DIM, m -- MASK, v -- VECTOR and DIM = 1 implies
for any rows, DIM = 2 for any columns, and DIM = 3 for any plane.
20                                                                                                                LIST OF TABLES


                                          M ATLAB                                      C++                              F90
                                                                                         a
 Pre-allocate                   A(100)=0                                int A[100];                             integer A(100)
 linear array
 Initialize to a                for j=1:100 % slow                      for (j=0; j100; j++)                   A=12
 constant value of                A(j)=12                                 A[j]=12;
                                  end
 12                             % better way
                                A=12*ones(1,100)
 Pre-allocate                   A=ones(10,10)                           int A[10][10];                          integer A(10,10)
 two-dimensional
 array
     a C++   has a starting subscript of 0, but the argument in the allocation statement is the array’s size.

                                            Table 41: Array initialization constructs.

   Action                     M ATLAB                                  C++                                 F90
                                            a
 Define                A=zeros(2,3)                            int A[2][3];               integer,dimension(2,3)::A
 size
 Enter                A=[1,7,-2;                              int A[2][3]=
                                                                        ¡¡               A(1,:)=(/1,7,-2/)
 rows                   3, 4, 6];                                1,7,2 ,                 A(2,:)=(/3,4,6/)
                                                                 3,4,6
                                                              ¡;
     a Optional   in M ATLAB , but improves efficiency.

                                            Table 42: Array initialization constructs.

                            M ATLAB                                          C++                                       F90
 Addition
   ¦¤¢  
  ¥ £ ¡                    C=A+B                for (i=0; i10; i++)
                                                  for (j=0; j10; j++)
                                                                                                                C=A+B
                                                    C[i][j]=A[i][j]+B[i][j];
                                                          ¡
                                                      ¡
 Multiplication
   §¢  
  ¥ ¡                      C=A*B                for (i=0; i10; i++)
                                                  for (j=0; j10; j++)
                                                                                                                C=matmul(A,B)
                                                    C[i][j] = 0;                          
                                                    for (k=0; k10; k++)
                                                      C[i][j] += A[i][k]*B[k][j];
                                                          ¡ ¡
                                                  ¡
 Scalar                                                                             
 multiplication
  ©¢  
  ¥¨                       C=a*B                for (i=0; i10; i++)                                            C=a*B
                                                  for (j=0; j  10; j++)
                                                    C[i][j] = a*B[i][j];
                                                          ¡
                                                      ¡
 Matrix
 inverse
  ¥
  ¡                      B=inv(A)                                           a                                 B=inv(A)a


   a Neither C++ nor F90 have matrix inverse functions as part of their language definitions nor as part of standard collections

of mathematical functions (like those listed in Table 7). Instead, a special function, usually drawn from a library of numerical
functions, or a user defined operation, must be used.

                                   Table 43: Elementary matrix computational routines.
LIST OF TABLES                                                                  21

        C++      int* point, vector, matrix
                 ...
                 point = new type tag
                 vector = new type tag [space 1]
                                                          ¡
                 if (vector == 0) error process
                 matrix = new type tag [space 1 * space 2]
                 ...
                 delete matrix
                 ...
                 delete vector
                 delete point

        F90      type tag, pointer, allocatable :: point
                 type tag, allocatable :: vector (:), matrix (:,:)
                 ...
                 allocate (point)
                 allocate (vector (space 1), STAT = my int)
                 if (my int /= 0) error process
                 allocate (matrix (space 1, space 2))
                 ...
                 deallocate (matrix)
                 if (associated (point, target name)) pointer action...
                 if (allocated (matrix)) matrix action...
                 ...
                 deallocate (vector)
                 deallocate (point)



                      Table 44: Dynamic allocation of arrays and pointers.

          SUBROUTINE AUTO ARRAYS (M,N, OTHER)
          USE GLOBAL CONSTANTS ! FOR INTEGER K
             IMPLICIT NONE
             INTEGER, INTENT (IN) :: M,N
             type tag, INTENT (OUT) :: OTHER (M,N) ! dummy array
          !  Automatic array allocations
             type tag :: FROM USE (K)
             type tag :: FROM ARG (M)
             type tag :: FROM MIX (K,N)
             ...
          ! Automatic deallocation at end of scope
          END SUBROUTINE AUTO ARRAYS



                 Table 45: Automatic memory management of local scope arrays.

                              module derived class name
                                    use base class name
                              ! new attribute declarations, if any
                                              ...
                              contains


                                 ! new member definitions
                                          ...
                              end module derived class name



                            Table 46: F90 Single Inheritance Form.
22                                                                    LIST OF TABLES



           module derived class name
                 use base class name, only: list of entities
           ! new attribute declarations, if any
                           ...
           contains


              ! new member definitions
                       ...
           end module derived class name



            Table 47: F90 Selective Single Inheritance Form.




     module derived class name
           use base class name, local name =   £       base entity name
     ! new attribute declarations, if any
                     ...
     contains


        ! new member definitions
                 ...
     end module derived class name



      Table 48: F90 Single Inheritance Form, with Local Renaming.




     module derived class name
           use base1 class name
           use base2 class name
           use base3 class name, only: list of entities
           use base4 class name, local name = base entity name
                                                   £
     ! new attribute declarations, if any
                     ...
     contains


         ! new member definitions
                 ...
     end module derived class name



       Table 49: F90 Multiple Selective Inheritance with Renaming.

More Related Content

PDF
Advanced macro guide
PDF
Hats guia de_macro
PDF
Tinyos programming
PDF
PDF
Sokkia Set B training manual
PDF
Notes of 8051 Micro Controller for BCA, MCA, MSC (CS), MSC (IT) & AMIE IEI- b...
PDF
Novell login documentation and troubleshooting
PDF
Notes of 8085 micro processor Programming for BCA, MCA, MSC (CS), MSC (IT) &...
Advanced macro guide
Hats guia de_macro
Tinyos programming
Sokkia Set B training manual
Notes of 8051 Micro Controller for BCA, MCA, MSC (CS), MSC (IT) & AMIE IEI- b...
Novell login documentation and troubleshooting
Notes of 8085 micro processor Programming for BCA, MCA, MSC (CS), MSC (IT) &...

Viewers also liked (15)

PDF
Ec oop f90
PDF
Errata file oop_via_f90
PPTX
DUSS Activities
DOCX
COMPARACIÓN DE LOS MÉTODOS ITERATIVOS ADAMAS-BALTHOR-MOULT PREDICTOR CORRECTO...
PDF
NG BB 04 DEFINE Roadmap
PDF
Fortran 90 Basics
PDF
Uni cambridge
 
PPTX
Fortran - concise review
PPTX
Fortran 95
PDF
NG BB 02 Table of Contents
PDF
PDF
NG BB 01 Introduction
PDF
programming fortran 77 Slide02
PDF
programming fortran 77 Slide01
PDF
الامن الصناعي
Ec oop f90
Errata file oop_via_f90
DUSS Activities
COMPARACIÓN DE LOS MÉTODOS ITERATIVOS ADAMAS-BALTHOR-MOULT PREDICTOR CORRECTO...
NG BB 04 DEFINE Roadmap
Fortran 90 Basics
Uni cambridge
 
Fortran - concise review
Fortran 95
NG BB 02 Table of Contents
NG BB 01 Introduction
programming fortran 77 Slide02
programming fortran 77 Slide01
الامن الصناعي
Ad

Similar to Fortran 90 overview (20)

PDF
452042223-Modern-Fortran-in-practice-pdf.pdf
PDF
Course fotran
PDF
Uni leicester
 
PDF
Programming
PDF
Chapter1 6
PDF
Chapter1 6
PDF
Thats How We C
PDF
Arm assembly language by Bournemouth Unversity
PDF
Assembly
PDF
Vic broquard c++ for computer science and engineering 2006
PDF
Learn c++
PDF
Enterprise Cobol Programming Guide For Zos And Os390 32 Ibm
PDF
data structures
PDF
Introduction to Programming Using Java v. 7 - David J Eck - Inglês
PDF
Data struture and aligorism
PDF
PDF
An Introduction to Computer Science - python
PDF
c programming
PDF
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 1 of 5 by...
452042223-Modern-Fortran-in-practice-pdf.pdf
Course fotran
Uni leicester
 
Programming
Chapter1 6
Chapter1 6
Thats How We C
Arm assembly language by Bournemouth Unversity
Assembly
Vic broquard c++ for computer science and engineering 2006
Learn c++
Enterprise Cobol Programming Guide For Zos And Os390 32 Ibm
data structures
Introduction to Programming Using Java v. 7 - David J Eck - Inglês
Data struture and aligorism
An Introduction to Computer Science - python
c programming
Notes for C Programming for MCA, BCA, B. Tech CSE, ECE and MSC (CS) 1 of 5 by...
Ad

Recently uploaded (20)

PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Getting Started with Data Integration: FME Form 101
PPTX
Spectroscopy.pptx food analysis technology
PDF
Encapsulation theory and applications.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
A comparative study of natural language inference in Swahili using monolingua...
PPTX
cloud_computing_Infrastucture_as_cloud_p
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PPTX
1. Introduction to Computer Programming.pptx
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
August Patch Tuesday
PDF
Empathic Computing: Creating Shared Understanding
PDF
A comparative analysis of optical character recognition models for extracting...
PPTX
A Presentation on Artificial Intelligence
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPT
Teaching material agriculture food technology
PDF
Machine learning based COVID-19 study performance prediction
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Getting Started with Data Integration: FME Form 101
Spectroscopy.pptx food analysis technology
Encapsulation theory and applications.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
A comparative study of natural language inference in Swahili using monolingua...
cloud_computing_Infrastucture_as_cloud_p
Encapsulation_ Review paper, used for researhc scholars
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
1. Introduction to Computer Programming.pptx
Group 1 Presentation -Planning and Decision Making .pptx
gpt5_lecture_notes_comprehensive_20250812015547.pdf
OMC Textile Division Presentation 2021.pptx
August Patch Tuesday
Empathic Computing: Creating Shared Understanding
A comparative analysis of optical character recognition models for extracting...
A Presentation on Artificial Intelligence
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Teaching material agriculture food technology
Machine learning based COVID-19 study performance prediction

Fortran 90 overview

  • 1. 1 Fortran 90 Overview J.E. Akin, Copyright 1998 This overview of Fortran 90 (F90) features is presented as a series of tables that illustrate the syntax and abilities of F90. Frequently comparisons are made to similar features in the C++ and F77 languages and to the Matlab environment. These tables show that F90 has significant improvements over F77 and matches or exceeds newer software capabilities found in C++ and Matlab for dynamic memory management, user defined data structures, matrix operations, operator definition and overloading, intrinsics for vector and parallel pro- cessors and the basic requirements for object-oriented programming. They are intended to serve as a condensed quick reference guide for programming in F90 and for understanding programs developed by others.
  • 2. List of Tables 1 Comment syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 Intrinsic data types of variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3 Arithmetic operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 Relational operators (arithmetic and logical) . . . . . . . . . . . . . . . . . . . . . . . . 5 5 Precedence pecking order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 6 Colon Operator Syntax and its Applications . . . . . . . . . . . . . . . . . . . . . . . . 5 7 Mathematical functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 8 Flow Control Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 9 Basic loop constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 10 IF Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 11 Nested IF Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 12 Logical IF-ELSE Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 13 Logical IF-ELSE-IF Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 14 Case Selection Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 15 F90 Optional Logic Block Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 16 GO TO Break-out of Nested Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 17 Skip a Single Loop Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 18 Abort a Single Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 19 F90 DOs Named for Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 20 Looping While a Condition is True . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 21 Function definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 22 Arguments and return values of subprograms . . . . . . . . . . . . . . . . . . . . . . . 12 23 Defining and referring to global variables . . . . . . . . . . . . . . . . . . . . . . . . . 12 24 Bit Function Intrinsics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 25 The ACSII Character Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 26 F90 Character Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 27 How to type non-printing characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 28 Referencing Structure Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 29 Defining New Types of Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 30 Nested Data Structure Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 31 Declaring, initializing, and assigning components of user-defined datatypes . . . . . . . 14 32 F90 Derived Type Component Interpretation . . . . . . . . . . . . . . . . . . . . . . . 15 33 Definition of pointers and accessing their targets . . . . . . . . . . . . . . . . . . . . . . 15 34 Nullifing a Pointer to Break Association with Target . . . . . . . . . . . . . . . . . . . . 15 35 Special Array Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 36 Array Operations in Programming Constructs . . . . . . . . . . . . . . . . . . . . . . . 16 37 Equivalent Fortran90 and M ATLAB Intrinsic Functions . . . . . . . . . . . . . . . . . . 17 38 Truncating Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 39 F90 WHERE Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 40 F90 Array Operators with Logic Mask Control . . . . . . . . . . . . . . . . . . . . . . 19 41 Array initialization constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 42 Array initialization constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3
  • 3. LIST OF TABLES 3 43 Elementary matrix computational routines . . . . . . . . . . . . . . . . . . . . . . . . . 20 44 Dynamic allocation of arrays and pointers . . . . . . . . . . . . . . . . . . . . . . . . . 21 45 Automatic memory management of local scope arrays . . . . . . . . . . . . . . . . . . . 21 46 F90 Single Inheritance Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 47 F90 Selective Single Inheritance Form . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 48 F90 Single Inheritance Form, with Local Renaming . . . . . . . . . . . . . . . . . . . . 22 49 F90 Multiple Selective Inheritance with Renaming . . . . . . . . . . . . . . . . . . . . 22
  • 4. 4 LIST OF TABLES Language Syntax Location M ATLAB % comment (to end of line) anywhere C /*comment*/ anywhere F90 ! comment (to end of line) anywhere F77 * comment (to end of line) column 1 Table 1: Comment syntax. Storage M ATLAB a C++ F90 F77 byte char character:: character integer int integer:: integer single precision float real:: real double precision double real*8:: double precision b complex complex:: complex Boolean bool logical:: logical argument parameter:: parameter pointer * pointer:: structure struct type:: a M ATLAB 4 requires no variable type declaration; the only two distinct types in M ATLAB are strings and reals (which include complex). Booleans are just 0s and 1s treated as reals. M ATLAB 5 allows the user to select more types. b There is no specific data type for a complex variable in C++; they must be created by the programmer. Table 2: Intrinsic data types of variables. Description M ATLAB a C++ Fortranb addition + + + subtractionc - - - multiplication * and .* * * division / and ./ / / exponentiation ˆ and .ˆ powd ** remainder % increment ++ decrement -- parentheses (expres- () () () sion grouping) a When doing arithmetic operations on matrices in M ATLAB , a period (‘.’) must be put before the operator if scalar arithmetic is desired. Otherwise, M ATLAB assumes matrix operations; figure out the difference between ‘*’ and ‘.*’. Note that since matrix and scalar addition coincide, no ‘.+’ operator exists (same holds for subtraction). b Fortran 90 allows the user to change operators and to define new operator symbols. c In all languages the minus sign is used for negation (i.e., changing sign). ¨¦¤¢  § ¥ £ ¡ d In C++ the exponentiation is calculated by function pow . Table 3: Arithmetic operators.
  • 5. LIST OF TABLES 5 Description M ATLAB C++ F90 F77 Equal to == == == .EQ. Not equal to ˜= != /= .NE. Less than < < < .LT. Less or equal <= <= <= .LE. Greater than > > > .GT. Greater or equal >= >= >= .GE. Logical NOT ˜ ! .NOT. .NOT. Logical AND & && .AND. .AND. Logical inclusive OR ! || .OR. .OR. Logical exclusive OR xor .XOR. .XOR. Logical equivalent == == .EQV. .EQV. Logical not equivalent ˜= != .NEQV. .NEQV. Table 4: Relational operators (arithmetic and logical). M ATLAB C++ Operators F90 Operatorsa F77 Operators Operators () () [] -> . () () + - ! ++ -- + ** ** - * & (type) sizeof * / * / % * / * / + -b + -b + -b + -b < <= > >= << >> // // == ˜= < <= > => == /= < <= > .EQ. .NE. >= .LT. .LE. .GT. .GE. ˜ == != .NOT. .NOT. & && .AND. .AND. | || .OR. .OR. = | .EQV. .NEQV. .EQV. .NEQV. ?: = += -= *= /= %= &= ˆ= |= <<= >>= , a User-defined unary (binary) operators have the highest (lowest) precedence in F90. b These are binary operators representing addition and subtraction. Unary operators + and - have higher precedence. Table 5: Precedence pecking order. B = Beginning, E = Ending, I = Increment Syntax F90 M ATLAB Use F90 M ATLAB Default B:E:I B:I:E Array subscript ranges yes yes Character positions in a string yes yes   B B: B: Loop control no yes ¡ E :E :E Full range : : Array element generation no yes Table 6: Colon Operator Syntax and its Applications.
  • 6. 6 LIST OF TABLES Description M ATLAB C++ F90 F77 exponential exp(x) exp(x) exp(x) exp(x) natural log log(x) log(x) log(x) log(x) base 10 log log10(x) log10(x) log10(x) log10(x) square root sqrt(x) sqrt(x) sqrt(x) sqrt(x) raise to power ( ) ¡ ¢  x.ˆr pow(x,r) x**r x**r absolute value abs(x) fabs(x) abs(x) abs(x) smallest integer x £ ceil(x) ceil(x) ceiling(x) largest integer x ¤ floor(x) floor(x) floor(x) division remainder rem(x,y) fmod(x,y) mod(x,y) ¥ mod(x,y) modulo modulo(x,y)a complex conjugate conj(z) conjg(z) conjg(z) imaginary part imag(z) imag(z) aimag(z) drop fraction fix(x) aint(x) aint(x) round number round(x) nint(x) nint(x) cosine cos(x) cos(x) cos(x) cos(x) sine sin(x) sin(x) sin(x) sin(x) tangent tan(x) tan(x) tan(x) tan(x) arc cosine acos(x) acos(x) acos(x) acos(x) arc sine asin(x) asin(x) asin(x) asin(x) arc tangent atan(x) atan(x) atan(x) atan(x) arc tangentb atan2(x,y) atan2(x,y) atan2(x,y) atan2(x,y) hyperbolic cosine cosh(x) cosh(x) cosh(x) cosh(x) hyperbolic sine sinh(x) sinh(x) sinh(x) sinh(x) hyperbolic tangent tanh(x) tanh(x) tanh(x) tanh(x) hyperbolic arc cosine acosh(x) hyperbolic arc sine asinh(x) hyperbolic arctan atanh(x) a Differ ©§¡ ¨ ¦ for . ¡ ¥ £ b atan2(x,y) is used to calculate the arc tangent of in the range . The one-argument function atan(x) ¡ £ computes the arc tangent of in the range . Table 7: Mathematical functions.
  • 7. LIST OF TABLES 7 Description C++ F90 F77 M ATLAB Conditionally execute statements if if if if ¡ ¢  end if end if end Loop a specific number of times for k=1:n do k=1,n do # k=1,n for k=1:n ¡ ¢  end do # continue end Loop an indefinite number of times while do while — while ¡ ¢  end do — end Terminate and exit loop break exit go to break Skip a cycle of loop continue cycle go to — Display message and abort error() stop stop error Return to invoking function return return return return Conditional array action — where — if Conditional alternate statements else else else else else if elseif elseif elseif Conditional array alternatives — elsewhere — else — — — elseif Conditional case selections switch ¡ ¢  select case if if end select end if end Table 8: Flow Control Statements. Loop M ATLAB C++ Fortran Indexed loop for index=matrix for (init;test;inc)   do index=b,e,i statements statements end statements ¡ end do Pre-test loop while test while (test)   do while (test) statements statements ¡ statements end end do Post-test loop do   do statements ¡ statements while (test) if (test) exit end do Table 9: Basic loop constructs.
  • 8. 8 LIST OF TABLES M ATLAB Fortran C++ if l expression IF (l expression) THEN if (l expression)   true group true group end END IF true group; ¡ IF (l expression) true statement if (l expression) true state- ment; Table 10: IF Constructs. The quantity l expression means a logical expression having a value that is either TRUE of FALSE. The term true statement or true group means that the statement or group of statements, respectively, are executed if the conditional in the if statement evaluates to TRUE. M ATLAB Fortran C++ if l expression1 IF (l expression1) THEN if (l expression1)   true group A true group A if l expression2 IF (l expression2) THEN true group A true group B true group B if (l expression2)   end END IF true group C true group C true group B ¡ end END IF statement group D statement group D true group C ¡ statement group D Table 11: Nested IF Constructs. M ATLAB Fortran C++ if l expression IF (l expression) THEN if (l expression)   true group A true group A else ELSE true group A ¡ false group B false group B end END IF else   false group B ¡ Table 12: Logical IF-ELSE Constructs. M ATLAB Fortran C++ if l expression1 IF (l expression1) THEN if (l expression1)   true group A true group A elseif l expression2 ELSE IF (l expression2) THEN true group A ¡ true group B true group B elseif l expression3 ELSE IF (l expression3) THEN else if (l expression2)   true group C true group C else ELSE true group B ¡ default group D default group D end END IF else if (l expression3)   true group C ¡ else  default group D ¡ Table 13: Logical IF-ELSE-IF Constructs.
  • 9. LIST OF TABLES 9 F90 C++ SELECT CASE (expression) switch (expression)   CASE (value 1) group 1 case value 1 : CASE (value 2) group 1 group 2 break; . . case value 2 : . group 2 CASE (value n) break; group n . CASE DEFAULT . . default group case value n : END SELECT group n break; default: default group ¡ break; Table 14: Case Selection Constructs. F90 Named IF F90Named SELECT name: IF (logical 1) THEN name: SELECT CASE (expression) true group A CASE (value 1) ELSE IF (logical 2) THEN group 1 true group B CASE (value 2) ELSE group 2 default group C CASE DEFAULT ENDIF name default group END SELECT name Table 15: F90 Optional Logic Block Names. Fortran C++ DO 1 ... DO 2 ... for (...) for (...)    ... ... IF (disaster) THEN if (disaster) GO TO 3 go to error END IF ¡¡ ... ... 2 END DO 1 END DO error: 3 next statement Table 16: GO TO Break-out of Nested Loops. This situation can be an exception to the general recom- mendation to avoid GO TO statements.
  • 10. 10 LIST OF TABLES F77 F90 C++ DO 1 I = 1,N DO I = 1,N for (i=1; in; i++)   ... ... IF (skip condi- IF (skip condi- if (skip condition) tion) THEN tion) THEN continue; // to next GO TO 1 CYCLE ! to next I else if ELSE ELSE false group false group false group end END IF END IF ¡ 1 continue END DO Table 17: Skip a Single Loop Cycle. F77 F90 C++ DO 1 I = 1,N DO I = 1,N for (i=1; in; i++)   IF (exit condi- IF (exit condi- tion) THEN tion) THEN if (exit condition) GO TO 2 EXIT ! this do break;// out of loop ELSE ELSE else if false group false group false group END IF END IF end ¡ 1 CONTINUE END DO 2 next statement next statement next statement Table 18: Abort a Single Loop. main: DO ! forever test: DO k=1,k max third: DO m=m max,m min,-1 IF (test condition) THEN CYCLE test ! loop on k END IF END DO third ! loop on m fourth: DO n=n min,n max,2 IF (main condition) THEN EXIT main ! forever loop END DO fourth ! on n END DO test ! over k END DO main next statement Table 19: F90 DOs Named for Control.
  • 11. LIST OF TABLES 11 M ATLAB C++ initialize test initialize test while l expression while (l expression)   true group change test true group end change test ¡ F77 F90 initialize test initialize test # continue do while (l expression) IF (l expression) THEN true group true group change test change test end do go to # END IF Table 20: Looping While a Condition is True. Function M ATLABa C++ Fortran Type program statements main(argc,char **argv)   program main [y1...yn]=f(a1,...,am) type y [end of file] statements type a1,...,type am y = f(a1,I,am); ¡ statements y = f(a1,...,am) call s(a1,...,am) end program subroutine void f subroutine s(a1,...,am) (type a1,...,type am)   type a1,...,type am statements statements ¡ end function function [r1...rn] type f (type a1,...,type am) function f(a1,...,am) =f(a1,...,am) type f   statements ¡ statements type a1,...,type am statements end a Every function or program in M ATLAB must be in separate files. Table 21: Function definitions. In each case, the function being defined is named f and is called with m arguments a1,...,am.
  • 12. 12 LIST OF TABLES One-Input, One-Result Procedures M ATLAB function out = name (in) F90 function name (in) ! name = out function name (in) result (out) C++ name (in, out) Multiple-Input, Multiple-Result Procedures M ATLAB function [inout, out2] = name (in1, in2, inout) F90 subroutine name (in1, in2, inout, out2) C++ name(in1, in2, inout, out2) Table 22: Arguments and return values of subprograms. Global Variable Declaration M ATLAB global list of variables F77 common /set name/ list of variables F90 module set name save type (type tag) :: list of variables end module set name C++ extern list of variables Access to Global Variables M ATLAB global list of variables F77 common /set name/ list of variables F90 use set name, only subset of variables use set name2 list of variables C++ extern list of variables Table 23: Defining and referring to global variables. Action C++ F90 Bitwise AND iand Bitwise exclusive OR ieor   Bitwise exclusive OR ¡ ior Circular bit shift ishftc Clear bit ibclr Combination of bits mvbits Extract bit ibits Logical complement ¢ not Number of bits in integer sizeof bit size Set bit ibset Shift bit left £ ishft Shift bit right ¤ ishft Test on or off btest Transfer bits to integer transfer Table 24: Bit Function Intrinsics.
  • 13. LIST OF TABLES 13 0 NUL 1 SOH 2 STX 3 ETX 4 EOT 5 ENQ 6 ACK 7 BEL 8 BS 9 HT 10 NL 11 VT 12 NP 13 CR 14 SO 15 SI 16 DLE 17 DC1 18 DC2 19 DC3 20 DC4 21 NAK 22 SYN 23 ETB 24 CAN 25 EM 26 SUB 27 ESC 28 FS 29 GS 30 RS 31 US 32 SP 33 ! 34 35 # 36 $ 37 % 38 39 ’ 40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 / 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 56 8 57 9 58 : 59 ; 60 61 = 62 63 ? 64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W 88 X 89 Y 90 Z 91 [ 92 93 ] 94 ˆ 95 _ 96 ‘ 97 a 98 b 99 c 100 d 101 e 102 f 103 g 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w 120 x 121 y 122 z 123 { 124 | 125 } 126 ˜ 127 DEL Table 25: The ACSII Character Set. ACHAR (I) Character number I in ASCII collating set ADJUSTL (STRING) Adjust left ADJUSTR (STRING) Adjust right CHAR (I)   Character I in processor collating set IACHAR (C) Position of C in ASCII collating set ICHAR (C) Position of C in processor collating set INDEX (STRING, SUBSTRING)a Starting position of a substring LEN (STRING) Length of a character entity LEN TRIM (STRING) Length without trailing blanks LGE (STRING A, STRING B) Lexically greater than or equal LGT (STRING A, STRING B) Lexically greater than LLE (STRING A, STRING B) Lexically less than or equal LLT (STRING A, STRING B) Lexically less than REPEAT (STRING, NCOPIES) Repeated concatenation SCAN (STRING, SET)a Scan a string for a character in a set TRIM (STRING) Remove trailing blank characters VERIFY (STRING, SET)a Verify the set of characters in a string STRING A//STRING B Concatenate two strings a Optional arguments not shown. Table 26: F90 Character Functions. Action ASCII Character F90 Inputa C++ Input¡ Alert (Bell) 7 Ctrl-G a ¡ Backspace 8 Ctrl-H b ¡ Carriage Return 13 Ctrl-M r End of Transmission 4 Ctrl-D Ctrl-D ¡ Form Feed 12 Ctrl-L f ¡ Horizontal Tab 9 Ctrl-I t ¡ New Line 10 Ctrl-J n ¡ Vertical Tab 11 Ctrl-K v a “Ctrl-” denotes control action. That is, simultaneous pressing of the CONTROL key and the letter following. Table 27: How to type non-printing characters.
  • 14. 14 LIST OF TABLES C, C++ Variable.component.sub component F90 Variable%component%sub component Table 28: Referencing Structure Components. C, C++ struct data tag   intrinsic type 1 component names; ¡ intrinsic type 2 component names; ; F90 type data tag intrinsic type 1 :: component names; intrinsic type 2 :: component names; end type data tag Table 29: Defining New Types of Data Structure. C, C++ struct data tag   intrinsic type 1 component names; ¡ struct tag 2 component names; ; F90 type data tag intrinsic type :: component names; type (tag 2) :: component names; end type data tag Table 30: Nested Data Structure Definitions. C, C++ struct data tag variable list; /* Definition */   ¡ struct data tag variable = component values ; /* Initializa- tion */ variable.component.sub component = value; /* Assignment */ F90 type (data tag) :: variable list ! Definition variable = data tag (component values) ! Initialization variable%component%sub component = value ! Assignment Table 31: Declaring, initializing, and assigning components of user-defined datatypes.
  • 15. LIST OF TABLES 15 INTEGER, PARAMETER :: j max = 6 TYPE meaning demo INTEGER, PARAMETER :: k max = 9, word = 15 CHARACTER (LEN = word) :: name(k max) END TYPE meaning demo TYPE (meaning demo) derived(j max) Construct Interpretation derived All components of all derived’s elements ¤¢  £ ¡ derived(j) All components of element of derived ¦¥  £ ¡ derived(j)%name All k max components of name within element of derived derived%name(k) Component k of the name array for all elements of derived ¦¥  £ ¡ derived(j)%name(k) Component k of the name array of element of derived Table 32: F90 Derived Type Component Interpretation. C++ F90 Declaration type tag *pointer name; type (type tag), pointer :: pointer name Target target name type (type tag), target :: target name Examples char *cp, c; character, pointer :: cp int *ip, i; integer, pointer :: ip float *fp, f; real, pointer :: fp cp = c; cp = c § ip = i; ip = i § fp = f; fp = f § Table 33: Definition of pointers and accessing their targets. C, C++ pointer name = NULL F90 nullify (list of pointer names) F95 pointer name = NULL() Table 34: Nullifing a Pointer to Break Association with Target. Purpose F90 M ATLAB Form subscripts () () Separates subscripts elements , , Generates elements subscripts : : Separate commands ; ; Forms arrays (/ /) [] Continue to new line ... Indicate comment ! % Suppress printing default ; Table 35: Special Array Characters.
  • 16. 16 Description Equation Fortran90 Operator Matlab Operator Original Sizes Result Size ¤ ¤ § § £ £ £   ¢   ¢   ¢ ¥ ¦¤ ¡ ¡ ¡ ¨ ©§ ¨ ©§ Scalar plus scalar ¤ ¤ § £ £ £   ¢   ¢ ¥ ¦¤ ¡ ¡ ¡   ¢ ¨ ¨ ©§ ¨ Element plus scalar and ¤ £ £ £   ¢   ¢ ¥ ¦¤ ¡ ¡ ¡   ¢ ¤ ¨ ¨ ¨ Element plus element and ¤ ¤ § §   ¢   ¢   ¢ ¥ ¦¤ ¡ ¡ ¡ ¨ ©§ ¨ ©§ Scalar times scalar ¤ ¤ §   ¢   ¢ ¥ ¤ ¡ ¡ ¡   ¢ ¨ ¨ ©§ ¨ Element times scalar and ¤   ¢   ¢ ¥ ¦¤ ¡ ¡ ¡   ¢ ¤ ¨ ¨ ¨ Element times element . and ¤ ¤ § §   ¢   ¢   ¢ ¥ ¦¤ ¡ ¡ ¡ ¨ ©§ ¨ ©§ Scalar divide scalar ¤ ¤ §   ¢   ¢ ¥ ¦¤ ¡ ¡ ¡   ¢ ¨ ¨ ©§ ¨ Scalar divide element and ¤   ¢   ¥ ¦¤ ¡ ¡ ¡   ¢ ¤ ¢ ¨ ¨ ¨ Element divide element and ! ¤ § §   ¢   ¢   ¢ ¥ ¦¤ ¡ ¡ ¡ ¨ ©§ ¨ ©§ Scalar power scalar ! ¤ §   ¢   ¢ ¥ ¦¤ ¡ ¡ ¡   ¢ ¨ ¨ ©§ ¨ Element power scalar and # %$! ¤   ¢   ¢ ¥ ¦¤ ¡ ¡ ¡   ¢ ¨ ¨ ¨ Element power element . and 6 7 ' ' 4 25 )( 10 32 ¥ 8 ¡ ¡ ¡ ' ¨ ¨ Matrix transpose A 6 7 ' ' E B B ( 0 C CD F ¥ B ¡ ¡ ¡ 9 @ 9 ' ¨ ¨ ¨ F ¨ Matrix times matrix and A 6 7 6 ' ' B B B § § §     D2 C   D2 C ¥ 7 ¡ ¡ ¡ G' ¨ ¨ ¨ ©§ Vector dot vector 6 and 7 ' ' H B B § § § ( ( 4 4 I   3 ) D H   ¥ 8 ¡ ¡ ¨ ¨ ¨ ¨ ©§ and Table 36: Array Operations in Programming Constructs. Lower case letters denote scalars or scalar elements of arrays. Matlab arrays are allowed a maximum of two subscripts while Fortran allows seven. Upper case letters denote matrices or scalar elements of matrices. LIST OF TABLES
  • 17. LIST OF TABLES 17 Table 37: Equivalent Fortran90 and M ATLAB Intrinsic Functions. The following KEY symbols are utilized to denote the TYPE of the in- trinsic function, or subroutine, and its arguments: A-complex, integer, or real; I-integer; L-logical; M-mask (logical); R-real; X-real; Y-real; V-vector (rank 1 array); and Z-complex. Optional arguments are not shown. Fortran90 and M ATLAB also have very similar array operations and colon operators. Type Fortran90 M ATLAB Brief Description A ABS(A) abs(a) Absolute value of A. R ACOS(X) acos(x) Arc cosine function of real X. R AIMAG(Z) imag(z) Imaginary part of complex number. R AINT(X) real(fix(x)) Truncate X to a real whole number. L ALL(M) all(m) True if all mask elements, M, are true. R ANINT(X) real(round(x)) Real whole number nearest to X. L ANY(M) any(m) True if any mask element, M, is true. R ASIN(X) asin(x) Arcsine function of real X. R ATAN(X) atan(x) Arctangent function of real X. R ATAN2(Y,X) atan2(y,x) Arctangent for complex number(X, Y). I CEILING(X) ceil(x) Least integer = real X. £ Z CMPLX(X,Y) (x+yi) Convert real(s) to complex type. Z CONJG(Z) conj(z) Conjugate of complex number Z. R COS(R Z) cos(r z) Cosine of real or complex argument. R COSH(X) cosh(x) Hyperbolic cosine function of real X. I COUNT(M) sum(m==1) Number of true mask, M, elements. R,L DOT PRODUCT(X,Y) x’ y   Dot product of vectors X and Y. R R,Z EPSILON(X) EXP(R Z) eps exp(r z) Number, like X, ¢ . £¡ Exponential of real or complex number. I FLOOR(X) floor Greatest integer X. ¡ R HUGE(X) realmax Largest number like X. I INT(A) fix(a) Convert A to integer type. R LOG(R Z) log(r z) Logarithm of real or complex number. R LOG10(X) log10(x) Base 10 logarithm function of real X. R MATMUL(X,Y)   x y Conformable matrix multiplication, X*Y. I,V I=MAXLOC(X) [y,i]=max(x) Location(s) of maximum array element. R Y=MAXVAL(X) y=max(x) Value of maximum array element. I,V I=MINLOC(X) [y,i]=min(x) Location(s) of minimum array element. R Y=MINVAL(X) y=min(x) Value of minimum array element. I NINT(X) round(x) Integer nearest to real X. A PRODUCT(A) prod(a) Product of array elements. call call RANDOM NUMBER(X) RANDOM SEED x=rand rand(’seed’) Pseudo-random numbers in ©¢¨¦¥¤ . Initialize random number generator. § R REAL (A) real(a) Convert A to real type. R I,V RESHAPE(X, (/ I, I2 /)) SHAPE(X) reshape(x, i, i2) size(x) Reshape array X into I I2 array. Array (or scalar) shape vector. R SIGN(X,Y) Absolute value of X times sign of Y. R SIGN(0.5,X)-SIGN(0.5,-X) sign(x) Signum, normalized sign, –1, 0, or 1. R,Z SIN(R Z) sin(r z) Sine of real or complex number. R SINH(X) sinh(x) Hyperbolic sine function of real X. I SIZE(X) length(x) Total number of elements in array X. R,Z SQRT(R Z) sqrt(r z) Square root, of real or complex number. R SUM(X) sum(x) Sum of array elements. (continued)
  • 18. 18 LIST OF TABLES Type Fortran90 M ATLAB Brief Description R TAN(X) tan(x) Tangent function of real X. R TANH(X) tanh(x) Hyperbolic tangent function of real X. R TINY(X) realmin Smallest positive number like X. R TRANSPOSE(X) x’ Matrix transpose of any type matrix. R X=1 x=ones(length(x)) Set all elements to 1. R X=0 x=zero(length(x)) Set all elements to 0. For more detailed descriptions and example uses of these intrinsic functions see Adams, J.C., et al., Fortran 90 Handbook, McGraw-Hill, New York, 1992, ISBN 0–07–000406–4. C++ – int – – floor ceil F90 aint int anint nint floor ceiling M ATLAB real (fix) fix real (round) round floor ceil Argument Value of Result –2.000 –2.0 –2 –2.0 –2 –2 –2 –1.999 –1.0 –1 –2.0 –2 –2 –1 –1.500 –1.0 –1 –2.0 –2 –2 –1 –1.499 –1.0 –1 –1.0 –1 –2 –1 –1.000 –1.0 –1 –1.0 –1 –1 –1 –0.999 0.0 0 –1.0 –1 –1 0 –0.500 0.0 0 –1.0 –1 –1 0 –0.499 0.0 0 0.0 0 1 0 0.000 0.0 0 0.0 0 0 0 0.499 0.0 0 0.0 0 0 1 0.500 0.0 0 1.0 1 0 1 0.999 0.0 0 1.0 1 0 1 1.000 1.0 1 1.0 1 1 1 1.499 1.0 1 1.0 1 1 2 1.500 1.0 1 2.0 2 1 2 1.999 1.0 1 2.0 2 1 2 2.000 2.0 2 2.0 2 2 2 Table 38: Truncating Numbers. WHERE (logical array expression) true array assignments ELSEWHERE false array assignments END WHERE WHERE (logical array expression) true array assignment Table 39: F90 WHERE Constructs.
  • 19. LIST OF TABLES 19 Function Description Opt Example all Find if all values are true, for a fixed di- d all(B = A, DIM = 1) mension. (true, false, false) any Find if any value is true, for a fixed di- d any (B § 2, DIM = 1) mension. (false, true, true) count Count number of true elements for a d count(A = B, DIM = 2) fixed dimension. (1, 2) maxloc Locate first element with maximum m maxloc(A, A   9) value given by mask. (2, 3) maxval Max element, for fixed dimension, given b maxval (B, DIM=1, B § 0) by mask. (2, 4, 6) ££¥¥ ¡ merge Pick true array, A, or false array, B, ac- – merge(A, B, L) cording to mask, L. © ¤£¢§ ¨ ¦ minloc Locate first element with minimum value m minloc(A, A § 3) given by mask. (2, 2) minval Min element, for fixed dimension, given b minval(B, DIM = 2) by mask. (1, 2) pack Pack array, A, into a vector under control v pack(A, B   4) of mask. (0, 7, 3) product Product of all elements, for fixed dimen- b product(B) ; (720) sion, controlled by mask. product(B, DIM = 1, T) (2, 12, 30) sum Sum all elements, for fixed dimension, b sum(B) ;(21) controlled by mask. sum(B, DIM = 2, T) (9, 12) £¢§¡ © ¨ ¦ ¥ unpack Replace the true locations in array B con- – unpack(U, L, B) trolled by mask L with elements from the vector U. § ¨ § ¤ %§ © $$ #¡ § © £¢¥ ¡ § © ££¥ ¡ $ ! ¤£¢§ ¤£¢¦ ¦ ¨ $ Table 40: F90 Array Operators with Logic Mask Control. and denote true and false, respectively. Optional arguments: b -- DIM MASK, d -- DIM, m -- MASK, v -- VECTOR and DIM = 1 implies for any rows, DIM = 2 for any columns, and DIM = 3 for any plane.
  • 20. 20 LIST OF TABLES M ATLAB C++ F90 a Pre-allocate A(100)=0 int A[100]; integer A(100) linear array Initialize to a for j=1:100 % slow for (j=0; j100; j++) A=12 constant value of A(j)=12 A[j]=12; end 12 % better way A=12*ones(1,100) Pre-allocate A=ones(10,10) int A[10][10]; integer A(10,10) two-dimensional array a C++ has a starting subscript of 0, but the argument in the allocation statement is the array’s size. Table 41: Array initialization constructs. Action M ATLAB C++ F90 a Define A=zeros(2,3) int A[2][3]; integer,dimension(2,3)::A size Enter A=[1,7,-2; int A[2][3]=    ¡¡   A(1,:)=(/1,7,-2/) rows 3, 4, 6]; 1,7,2 , A(2,:)=(/3,4,6/) 3,4,6 ¡; a Optional in M ATLAB , but improves efficiency. Table 42: Array initialization constructs. M ATLAB C++ F90 Addition ¦¤¢   ¥ £ ¡ C=A+B for (i=0; i10; i++) for (j=0; j10; j++)     C=A+B C[i][j]=A[i][j]+B[i][j]; ¡ ¡ Multiplication §¢   ¥ ¡ C=A*B for (i=0; i10; i++) for (j=0; j10; j++)     C=matmul(A,B) C[i][j] = 0;   for (k=0; k10; k++) C[i][j] += A[i][k]*B[k][j]; ¡ ¡ ¡ Scalar   multiplication ©¢   ¥¨ C=a*B for (i=0; i10; i++)   C=a*B for (j=0; j 10; j++) C[i][j] = a*B[i][j]; ¡ ¡ Matrix inverse ¥ ¡ B=inv(A) a B=inv(A)a a Neither C++ nor F90 have matrix inverse functions as part of their language definitions nor as part of standard collections of mathematical functions (like those listed in Table 7). Instead, a special function, usually drawn from a library of numerical functions, or a user defined operation, must be used. Table 43: Elementary matrix computational routines.
  • 21. LIST OF TABLES 21 C++ int* point, vector, matrix ... point = new type tag vector = new type tag [space 1]   ¡ if (vector == 0) error process matrix = new type tag [space 1 * space 2] ... delete matrix ... delete vector delete point F90 type tag, pointer, allocatable :: point type tag, allocatable :: vector (:), matrix (:,:) ... allocate (point) allocate (vector (space 1), STAT = my int) if (my int /= 0) error process allocate (matrix (space 1, space 2)) ... deallocate (matrix) if (associated (point, target name)) pointer action... if (allocated (matrix)) matrix action... ... deallocate (vector) deallocate (point) Table 44: Dynamic allocation of arrays and pointers. SUBROUTINE AUTO ARRAYS (M,N, OTHER) USE GLOBAL CONSTANTS ! FOR INTEGER K IMPLICIT NONE INTEGER, INTENT (IN) :: M,N type tag, INTENT (OUT) :: OTHER (M,N) ! dummy array ! Automatic array allocations type tag :: FROM USE (K) type tag :: FROM ARG (M) type tag :: FROM MIX (K,N) ... ! Automatic deallocation at end of scope END SUBROUTINE AUTO ARRAYS Table 45: Automatic memory management of local scope arrays. module derived class name use base class name ! new attribute declarations, if any ... contains ! new member definitions ... end module derived class name Table 46: F90 Single Inheritance Form.
  • 22. 22 LIST OF TABLES module derived class name use base class name, only: list of entities ! new attribute declarations, if any ... contains ! new member definitions ... end module derived class name Table 47: F90 Selective Single Inheritance Form. module derived class name use base class name, local name = £ base entity name ! new attribute declarations, if any ... contains ! new member definitions ... end module derived class name Table 48: F90 Single Inheritance Form, with Local Renaming. module derived class name use base1 class name use base2 class name use base3 class name, only: list of entities use base4 class name, local name = base entity name £ ! new attribute declarations, if any ... contains ! new member definitions ... end module derived class name Table 49: F90 Multiple Selective Inheritance with Renaming.