LAPACK  3.4.1
LAPACK: Linear Algebra PACKage
dsecndtst.f
Go to the documentation of this file.
00001 *> \brief \b DSECNDTST
00002 *
00003 *  =========== DOCUMENTATION ===========
00004 *
00005 * Online html documentation available at 
00006 *            http://www.netlib.org/lapack/explore-html/ 
00007 *
00008 *  Definition:
00009 *  ===========
00010 *
00011 *      PROGRAM DSECNDTST
00012 *  
00013 *  Authors:
00014 *  ========
00015 *
00016 *> \author Univ. of Tennessee 
00017 *> \author Univ. of California Berkeley 
00018 *> \author Univ. of Colorado Denver 
00019 *> \author NAG Ltd. 
00020 *
00021 *> \date November 2011
00022 *
00023 *> \ingroup auxOTHERauxiliary
00024 *
00025 *  =====================================================================      PROGRAM DSECNDTST
00026 *
00027 *  -- LAPACK test routine (version 3.4.0) --
00028 *
00029 *  -- LAPACK computational routine (version 3.4.0) --
00030 *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
00031 *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
00032 *     November 2011
00033 *
00034 * =====================================================================
00035 *
00036 *     .. Parameters ..
00037       INTEGER            NMAX, ITS
00038       PARAMETER          ( NMAX = 1000, ITS = 50000 )
00039 *     ..
00040 *     .. Local Scalars ..
00041       INTEGER            I, J
00042       DOUBLE PRECISION   ALPHA, AVG, T1, T2, TNOSEC, TOTAL
00043 *     ..
00044 *     .. Local Arrays ..
00045       DOUBLE PRECISION   X( NMAX ), Y( NMAX )
00046 *     ..
00047 *     .. External Functions ..
00048       DOUBLE PRECISION   DSECND
00049       EXTERNAL           DSECND
00050 *     ..
00051 *     .. Intrinsic Functions ..
00052       INTRINSIC          DBLE
00053 *     ..
00054 *     .. Executable Statements ..
00055 *
00056 *    .. Figure TOTAL flops ..
00057       TOTAL = DBLE(NMAX) * DBLE(ITS) * 2.0
00058 *
00059 *     Initialize X and Y
00060 *
00061       DO 10 I = 1, NMAX
00062          X( I ) = DBLE( 1 ) / DBLE( I )
00063          Y( I ) = DBLE( NMAX-I ) / DBLE( NMAX )
00064    10 CONTINUE
00065       ALPHA = 0.315D0
00066 *
00067 *     Time TOTAL SAXPY operations
00068 *
00069       T1 = DSECND( )
00070       DO 30 J = 1, ITS
00071          DO 20 I = 1, NMAX
00072             Y( I ) = Y( I ) + ALPHA*X( I )
00073    20    CONTINUE
00074          ALPHA = -ALPHA
00075    30 CONTINUE
00076       T2 = DSECND( )
00077       TNOSEC = T2 - T1
00078       WRITE( 6, 9999 )TOTAL, TNOSEC
00079       IF( TNOSEC.GT.0.0 ) THEN
00080          WRITE( 6, 9998 )(TOTAL/1.0D6)/TNOSEC
00081       ELSE
00082          WRITE( 6, 9994 )
00083       END IF
00084 *
00085 *     Time TOTAL DAXPY operations with DSECND in the outer loop
00086 *
00087       T1 = DSECND( )
00088       DO 50 J = 1, ITS
00089          DO 40 I = 1, NMAX
00090             Y( I ) = Y( I ) + ALPHA*X( I )
00091    40    CONTINUE
00092          ALPHA = -ALPHA
00093          T2 = DSECND( )
00094    50 CONTINUE
00095 *
00096 *     Compute the time used in milliseconds used by an average call
00097 *     to DSECND.
00098 *
00099       WRITE( 6, 9997 )T2 - T1
00100       AVG = ( ( T2-T1 ) - TNOSEC ) * 1000.0D+00/DBLE( ITS )
00101       IF( AVG.GT.0.0)
00102      $   WRITE( 6, 9996 )AVG
00103 *
00104 *     Compute the equivalent number of floating point operations used
00105 *     by an average call to DSECND.
00106 *
00107       IF(( AVG.GT.0.0 ).AND.( TNOSEC.GT.0.0 ))
00108      $   WRITE( 6, 9995 )(AVG/1000) * TOTAL / TNOSEC
00109 *
00110  9999 FORMAT( ' Time for ', G10.3,' DAXPY ops = ', G10.3, ' seconds' )
00111  9998 FORMAT( ' DAXPY performance rate        = ', G10.3, ' mflops ' )
00112  9997 FORMAT( ' Including DSECND, time        = ', G10.3, ' seconds' )
00113  9996 FORMAT( ' Average time for DSECND       = ', G10.3,
00114      $      ' milliseconds' )
00115  9995 FORMAT( ' Equivalent floating point ops = ', G10.3, ' ops' )
00116  9994 FORMAT( ' *** Warning:  Time for operations was less or equal',
00117      $        ' than zero => timing in TESTING might be dubious' )
00118       CALL MYSUB(NMAX,X,Y)
00119       END
00120       SUBROUTINE MYSUB(N,X,Y)
00121       INTEGER N
00122       DOUBLE PRECISION X(N), Y(N)
00123       RETURN
00124       END
 All Files Functions