1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
DOUBLE PRECISION FUNCTION DMFLOP( OPS, TIME, INFO )
*
* -- LAPACK timing routine (version 3.0) --
* Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
* Courant Institute, Argonne National Lab, and Rice University
* March 31, 1993
*
* .. Scalar Arguments ..
INTEGER INFO
DOUBLE PRECISION OPS, TIME
* ..
*
* Purpose
* =======
*
* DMFLOP computes the megaflop rate given the number of operations
* and time in seconds. This is basically just a divide operation,
* but care is taken not to divide by zero.
*
* Arguments
* =========
*
* OPS (input) DOUBLE PRECISION
* The number of floating point operations.
* performed by the timed routine.
*
* TIME (input) DOUBLE PRECISION
* The total time in seconds.
*
* INFO (input) INTEGER
* The return code from the timed routine. If INFO is not 0,
* then DMFLOP returns a negative value, indicating an error.
*
* =====================================================================
*
* .. Parameters ..
DOUBLE PRECISION ZERO
PARAMETER ( ZERO = 0.0D+0 )
* ..
* .. Intrinsic Functions ..
INTRINSIC ABS, DBLE
* ..
* .. Executable Statements ..
*
IF( TIME.LE.ZERO ) THEN
DMFLOP = ZERO
ELSE
DMFLOP = OPS / ( 1.0D6*TIME )
END IF
IF( INFO.NE.0 )
$ DMFLOP = -ABS( DBLE( INFO ) )
RETURN
*
* End of DMFLOP
*
END
|