numeric-linalg
Educational material on the SciPy implementation of numerical linear algebra algorithms
Name | Size | Mode | |
.. | |||
lapack/INSTALL/secondtst.f | 3354B | -rw-r--r-- |
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
*> \brief \b SECONDTST * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \ingroup test_second * * ===================================================================== PROGRAM SECONDTST * * -- LAPACK test routine -- * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * * ===================================================================== * * .. Parameters .. INTEGER NMAX, ITS PARAMETER ( NMAX = 1000, ITS = 50000 ) * .. * .. Local Scalars .. INTEGER I, J REAL ALPHA, AVG, T1, T2, TNOSEC, TOTAL * .. * .. Local Arrays .. REAL X( NMAX ), Y( NMAX ) * .. * .. External Functions .. REAL SECOND EXTERNAL SECOND * .. * .. External Subroutines .. EXTERNAL MYSUB * .. * .. Intrinsic Functions .. INTRINSIC REAL * .. * .. Executable Statements .. * * .. Figure TOTAL flops .. TOTAL = REAL(NMAX) * REAL(ITS) * 2.0 * * Initialize X and Y * DO 10 I = 1, NMAX X( I ) = REAL( 1 ) / REAL( I ) Y( I ) = REAL( NMAX-I ) / REAL( NMAX ) 10 CONTINUE ALPHA = 0.315 * * Time TOTAL SAXPY operations * T1 = SECOND( ) DO 30 J = 1, ITS DO 20 I = 1, NMAX Y( I ) = Y( I ) + ALPHA*X( I ) 20 CONTINUE ALPHA = -ALPHA 30 CONTINUE T2 = SECOND( ) TNOSEC = T2 - T1 WRITE( 6, 9999 )TOTAL, TNOSEC IF( TNOSEC.GT.0.0 ) THEN WRITE( 6, 9998 )(TOTAL/1.0E6)/TNOSEC ELSE WRITE( 6, 9994 ) END IF * * Time TOTAL SAXPY operations with SECOND in the outer loop * T1 = SECOND( ) DO 50 J = 1, ITS DO 40 I = 1, NMAX Y( I ) = Y( I ) + ALPHA*X( I ) 40 CONTINUE ALPHA = -ALPHA T2 = SECOND( ) 50 CONTINUE * * Compute the time used in milliseconds used by an average call * to SECOND. * WRITE( 6, 9997 )T2 - T1 AVG = ( ( T2-T1 ) - TNOSEC ) * 1000.0E+00/REAL( ITS ) IF( AVG.GT.0.0) $ WRITE( 6, 9996 )AVG * * Compute the equivalent number of floating point operations used * by an average call to SECOND. * IF(( AVG.GT.0.0 ).AND.( TNOSEC.GT.0.0 )) $ WRITE( 6, 9995 )(AVG/1000) * TOTAL / TNOSEC * 9999 FORMAT( ' Time for ', G10.3,' SAXPY ops = ', G10.3, ' seconds' ) 9998 FORMAT( ' SAXPY performance rate = ', G10.3, ' mflops ' ) 9997 FORMAT( ' Including SECOND, time = ', G10.3, ' seconds' ) 9996 FORMAT( ' Average time for SECOND = ', G10.3, $ ' milliseconds' ) 9995 FORMAT( ' Equivalent floating point ops = ', G10.3, ' ops' ) 9994 FORMAT( ' *** Warning: Time for operations was less or equal', $ ' than zero => timing in TESTING might be dubious' ) CALL MYSUB(NMAX,X,Y) END SUBROUTINE MYSUB(N,X,Y) INTEGER N REAL X(N), Y(N) RETURN END