SYNOPSIS¶
- PROGRAM TEST5
INTEGER NMAX, ITS PARAMETER ( NMAX = 100, ITS = 5000 ) INTEGER I,
J DOUBLE PRECISION ALPHA, AVG, T1, T2, TNOSEC DOUBLE PRECISION X( NMAX ), Y(
NMAX ) DOUBLE PRECISION DSECND EXTERNAL DSECND INTRINSIC DBLE DO 10 I = 1,
NMAX X( I ) = DBLE( 1 ) / DBLE( I ) Y( I ) = DBLE( NMAX-I ) / DBLE( NMAX )
10 CONTINUE ALPHA = 0.315D0 T1 = DSECND( ) DO 30 J = 1, ITS DO 20 I = 1,
NMAX Y( I ) = Y( I ) + ALPHA*X( I ) 20 CONTINUE ALPHA = -ALPHA 30 CONTINUE
T2 = DSECND( ) WRITE( 6, 9999 )T2 - T1 IF( T2-T1.GT.0.0D0 ) THEN WRITE( 6,
9998 )1.0D0 / ( T2-T1 ) ELSE WRITE( 6, 9994 ) END IF TNOSEC = T2 - T1 T1 =
DSECND( ) DO 50 J = 1, ITS DO 40 I = 1, NMAX Y( I ) = Y( I ) + ALPHA*X( I )
40 CONTINUE ALPHA = -ALPHA T2 = DSECND( ) 50 CONTINUE WRITE( 6, 9997 )T2 -
T1 AVG = ( ( T2-T1 )-TNOSEC )*1000.D0 / DBLE( ITS ) WRITE( 6, 9996 )AVG IF(
TNOSEC.GT.0.0D0 ) WRITE( 6, 9995 )1000.D0*AVG / TNOSEC 9999 FORMAT( ' Time
for 1,000,000 DAXPY ops = ', G10.3, ' seconds' ) 9998 FORMAT( ' DAXPY
performance rate = ', G10.3, ' mflops ' ) 9997 FORMAT( ' Including DSECND,
time = ', G10.3, ' seconds' ) 9996 FORMAT( ' Average time for DSECND = ',
G10.3, ' milliseconds' ) 9995 FORMAT( ' Equivalent floating point ops = ',
G10.3, ' ops' ) 9994 FORMAT( ' *** Error: Time for operations was zero' )
CALL MYSUB(NMAX,X,Y) END SUBROUTINE MYSUB(N,X,Y) INTEGER N DOUBLE PRECISION
X(N), Y(N) RETURN END