6.3.1.2 Using Intrinsic Function Names

Example 6-1 shows the different ways to use intrinsic function names. In this annotated example, a single executable program uses the name SIN in four distinct ways:

Using the name in these four ways emphasizes the local and global properties of the name.

Example 6-1 Using and Redefining an Intrinsic Function Name

   C     Compare ways of computing sine

         PROGRAM SINES
         REAL*8 X, PI
         PARAMETER (PI=3.141592653589793238D0)
         COMMON V(3)

    C    Define SIN as a statement function 

         SIN(X) = COS(PI/2-X)
         DO 10 X = -PI, PI, 2*PI/100
         CALL COMPUT(X)

    C    Reference the statement function SIN 

   10    WRITE (6,100) X, V, SIN(X)
   100   FORMAT (5F10.7)
         END

         SUBROUTINE COMPUT(Y)
         REAL*8 Y

    C    Use intrinsic function SIN as actual argument 

         INTRINSIC SIN
         COMMON V(3)

    C    Define generic reference to double-precision sine 

         V(1) = SIN(Y)
    C    Use intrinsic function SIN as actual argument 

         CALL SUB(REAL(Y),SIN)
         END

         SUBROUTINE SUB(A,S)

    C    Declare SIN as name of user function 

         EXTERNAL SIN
    C    Declare SIN as type REAL*8 

         REAL*8 SIN
         COMMON V(3)

    C    Evaluate intrinsic function SIN 

         V(2) = S(A)

    C    Evaluate user-defined SIN function 

         V(3) = SIN(A)
         END

   C     Define the user SIN function 

         REAL*8 FUNCTION SIN(X)
         INTEGER FACTOR
         SIN = X - X**3/FACTOR(3) + X**5/FACTOR(5)
        1      - X**7/FACTOR(7)
         END

         INTEGER FUNCTION FACTOR(N)
         FACTOR = 1
         DO 10 I=N,1,-1
   10    FACTOR = FACTOR * I
         END

A statement function named SIN is defined in terms of the generic function name COS. Because the argument of COS is double precision, the double-precision cosine function is evaluated. The statement function SIN is itself single precision.

The statement function SIN is called.

The name SIN is declared intrinsic so that the single-precision intrinsic sine function can be passed as an actual argument at 5.

The generic function name SIN is used to refer to the double-precision sine function.

The single-precision intrinsic sine function is used as an actual argument.

The name SIN is declared a user-defined function name.

The type of SIN is declared double precision.

The single-precision sine function passed at 5 is evaluated.

The user-defined SIN function is evaluated.

The user-defined SIN function is defined as a simple Taylor series using a user-defined function FACTOR to compute the factorial function.


Previous Page Next Page Table of Contents