| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| PROGRAM DBLAT2 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| INTEGER NIN |
| PARAMETER ( NIN |
| INTEGER |
| PARAMETER |
| DOUBLE |
| PARAMETER |
| INTEGER |
| PARAMETER |
| INTEGER |
| PARAMETER |
| $ NALMAX |
| |
| DOUBLE |
| INTEGER |
| $ NOUT, NTRA |
| LOGICAL |
| $ TSTERR |
| CHARACTER*1 TRANS |
| CHARACTER*6 SNAMET |
| CHARACTER*32 SNAPS, SUMMRY |
| |
| DOUBLE |
| $ ALF( NALMAX |
| $ G( NMAX |
| $ XX( NMAX*INCMAX |
| $ YS( NMAX*INCMAX |
| $ YY( NMAX*INCMAX |
| INTEGER |
| LOGICAL |
| CHARACTER*6 SNAMES( NSUBS |
| |
| DOUBLE |
| LOGICAL |
| EXTERNAL |
| |
| EXTERNAL |
| $ DCHKE, DMVCH |
| |
| INTRINSIC |
| |
| INTEGER |
| LOGICAL |
| CHARACTER*6 SRNAMT |
| |
| COMMON /INFOC/ |
| COMMON /SRNAMC/ |
| |
| DATA /, , , , |
| $ , , , , |
| $ , , , , |
| $ , , , / |
| |
| |
| |
| |
| READ( NIN, FMT |
| READ( NIN, FMT |
| OPEN( NOUT, FILE |
| NOUTC |
| |
| |
| |
| READ( NIN, FMT |
| READ( NIN, FMT |
| TRACE |
| IF( TRACE |
| OPEN( NTRA, FILE |
| END |
| |
| READ( NIN, FMT |
| REWI |
| |
| READ( NIN, FMT |
| |
| READ( NIN, FMT |
| |
| READ( NIN, FMT |
| |
| |
| |
| |
| READ( NIN, FMT |
| IF( NIDIM.LT.1.OR.NIDIM.GT.NIDMAX |
| WRITE( NOUT, FMT |
| GO |
| END |
| READ( NIN, FMT |
| DO |
| IF( IDIM( I |
| WRITE( NOUT, FMT |
| GO |
| END |
| 10 CONTINUE |
| |
| READ( NIN, FMT |
| IF( NKB.LT.1.OR.NKB.GT.NKBMAX |
| WRITE( NOUT, FMT |
| GO |
| END |
| READ( NIN, FMT |
| DO |
| IF( KB( I |
| WRITE( NOUT, FMT |
| GO |
| END |
| 20 CONTINUE |
| |
| READ( NIN, FMT |
| IF( NINC.LT.1.OR.NINC.GT.NINMAX |
| WRITE( NOUT, FMT |
| GO |
| END |
| READ( NIN, FMT |
| DO |
| IF( INC( I |
| WRITE( NOUT, FMT |
| GO |
| END |
| 30 CONTINUE |
| |
| READ( NIN, FMT |
| IF( NALF.LT.1.OR.NALF.GT.NALMAX |
| WRITE( NOUT, FMT |
| GO |
| END |
| READ( NIN, FMT |
| |
| READ( NIN, FMT |
| IF( NBET.LT.1.OR.NBET.GT.NBEMAX |
| WRITE( NOUT, FMT |
| GO |
| END |
| READ( NIN, FMT |
| |
| |
| |
| WRITE( NOUT, FMT |
| WRITE( NOUT, FMT |
| WRITE( NOUT, FMT |
| WRITE( NOUT, FMT |
| WRITE( NOUT, FMT |
| WRITE( NOUT, FMT |
| IF( .NOT.TSTERR |
| WRITE( NOUT, FMT |
| WRITE( NOUT, FMT |
| END |
| WRITE( NOUT, FMT |
| WRITE( NOUT, FMT |
| WRITE( NOUT, FMT |
| |
| |
| |
| |
| DO |
| LTEST( I ) |
| 40 CONTINUE |
| 50 READ( NIN, FMT |
| DO |
| IF( SNAMET.EQ.SNAMES( I ) |
| $ GO |
| 60 CONTINUE |
| WRITE( NOUT, FMT |
| STOP |
| 70 LTEST( I ) |
| GO |
| |
| 80 CONTINUE |
| CLOSE |
| |
| |
| |
| EPS |
| WRITE( NOUT, FMT |
| |
| |
| |
| N |
| DO |
| DO |
| A( I, J ) |
| 110 CONTINUE |
| X( J ) |
| Y( J ) |
| 120 CONTINUE |
| DO |
| YY( J ) /2 - ( ( J + 1 )*J*( J - 1 ) )/ |
| 130 CONTINUE |
| |
| |
| TRANS |
| CALL |
| $ YY, EPS, ERR, FATAL, NOUT, .TRUE. ) |
| SAME |
| IF( .NOT.SAME.OR.ERR.NE.ZERO |
| WRITE( NOUT, FMT |
| STOP |
| END |
| TRANS |
| CALL |
| $ YY, EPS, ERR, FATAL, NOUT, .TRUE. ) |
| SAME |
| IF( .NOT.SAME.OR.ERR.NE.ZERO |
| WRITE( NOUT, FMT |
| STOP |
| END |
| |
| |
| |
| DO |
| WRITE( NOUT, FMT |
| IF( .NOT.LTEST( ISNUM ) |
| |
| WRITE( NOUT, FMT |
| ELSE |
| SRNAMT |
| |
| IF( TSTERR |
| CALL |
| WRITE( NOUT, FMT |
| END |
| |
| INFOT |
| OK |
| FATAL |
| GO |
| $ 160, 160, 160, 160, 170, 180, 180, |
| $ 190, 190 )ISNUM |
| |
| 140 CALL |
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NALF, ALF, |
| $ NBET, BET, NINC, INC, NMAX, INCMAX, A, AA, AS, |
| $ X, XX, XS, Y, YY, YS, YT, G |
| GO |
| |
| 150 CALL |
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NALF, ALF, |
| $ NBET, BET, NINC, INC, NMAX, INCMAX, A, AA, AS, |
| $ X, XX, XS, Y, YY, YS, YT, G |
| GO |
| |
| |
| 160 CALL |
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, |
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z |
| GO |
| |
| 170 CALL |
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, |
| $ NMAX, INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, |
| $ YT, G, Z |
| GO |
| |
| 180 CALL |
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, |
| $ NMAX, INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, |
| $ YT, G, Z |
| GO |
| |
| 190 CALL |
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, |
| $ NMAX, INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, |
| $ YT, G, Z |
| |
| 200 IF( FATAL.AND.SFATAL |
| $ GO |
| END |
| 210 CONTINUE |
| WRITE( NOUT, FMT |
| GO |
| |
| 220 CONTINUE |
| WRITE( NOUT, FMT |
| GO |
| |
| 230 CONTINUE |
| WRITE( NOUT, FMT |
| |
| 240 CONTINUE |
| IF( TRACE |
| $ CLOSE |
| CLOSE |
| STOP |
| |
| 9999 FORMAT( ' ROUTINES PASS COMPUTATIONAL TESTS IF TEST RATIO IS LES', |
| $ 'S THAN', F8.2 ) |
| 9998 FORMAT( ' RELATIVE MACHINE PRECISION IS TAKEN TO BE', 1P, D9.1 ) |
| 9997 FORMAT( ' NUMBER OF VALUES OF ', A, ' IS LESS THAN 1 OR GREATER ', |
| $ 'THAN ', I2 |
| 9996 FORMAT( ' VALUE OF N IS LESS THAN 0 OR GREATER THAN ', I2 |
| 9995 FORMAT( ' VALUE OF K IS LESS THAN 0' ) |
| 9994 FORMAT( ' ABSOLUTE VALUE OF INCX OR INCY IS 0 OR GREATER THAN ', |
| $ I2 |
| 9993 FORMAT( ' TESTS OF THE DOUBLE PRECISION LEVEL 2 BLAS', |
| $ 'OLLOWING PARAMETER VALUES WILL BE USED:' ) |
| 9992 FORMAT( ' FOR N ', 9I6 |
| 9991 FORMAT( ' FOR K ', 7I6 |
| 9990 FORMAT( ' FOR INCX AND INCY ', 7I6 |
| 9989 FORMAT( ' FOR ALPHA ', 7F6.1 ) |
| 9988 FORMAT( ' FOR BETA ', 7F6.1 ) |
| 9987 FORMAT( ' AMEND DATA FILE OR INCREASE ARRAY SIZES IN PROGRAM', |
| $ / ) |
| 9986 FORMAT( , A6, , /' ******* T', |
| $ 'ESTS ABANDONED *******' ) |
| 9985 FORMAT( ' ERROR IN DMVCH - IN-LINE DOT PRODUCTS ARE BEING EVALU', |
| $ 'ATED WRONGLY.', /, A1, |
| $ , L1, , F12.3, , / |
| $ ' THIS MAY BE DUE TO FAULTS IN THE ARITHMETIC OR THE COMPILER.' |
| $ , / ) |
| 9984 FORMAT( A6, L2 ) |
| 9983 FORMAT( 1X, A6, ) |
| 9982 FORMAT( /' END OF TESTS' ) |
| 9981 FORMAT( / ) |
| 9980 FORMAT( ) |
| * |
| * End of DBLAT2. |
| * |
| END |
| SUBROUTINE DCHK1( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI, |
| $ FATAL, NIDIM, IDIM, NKB, KB, NALF, ALF, NBET, |
| $ BET, NINC, INC, NMAX, INCMAX, A, AA, AS, X, XX, |
| $ XS, Y, YY, YS, YT, G ) |
| * |
| * Tests DGEMV and DGBMV. |
| * |
| * Auxiliary routine for test program for Level 2 Blas. |
| * |
| * -- Written on 10-August-1987. |
| * Richard Hanson, Sandia National Labs. |
| * Jeremy Du Croz, NAG Central Office. |
| * |
| * .. Parameters .. |
| DOUBLE PRECISION ZERO, HALF |
| PARAMETER ( ZERO = 0.0D0, HALF = 0.5D0 ) |
| * .. Scalar Arguments .. |
| DOUBLE PRECISION EPS, THRESH |
| INTEGER INCMAX, NALF, NBET, NIDIM, NINC, NKB, NMAX, |
| $ NOUT, NTRA |
| LOGICAL FATAL, REWI, TRACE |
| CHARACTER*6 SNAME |
| * .. Array Arguments .. |
| DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), |
| $ AS( NMAX*NMAX ), BET( NBET ), G( NMAX ), |
| $ X( NMAX ), XS( NMAX*INCMAX ), |
| $ XX( NMAX*INCMAX ), Y( NMAX ), |
| $ YS( NMAX*INCMAX ), YT( NMAX ), |
| $ YY( NMAX*INCMAX ) |
| INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB ) |
| * .. Local Scalars .. |
| DOUBLE PRECISION ALPHA, ALS, BETA, BLS, ERR, ERRMAX, TRANSL |
| INTEGER I, IA, IB, IC, IKU, IM, IN, INCX, INCXS, INCY, |
| $ INCYS, IX, IY, KL, KLS, KU, KUS, LAA, LDA, |
| $ LDAS, LX, LY, M, ML, MS, N, NARGS, NC, ND, NK, |
| $ NL, NS |
| LOGICAL BANDED, FULL, NULL, RESET, SAME, TRAN |
| CHARACTER*1 TRANS, TRANSS |
| CHARACTER*3 ICH |
| * .. Local Arrays .. |
| LOGICAL ISAME( 13 ) |
| * .. External Functions .. |
| LOGICAL LDE, LDERES |
| EXTERNAL LDE, LDERES |
| * .. External Subroutines .. |
| EXTERNAL DGBMV, DGEMV, DMAKE, DMVCH |
| * .. Intrinsic Functions .. |
| INTRINSIC ABS, MAX, MIN |
| * .. Scalars in Common .. |
| INTEGER INFOT, NOUTC |
| LOGICAL LERR, OK |
| * .. Common blocks .. |
| COMMON /INFOC/INFOT, NOUTC, OK, LERR |
| * .. Data statements .. |
| DATA ICH/'NTC'/ |
| * .. Executable Statements .. |
| FULL = SNAME( 3: 3 ).EQ. |
| BANDED = SNAME( 3: 3 ).EQ. |
| * Define the number of arguments. |
| IF( FULL )THEN |
| NARGS = 11 |
| ELSE IF( BANDED )THEN |
| NARGS = 13 |
| END IF |
| * |
| NC = 0 |
| RESET = .TRUE. |
| ERRMAX = ZERO |
| * |
| DO 120 IN = 1, NIDIM |
| N = IDIM( IN ) |
| ND = N/2 + 1 |
| |
| DO |
| IF( IM.EQ.1 ) |
| $ M |
| IF( IM.EQ.2 ) |
| $ M |
| |
| IF( BANDED |
| NK |
| ELSE |
| NK |
| END |
| DO |
| IF( BANDED |
| KU |
| KL |
| ELSE |
| KU |
| KL |
| END |
| |
| IF( BANDED |
| LDA |
| ELSE |
| LDA |
| END |
| IF( LDA.LT.NMAX |
| $ LDA |
| |
| IF( LDA.GT.NMAX |
| $ GO |
| LAA |
| NULL |
| |
| |
| |
| TRANSL |
| CALL |
| $ LDA, KL, KU, RESET, TRANSL |
| |
| DO |
| TRANS |
| TRAN |
| |
| IF( TRAN |
| ML |
| NL |
| ELSE |
| ML |
| NL |
| END |
| |
| DO |
| INCX |
| LX |
| |
| |
| |
| TRANSL |
| CALL |
| $ ABS( INCX |
| IF( NL.GT.1 )THEN |
| X( NL/2 ) = ZERO |
| XX( 1 + ABS( INCX )*( NL/2 - 1 ) ) = ZERO |
| END |
| |
| DO |
| INCY |
| LY |
| |
| DO |
| ALPHA |
| |
| DO |
| BETA |
| |
| |
| |
| TRANSL |
| CALL |
| $ YY, ABS( INCY |
| $ RESET, TRANSL |
| |
| NC |
| |
| |
| |
| |
| TRANSS |
| MS |
| NS |
| KLS |
| KUS |
| ALS |
| DO |
| AS( I ) |
| 10 CONTINUE |
| LDAS |
| DO |
| XS( I ) |
| 20 CONTINUE |
| INCXS |
| BLS |
| DO |
| YS( I ) |
| 30 CONTINUE |
| INCYS |
| |
| |
| |
| IF( FULL |
| IF( TRACE |
| $ WRITE( NTRA, FMT |
| $ TRANS, M, N, ALPHA, LDA, INCX, BETA, |
| $ INCY |
| IF( REWI |
| $ REWIND |
| CALL |
| $ LDA, XX, INCX, BETA, YY, |
| $ INCY |
| ELSE |
| IF( TRACE |
| $ WRITE( NTRA, FMT |
| $ TRANS, M, N, KL, KU, ALPHA, LDA, |
| $ INCX, BETA, INCY |
| IF( REWI |
| $ REWIND |
| CALL |
| $ AA, LDA, XX, INCX, BETA, |
| $ YY, INCY |
| END |
| |
| |
| |
| IF( .NOT.OK |
| WRITE( NOUT, FMT |
| FATAL |
| GO |
| END |
| |
| |
| |
| ISAME( 1 ) |
| ISAME( 2 ) |
| ISAME( 3 ) |
| IF( FULL |
| ISAME( 4 ) |
| ISAME( 5 ) |
| ISAME( 6 ) |
| ISAME( 7 ) |
| ISAME( 8 ) |
| ISAME( 9 ) |
| IF( NULL |
| ISAME( 10 ) |
| ELSE |
| ISAME( 10 ) |
| $ ML, YS, YY, |
| $ ABS( INCY ) |
| END |
| ISAME( 11 ) |
| ELSE |
| ISAME( 4 ) |
| ISAME( 5 ) |
| ISAME( 6 ) |
| ISAME( 7 ) |
| ISAME( 8 ) |
| ISAME( 9 ) |
| ISAME( 10 ) |
| ISAME( 11 ) |
| IF( NULL |
| ISAME( 12 ) |
| ELSE |
| ISAME( 12 ) |
| $ ML, YS, YY, |
| $ ABS( INCY ) |
| END |
| ISAME( 13 ) |
| END |
| |
| |
| |
| |
| SAME |
| DO |
| SAME |
| IF( .NOT.ISAME( I ) |
| $ WRITE( NOUT, FMT |
| 40 CONTINUE |
| IF( .NOT.SAME |
| FATAL |
| GO |
| END |
| |
| IF( .NOT.NULL |
| |
| |
| |
| CALL |
| $ NMAX, X, INCX, BETA, Y, |
| $ INCY, YT, G, YY, EPS, ERR, |
| $ FATAL, NOUT, .TRUE. ) |
| ERRMAX |
| |
| |
| IF( FATAL |
| $ GO |
| ELSE |
| |
| |
| GO |
| END |
| |
| 50 CONTINUE |
| |
| 60 CONTINUE |
| |
| 70 CONTINUE |
| |
| 80 CONTINUE |
| |
| 90 CONTINUE |
| |
| 100 CONTINUE |
| |
| 110 CONTINUE |
| |
| 120 CONTINUE |
| |
| |
| |
| IF( ERRMAX.LT.THRESH |
| WRITE( NOUT, FMT |
| ELSE |
| WRITE( NOUT, FMT |
| END |
| GO |
| |
| 130 CONTINUE |
| WRITE( NOUT, FMT |
| IF( FULL |
| WRITE( NOUT, FMT |
| $ INCX, BETA, INCY |
| ELSE |
| WRITE( NOUT, FMT |
| $ ALPHA, LDA, INCX, BETA, INCY |
| END |
| |
| 140 CONTINUE |
| RETURN |
| |
| 9999 FORMAT( ' ', A6, ' PASSED THE COMPUTATIONAL TESTS (', I6, ' CALL', |
| $ 'S)' ) |
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', |
| $ 'ANGED INCORRECTLY *******' ) |
| 9997 FORMAT( ' ', A6, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', |
| $ 'ALLS)', /, F8.2, |
| $ ) |
| 9996 FORMAT( , A6, ) |
| 9995 FORMAT( 1X, I6, , A6, , A1, , 4( I3, ), F4.1, |
| $ , I3, , I2, , F4.1, , I2, ) |
| 9994 FORMAT( 1X, I6, , A6, , A1, , 2( I3, ), F4.1, |
| $ , I3, , I2, , F4.1, , I2, |
| $ ) |
| 9993 FORMAT( , |
| $ ) |
| * |
| * End of DCHK1. |
| * |
| END |
| SUBROUTINE DCHK2( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI, |
| $ FATAL, NIDIM, IDIM, NKB, KB, NALF, ALF, NBET, |
| $ BET, NINC, INC, NMAX, INCMAX, A, AA, AS, X, XX, |
| $ XS, Y, YY, YS, YT, G ) |
| * |
| * Tests DSYMV, DSBMV and DSPMV. |
| * |
| * Auxiliary routine for test program for Level 2 Blas. |
| * |
| * -- Written on 10-August-1987. |
| * Richard Hanson, Sandia National Labs. |
| * Jeremy Du Croz, NAG Central Office. |
| * |
| * .. Parameters .. |
| DOUBLE PRECISION ZERO, HALF |
| PARAMETER ( ZERO = 0.0D0, HALF = 0.5D0 ) |
| * .. Scalar Arguments .. |
| DOUBLE PRECISION EPS, THRESH |
| INTEGER INCMAX, NALF, NBET, NIDIM, NINC, NKB, NMAX, |
| $ NOUT, NTRA |
| LOGICAL FATAL, REWI, TRACE |
| CHARACTER*6 SNAME |
| * .. Array Arguments .. |
| DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), |
| $ AS( NMAX*NMAX ), BET( NBET ), G( NMAX ), |
| $ X( NMAX ), XS( NMAX*INCMAX ), |
| $ XX( NMAX*INCMAX ), Y( NMAX ), |
| $ YS( NMAX*INCMAX ), YT( NMAX ), |
| $ YY( NMAX*INCMAX ) |
| INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB ) |
| * .. Local Scalars .. |
| DOUBLE PRECISION ALPHA, ALS, BETA, BLS, ERR, ERRMAX, TRANSL |
| INTEGER I, IA, IB, IC, IK, IN, INCX, INCXS, INCY, |
| $ INCYS, IX, IY, K, KS, LAA, LDA, LDAS, LX, LY, |
| $ N, NARGS, NC, NK, NS |
| LOGICAL BANDED, FULL, NULL, PACKED, RESET, SAME |
| CHARACTER*1 UPLO, UPLOS |
| CHARACTER*2 ICH |
| * .. Local Arrays .. |
| LOGICAL ISAME( 13 ) |
| * .. External Functions .. |
| LOGICAL LDE, LDERES |
| EXTERNAL LDE, LDERES |
| * .. External Subroutines .. |
| EXTERNAL DMAKE, DMVCH, DSBMV, DSPMV, DSYMV |
| * .. Intrinsic Functions .. |
| INTRINSIC ABS, MAX |
| * .. Scalars in Common .. |
| INTEGER INFOT, NOUTC |
| LOGICAL LERR, OK |
| * .. Common blocks .. |
| COMMON /INFOC/INFOT, NOUTC, OK, LERR |
| * .. Data statements .. |
| DATA ICH/'UL'/ |
| * .. Executable Statements .. |
| FULL = SNAME( 3: 3 ).EQ. |
| BANDED = SNAME( 3: 3 ).EQ. |
| PACKED = SNAME( 3: 3 ).EQ. |
| * Define the number of arguments. |
| IF( FULL )THEN |
| NARGS = 10 |
| ELSE IF( BANDED )THEN |
| NARGS = 11 |
| ELSE IF( PACKED )THEN |
| NARGS = 9 |
| END IF |
| * |
| NC = 0 |
| RESET = .TRUE. |
| ERRMAX = ZERO |
| * |
| DO 110 IN = 1, NIDIM |
| N = IDIM( IN ) |
| * |
| IF( BANDED )THEN |
| NK = NKB |
| ELSE |
| NK = 1 |
| END IF |
| DO 100 IK = 1, NK |
| IF( BANDED )THEN |
| K = KB( IK ) |
| ELSE |
| K = N - 1 |
| END IF |
| * Set LDA to 1 more than minimum value if room. |
| IF( BANDED )THEN |
| LDA = K + 1 |
| ELSE |
| LDA = N |
| END IF |
| IF( LDA.LT.NMAX ) |
| $ LDA = LDA + 1 |
| * Skip tests if not enough room. |
| IF( LDA.GT.NMAX ) |
| $ GO TO 100 |
| IF( PACKED )THEN |
| LAA = ( N*( N + 1 ) )/2 |
| ELSE |
| LAA |
| END |
| NULL |
| |
| DO |
| UPLO |
| |
| |
| |
| TRANSL |
| CALL |
| $ LDA, K, K, RESET, TRANSL |
| |
| DO |
| INCX |
| LX |
| |
| |
| |
| TRANSL |
| CALL |
| $ ABS( INCX |
| IF( N.GT.1 )THEN |
| X( N/2 ) = ZERO |
| XX( 1 + ABS( INCX )*( N/2 - 1 ) ) = ZERO |
| END |
| |
| DO |
| INCY |
| LY |
| |
| DO |
| ALPHA |
| |
| DO |
| BETA |
| |
| |
| |
| TRANSL |
| CALL |
| $ ABS( INCY |
| $ TRANSL |
| |
| NC |
| |
| |
| |
| |
| UPLOS |
| NS |
| KS |
| ALS |
| DO |
| AS( I ) |
| 10 CONTINUE |
| LDAS |
| DO |
| XS( I ) |
| 20 CONTINUE |
| INCXS |
| BLS |
| DO |
| YS( I ) |
| 30 CONTINUE |
| INCYS |
| |
| |
| |
| IF( FULL |
| IF( TRACE |
| $ WRITE( NTRA, FMT |
| $ UPLO, N, ALPHA, LDA, INCX, BETA, INCY |
| IF( REWI |
| $ REWIND |
| CALL |
| $ INCX, BETA, YY, INCY |
| ELSE |
| IF( TRACE |
| $ WRITE( NTRA, FMT |
| $ UPLO, N, K, ALPHA, LDA, INCX, BETA, |
| $ INCY |
| IF( REWI |
| $ REWIND |
| CALL |
| $ XX, INCX, BETA, YY, INCY |
| ELSE |
| IF( TRACE |
| $ WRITE( NTRA, FMT |
| $ UPLO, N, ALPHA, INCX, BETA, INCY |
| IF( REWI |
| $ REWIND |
| CALL |
| $ BETA, YY, INCY |
| END |
| |
| |
| |
| IF( .NOT.OK |
| WRITE( NOUT, FMT |
| FATAL |
| GO |
| END |
| |
| |
| |
| ISAME( 1 ) |
| ISAME( 2 ) |
| IF( FULL |
| ISAME( 3 ) |
| ISAME( 4 ) |
| ISAME( 5 ) |
| ISAME( 6 ) |
| ISAME( 7 ) |
| ISAME( 8 ) |
| IF( NULL |
| ISAME( 9 ) |
| ELSE |
| ISAME( 9 ) |
| $ YS, YY, ABS( INCY ) |
| END |
| ISAME( 10 ) |
| ELSE |
| ISAME( 3 ) |
| ISAME( 4 ) |
| ISAME( 5 ) |
| ISAME( 6 ) |
| ISAME( 7 ) |
| ISAME( 8 ) |
| ISAME( 9 ) |
| IF( NULL |
| ISAME( 10 ) |
| ELSE |
| ISAME( 10 ) |
| $ YS, YY, ABS( INCY ) |
| END |
| ISAME( 11 ) |
| ELSE |
| ISAME( 3 ) |
| ISAME( 4 ) |
| ISAME( 5 ) |
| ISAME( 6 ) |
| ISAME( 7 ) |
| IF( NULL |
| ISAME( 8 ) |
| ELSE |
| ISAME( 8 ) |
| $ YS, YY, ABS( INCY ) |
| END |
| ISAME( 9 ) |
| END |
| |
| |
| |
| |
| SAME |
| DO |
| SAME |
| IF( .NOT.ISAME( I ) |
| $ WRITE( NOUT, FMT |
| 40 CONTINUE |
| IF( .NOT.SAME |
| FATAL |
| GO |
| END |
| |
| IF( .NOT.NULL |
| |
| |
| |
| CALL |
| $ INCX, BETA, Y, INCY, YT, G, |
| $ YY, EPS, ERR, FATAL, NOUT, |
| $ .TRUE. ) |
| ERRMAX |
| |
| |
| IF( FATAL |
| $ GO |
| ELSE |
| |
| GO |
| END |
| |
| 50 CONTINUE |
| |
| 60 CONTINUE |
| |
| 70 CONTINUE |
| |
| 80 CONTINUE |
| |
| 90 CONTINUE |
| |
| 100 CONTINUE |
| |
| 110 CONTINUE |
| |
| |
| |
| IF( ERRMAX.LT.THRESH |
| WRITE( NOUT, FMT |
| ELSE |
| WRITE( NOUT, FMT |
| END |
| GO |
| |
| 120 CONTINUE |
| WRITE( NOUT, FMT |
| IF( FULL |
| WRITE( NOUT, FMT |
| $ BETA, INCY |
| ELSE |
| WRITE( NOUT, FMT |
| $ INCX, BETA, INCY |
| ELSE |
| WRITE( NOUT, FMT |
| $ BETA, INCY |
| END |
| |
| 130 CONTINUE |
| RETURN |
| |
| 9999 FORMAT( ' ', A6, ' PASSED THE COMPUTATIONAL TESTS (', I6, ' CALL', |
| $ 'S)' ) |
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', |
| $ 'ANGED INCORRECTLY *******' ) |
| 9997 FORMAT( ' ', A6, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', |
| $ 'ALLS)', /, F8.2, |
| $ ) |
| 9996 FORMAT( , A6, ) |
| 9995 FORMAT( 1X, I6, , A6, , A1, , I3, , F4.1, , |
| $ , I2, , F4.1, , I2, ) |
| 9994 FORMAT( 1X, I6, , A6, , A1, , 2( I3, ), F4.1, |
| $ , I3, , I2, , F4.1, , I2, |
| $ ) |
| 9993 FORMAT( 1X, I6, , A6, , A1, , I3, , F4.1, , |
| $ I3, , I2, , F4.1, , I2, ) |
| 9992 FORMAT( , |
| $ ) |
| * |
| * End of DCHK2. |
| * |
| END |
| SUBROUTINE DCHK3( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI, |
| $ FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, NMAX, |
| $ INCMAX, A, AA, AS, X, XX, XS, XT, G, Z ) |
| * |
| * Tests DTRMV, DTBMV, DTPMV, DTRSV, DTBSV and DTPSV. |
| * |
| * Auxiliary routine for test program for Level 2 Blas. |
| * |
| * -- Written on 10-August-1987. |
| * Richard Hanson, Sandia National Labs. |
| * Jeremy Du Croz, NAG Central Office. |
| * |
| * .. Parameters .. |
| DOUBLE PRECISION ZERO, HALF, ONE |
| PARAMETER ( ZERO = 0.0D0, HALF = 0.5D0, ONE = 1.0D0 ) |
| * .. Scalar Arguments .. |
| DOUBLE PRECISION EPS, THRESH |
| INTEGER INCMAX, NIDIM, NINC, NKB, NMAX, NOUT, NTRA |
| LOGICAL FATAL, REWI, TRACE |
| CHARACTER*6 SNAME |
| * .. Array Arguments .. |
| DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), |
| $ AS( NMAX*NMAX ), G( NMAX ), X( NMAX ), |
| $ XS( NMAX*INCMAX ), XT( NMAX ), |
| $ XX( NMAX*INCMAX ), Z( NMAX ) |
| INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB ) |
| * .. Local Scalars .. |
| DOUBLE PRECISION ERR, ERRMAX, TRANSL |
| INTEGER I, ICD, ICT, ICU, IK, IN, INCX, INCXS, IX, K, |
| $ KS, LAA, LDA, LDAS, LX, N, NARGS, NC, NK, NS |
| LOGICAL BANDED, FULL, NULL, PACKED, RESET, SAME |
| CHARACTER*1 DIAG, DIAGS, TRANS, TRANSS, UPLO, UPLOS |
| CHARACTER*2 ICHD, ICHU |
| CHARACTER*3 ICHT |
| * .. Local Arrays .. |
| LOGICAL ISAME( 13 ) |
| * .. External Functions .. |
| LOGICAL LDE, LDERES |
| EXTERNAL LDE, LDERES |
| * .. External Subroutines .. |
| EXTERNAL DMAKE, DMVCH, DTBMV, DTBSV, DTPMV, DTPSV, |
| $ DTRMV, DTRSV |
| * .. Intrinsic Functions .. |
| INTRINSIC ABS, MAX |
| * .. Scalars in Common .. |
| INTEGER INFOT, NOUTC |
| LOGICAL LERR, OK |
| * .. Common blocks .. |
| COMMON /INFOC/INFOT, NOUTC, OK, LERR |
| * .. Data statements .. |
| DATA ICHU/'UL'/, ICHT/'NTC'/, ICHD/'UN'/ |
| * .. Executable Statements .. |
| FULL = SNAME( 3: 3 ).EQ. |
| BANDED = SNAME( 3: 3 ).EQ. |
| PACKED = SNAME( 3: 3 ).EQ. |
| * Define the number of arguments. |
| IF( FULL )THEN |
| NARGS = 8 |
| ELSE IF( BANDED )THEN |
| NARGS = 9 |
| ELSE IF( PACKED )THEN |
| NARGS = 7 |
| END IF |
| * |
| NC = 0 |
| RESET = .TRUE. |
| ERRMAX = ZERO |
| * Set up zero vector for DMVCH. |
| DO 10 I = 1, NMAX |
| Z( I ) = ZERO |
| 10 CONTINUE |
| * |
| DO 110 IN = 1, NIDIM |
| N = IDIM( IN ) |
| * |
| IF( BANDED )THEN |
| NK = NKB |
| ELSE |
| NK = 1 |
| END IF |
| DO 100 IK = 1, NK |
| IF( BANDED )THEN |
| K = KB( IK ) |
| ELSE |
| K = N - 1 |
| END IF |
| * Set LDA to 1 more than minimum value if room. |
| IF( BANDED )THEN |
| LDA = K + 1 |
| ELSE |
| LDA = N |
| END IF |
| IF( LDA.LT.NMAX ) |
| $ LDA = LDA + 1 |
| * Skip tests if not enough room. |
| IF( LDA.GT.NMAX ) |
| $ GO TO 100 |
| IF( PACKED )THEN |
| LAA = ( N*( N + 1 ) )/2 |
| ELSE |
| LAA |
| END |
| NULL |
| |
| DO |
| UPLO |
| |
| DO |
| TRANS |
| |
| DO |
| DIAG |
| |
| |
| |
| TRANSL |
| CALL |
| $ NMAX, AA, LDA, K, K, RESET, TRANSL |
| |
| DO |
| INCX |
| LX |
| |
| |
| |
| TRANSL |
| CALL |
| $ ABS( INCX |
| $ TRANSL |
| IF( N.GT.1 )THEN |
| X( N/2 ) = ZERO |
| XX( 1 + ABS( INCX )*( N/2 - 1 ) ) = ZERO |
| END |
| |
| NC |
| |
| |
| |
| UPLOS |
| TRANSS |
| DIAGS |
| NS |
| KS |
| DO |
| AS( I ) |
| 20 CONTINUE |
| LDAS |
| DO |
| XS( I ) |
| 30 CONTINUE |
| INCXS |
| |
| |
| |
| IF( SNAME( 4: 5 ).EQ.'MV' )THEN |
| IF( FULL |
| IF( TRACE |
| $ WRITE( NTRA, FMT |
| $ UPLO, TRANS, DIAG, N, LDA, INCX |
| IF( REWI |
| $ REWIND |
| CALL |
| $ XX, INCX |
| ELSE |
| IF( TRACE |
| $ WRITE( NTRA, FMT |
| $ UPLO, TRANS, DIAG, N, K, LDA, INCX |
| IF( REWI |
| $ REWIND |
| CALL |
| $ LDA, XX, INCX |
| ELSE |
| IF( TRACE |
| $ WRITE( NTRA, FMT |
| $ UPLO, TRANS, DIAG, N, INCX |
| IF( REWI |
| $ REWIND |
| CALL |
| $ INCX |
| END |
| ELSE |
| IF( FULL |
| IF( TRACE |
| $ WRITE( NTRA, FMT |
| $ UPLO, TRANS, DIAG, N, LDA, INCX |
| IF( REWI |
| $ REWIND |
| CALL |
| $ XX, INCX |
| ELSE |
| IF( TRACE |
| $ WRITE( NTRA, FMT |
| $ UPLO, TRANS, DIAG, N, K, LDA, INCX |
| IF( REWI |
| $ REWIND |
| CALL |
| $ LDA, XX, INCX |
| ELSE |
| IF( TRACE |
| $ WRITE( NTRA, FMT |
| $ UPLO, TRANS, DIAG, N, INCX |
| IF( REWI |
| $ REWIND |
| CALL |
| $ INCX |
| END |
| END |
| |
| |
| |
| IF( .NOT.OK |
| WRITE( NOUT, FMT |
| FATAL |
| GO |
| END |
| |
| |
| |
| ISAME( 1 ) |
| ISAME( 2 ) |
| ISAME( 3 ) |
| ISAME( 4 ) |
| IF( FULL |
| ISAME( 5 ) |
| ISAME( 6 ) |
| IF( NULL |
| ISAME( 7 ) |
| ELSE |
| ISAME( 7 ) |
| $ XX, ABS( INCX ) |
| END |
| ISAME( 8 ) |
| ELSE |
| ISAME( 5 ) |
| ISAME( 6 ) |
| ISAME( 7 ) |
| IF( NULL |
| ISAME( 8 ) |
| ELSE |
| ISAME( 8 ) |
| $ XX, ABS( INCX ) |
| END |
| ISAME( 9 ) |
| ELSE |
| ISAME( 5 ) |
| IF( NULL |
| ISAME( 6 ) |
| ELSE |
| ISAME( 6 ) |
| $ XX, ABS( INCX ) |
| END |
| ISAME( 7 ) |
| END |
| |
| |
| |
| |
| SAME |
| DO |
| SAME |
| IF( .NOT.ISAME( I ) |
| $ WRITE( NOUT, FMT |
| 40 CONTINUE |
| IF( .NOT.SAME |
| FATAL |
| GO |
| END |
| |
| IF( .NOT.NULL |
| IF( SNAME( 4: 5 ).EQ.'MV' )THEN |
| |
| |
| |
| CALL |
| $ INCX, ZERO, Z, INCX, XT, G, |
| $ XX, EPS, ERR, FATAL, NOUT, |
| $ .TRUE. ) |
| ELSE |
| |
| |
| |
| DO |
| Z( I ) |
| $ ABS( INCX ) |
| XX( 1 + ( I |
| $ = X( I |
| 50 CONTINUE |
| CALL |
| $ INCX, ZERO, X, INCX, XT, G, |
| $ XX, EPS, ERR, FATAL, NOUT, |
| $ .FALSE. ) |
| END |
| ERRMAX |
| |
| IF( FATAL |
| $ GO |
| ELSE |
| |
| GO |
| END |
| |
| 60 CONTINUE |
| |
| 70 CONTINUE |
| |
| 80 CONTINUE |
| |
| 90 CONTINUE |
| |
| 100 CONTINUE |
| |
| 110 CONTINUE |
| |
| |
| |
| IF( ERRMAX.LT.THRESH |
| WRITE( NOUT, FMT |
| ELSE |
| WRITE( NOUT, FMT |
| END |
| GO |
| |
| 120 CONTINUE |
| WRITE( NOUT, FMT |
| IF( FULL |
| WRITE( NOUT, FMT |
| $ INCX |
| ELSE |
| WRITE( NOUT, FMT |
| $ LDA, INCX |
| ELSE |
| WRITE( NOUT, FMT |
| END |
| |
| 130 CONTINUE |
| RETURN |
| |
| 9999 FORMAT( ' ', A6, ' PASSED THE COMPUTATIONAL TESTS (', I6, ' CALL', |
| $ 'S)' ) |
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', |
| $ 'ANGED INCORRECTLY *******' ) |
| 9997 FORMAT( ' ', A6, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', |
| $ 'ALLS)', /, F8.2, |
| $ ) |
| 9996 FORMAT( , A6, ) |
| 9995 FORMAT( 1X, I6, , A6, , 3( , A1, ), I3, , |
| $ , I2, ) |
| 9994 FORMAT( 1X, I6, , A6, , 3( , A1, ), 2( I3, ), |
| $ , I3, , I2, ) |
| 9993 FORMAT( 1X, I6, , A6, , 3( , A1, ), I3, , |
| $ I3, , I2, ) |
| 9992 FORMAT( , |
| $ ) |
| * |
| * End of DCHK3. |
| * |
| END |
| SUBROUTINE DCHK4( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI, |
| $ FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, NMAX, |
| $ INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, YT, G, |
| $ Z ) |
| * |
| * Tests DGER. |
| * |
| * Auxiliary routine for test program for Level 2 Blas. |
| * |
| * -- Written on 10-August-1987. |
| * Richard Hanson, Sandia National Labs. |
| * Jeremy Du Croz, NAG Central Office. |
| * |
| * .. Parameters .. |
| DOUBLE PRECISION ZERO, HALF, ONE |
| PARAMETER ( ZERO = 0.0D0, HALF = 0.5D0, ONE = 1.0D0 ) |
| * .. Scalar Arguments .. |
| DOUBLE PRECISION EPS, THRESH |
| INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA |
| LOGICAL FATAL, REWI, TRACE |
| CHARACTER*6 SNAME |
| * .. Array Arguments .. |
| DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), |
| $ AS( NMAX*NMAX ), G( NMAX ), X( NMAX ), |
| $ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ), |
| $ Y( NMAX ), YS( NMAX*INCMAX ), YT( NMAX ), |
| $ YY( NMAX*INCMAX ), Z( NMAX ) |
| INTEGER IDIM( NIDIM ), INC( NINC ) |
| * .. Local Scalars .. |
| DOUBLE PRECISION ALPHA, ALS, ERR, ERRMAX, TRANSL |
| INTEGER I, IA, IM, IN, INCX, INCXS, INCY, INCYS, IX, |
| $ IY, J, LAA, LDA, LDAS, LX, LY, M, MS, N, NARGS, |
| $ NC, ND, NS |
| LOGICAL NULL, RESET, SAME |
| * .. Local Arrays .. |
| DOUBLE PRECISION W( 1 ) |
| LOGICAL ISAME( 13 ) |
| * .. External Functions .. |
| LOGICAL LDE, LDERES |
| EXTERNAL LDE, LDERES |
| * .. External Subroutines .. |
| EXTERNAL DGER, DMAKE, DMVCH |
| * .. Intrinsic Functions .. |
| INTRINSIC ABS, MAX, MIN |
| * .. Scalars in Common .. |
| INTEGER INFOT, NOUTC |
| LOGICAL LERR, OK |
| * .. Common blocks .. |
| COMMON /INFOC/INFOT, NOUTC, OK, LERR |
| * .. Executable Statements .. |
| * Define the number of arguments. |
| NARGS = 9 |
| * |
| NC = 0 |
| RESET = .TRUE. |
| ERRMAX = ZERO |
| * |
| DO 120 IN = 1, NIDIM |
| N = IDIM( IN ) |
| ND = N/2 + 1 |
| |
| DO |
| IF( IM.EQ.1 ) |
| $ M |
| IF( IM.EQ.2 ) |
| $ M |
| |
| |
| LDA |
| IF( LDA.LT.NMAX |
| $ LDA |
| |
| IF( LDA.GT.NMAX |
| $ GO |
| LAA |
| NULL |
| |
| DO |
| INCX |
| LX |
| |
| |
| |
| TRANSL |
| CALL |
| $ 0, M |
| IF( M.GT.1 )THEN |
| X( M/2 ) = ZERO |
| XX( 1 + ABS( INCX )*( M/2 - 1 ) ) = ZERO |
| END |
| |
| DO |
| INCY |
| LY |
| |
| |
| |
| TRANSL |
| CALL |
| $ ABS( INCY |
| IF( N.GT.1 )THEN |
| Y( N/2 ) = ZERO |
| YY( 1 + ABS( INCY )*( N/2 - 1 ) ) = ZERO |
| END |
| |
| DO |
| ALPHA |
| |
| |
| |
| TRANSL |
| CALL |
| $ AA, LDA, M |
| |
| NC |
| |
| |
| |
| MS |
| NS |
| ALS |
| DO |
| AS( I ) |
| 10 CONTINUE |
| LDAS |
| DO |
| XS( I ) |
| 20 CONTINUE |
| INCXS |
| DO |
| YS( I ) |
| 30 CONTINUE |
| INCYS |
| |
| |
| |
| IF( TRACE |
| $ WRITE( NTRA, FMT |
| $ ALPHA, INCX, INCY, LDA |
| IF( REWI |
| $ REWIND |
| CALL |
| $ LDA |
| |
| |
| |
| IF( .NOT.OK |
| WRITE( NOUT, FMT |
| FATAL |
| GO |
| END |
| |
| |
| |
| ISAME( 1 ) |
| ISAME( 2 ) |
| ISAME( 3 ) |
| ISAME( 4 ) |
| ISAME( 5 ) |
| ISAME( 6 ) |
| ISAME( 7 ) |
| IF( NULL |
| ISAME( 8 ) |
| ELSE |
| ISAME( 8 ) |
| $ LDA |
| END |
| ISAME( 9 ) |
| |
| |
| |
| SAME |
| DO |
| SAME |
| IF( .NOT.ISAME( I ) |
| $ WRITE( NOUT, FMT |
| 40 CONTINUE |
| IF( .NOT.SAME |
| FATAL |
| GO |
| END |
| |
| IF( .NOT.NULL |
| |
| |
| |
| IF( INCX.GT.0 )THEN |
| DO |
| Z( I ) |
| 50 CONTINUE |
| ELSE |
| DO |
| Z( I ) |
| 60 CONTINUE |
| END |
| DO |
| IF( INCY.GT.0 )THEN |
| W( 1 ) |
| ELSE |
| W( 1 ) |
| END |
| CALL |
| $ ONE, A( 1, J |
| $ AA( 1 + ( J |
| $ ERR, FATAL, NOUT, .TRUE. ) |
| ERRMAX |
| |
| IF( FATAL |
| $ GO |
| 70 CONTINUE |
| ELSE |
| |
| GO |
| END |
| |
| 80 CONTINUE |
| |
| 90 CONTINUE |
| |
| 100 CONTINUE |
| |
| 110 CONTINUE |
| |
| 120 CONTINUE |
| |
| |
| |
| IF( ERRMAX.LT.THRESH |
| WRITE( NOUT, FMT |
| ELSE |
| WRITE( NOUT, FMT |
| END |
| GO |
| |
| 130 CONTINUE |
| WRITE( NOUT, FMT |
| |
| 140 CONTINUE |
| WRITE( NOUT, FMT |
| WRITE( NOUT, FMT |
| |
| 150 CONTINUE |
| RETURN |
| |
| 9999 FORMAT( ' ', A6, ' PASSED THE COMPUTATIONAL TESTS (', I6, ' CALL', |
| $ 'S)' ) |
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', |
| $ 'ANGED INCORRECTLY *******' ) |
| 9997 FORMAT( ' ', A6, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', |
| $ 'ALLS)', /, F8.2, |
| $ ) |
| 9996 FORMAT( , A6, ) |
| 9995 FORMAT( , I3 ) |
| 9994 FORMAT( 1X, I6, , A6, , 2( I3, ), F4.1, , I2, |
| $ , I2, , I3, ) |
| 9993 FORMAT( , |
| $ ) |
| * |
| * End of DCHK4. |
| * |
| END |
| SUBROUTINE DCHK5( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI, |
| $ FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, NMAX, |
| $ INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, YT, G, |
| $ Z ) |
| * |
| * Tests DSYR and DSPR. |
| * |
| * Auxiliary routine for test program for Level 2 Blas. |
| * |
| * -- Written on 10-August-1987. |
| * Richard Hanson, Sandia National Labs. |
| * Jeremy Du Croz, NAG Central Office. |
| * |
| * .. Parameters .. |
| DOUBLE PRECISION ZERO, HALF, ONE |
| PARAMETER ( ZERO = 0.0D0, HALF = 0.5D0, ONE = 1.0D0 ) |
| * .. Scalar Arguments .. |
| DOUBLE PRECISION EPS, THRESH |
| INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA |
| LOGICAL FATAL, REWI, TRACE |
| CHARACTER*6 SNAME |
| * .. Array Arguments .. |
| DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), |
| $ AS( NMAX*NMAX ), G( NMAX ), X( NMAX ), |
| $ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ), |
| $ Y( NMAX ), YS( NMAX*INCMAX ), YT( NMAX ), |
| $ YY( NMAX*INCMAX ), Z( NMAX ) |
| INTEGER IDIM( NIDIM ), INC( NINC ) |
| * .. Local Scalars .. |
| DOUBLE PRECISION ALPHA, ALS, ERR, ERRMAX, TRANSL |
| INTEGER I, IA, IC, IN, INCX, INCXS, IX, J, JA, JJ, LAA, |
| $ LDA, LDAS, LJ, LX, N, NARGS, NC, NS |
| LOGICAL FULL, NULL, PACKED, RESET, SAME, UPPER |
| CHARACTER*1 UPLO, UPLOS |
| CHARACTER*2 ICH |
| * .. Local Arrays .. |
| DOUBLE PRECISION W( 1 ) |
| LOGICAL ISAME( 13 ) |
| * .. External Functions .. |
| LOGICAL LDE, LDERES |
| EXTERNAL LDE, LDERES |
| * .. External Subroutines .. |
| EXTERNAL DMAKE, DMVCH, DSPR, DSYR |
| * .. Intrinsic Functions .. |
| INTRINSIC ABS, MAX |
| * .. Scalars in Common .. |
| INTEGER INFOT, NOUTC |
| LOGICAL LERR, OK |
| * .. Common blocks .. |
| COMMON /INFOC/INFOT, NOUTC, OK, LERR |
| * .. Data statements .. |
| DATA ICH/'UL'/ |
| * .. Executable Statements .. |
| FULL = SNAME( 3: 3 ).EQ. |
| PACKED = SNAME( 3: 3 ).EQ. |
| * Define the number of arguments. |
| IF( FULL )THEN |
| NARGS = 7 |
| ELSE IF( PACKED )THEN |
| NARGS = 6 |
| END IF |
| * |
| NC = 0 |
| RESET = .TRUE. |
| ERRMAX = ZERO |
| * |
| DO 100 IN = 1, NIDIM |
| N = IDIM( IN ) |
| * Set LDA to 1 more than minimum value if room. |
| LDA = N |
| IF( LDA.LT.NMAX ) |
| $ LDA = LDA + 1 |
| * Skip tests if not enough room. |
| IF( LDA.GT.NMAX ) |
| $ GO TO 100 |
| IF( PACKED )THEN |
| LAA = ( N*( N + 1 ) )/2 |
| ELSE |
| LAA |
| END |
| |
| DO |
| UPLO |
| UPPER |
| |
| DO |
| INCX |
| LX |
| |
| |
| |
| TRANSL |
| CALL |
| $ 0, N |
| IF( N.GT.1 )THEN |
| X( N/2 ) = ZERO |
| XX( 1 + ABS( INCX )*( N/2 - 1 ) ) = ZERO |
| END |
| |
| DO |
| ALPHA |
| NULL |
| |
| |
| |
| TRANSL |
| CALL |
| $ AA, LDA, N |
| |
| NC |
| |
| |
| |
| UPLOS |
| NS |
| ALS |
| DO |
| AS( I ) |
| 10 CONTINUE |
| LDAS |
| DO |
| XS( I ) |
| 20 CONTINUE |
| INCXS |
| |
| |
| |
| IF( FULL |
| IF( TRACE |
| $ WRITE( NTRA, FMT |
| $ ALPHA, INCX, LDA |
| IF( REWI |
| $ REWIND |
| CALL |
| ELSE |
| IF( TRACE |
| $ WRITE( NTRA, FMT |
| $ ALPHA, INCX |
| IF( REWI |
| $ REWIND |
| CALL |
| END |
| |
| |
| |
| IF( .NOT.OK |
| WRITE( NOUT, FMT |
| FATAL |
| GO |
| END |
| |
| |
| |
| ISAME( 1 ) |
| ISAME( 2 ) |
| ISAME( 3 ) |
| ISAME( 4 ) |
| ISAME( 5 ) |
| IF( NULL |
| ISAME( 6 ) |
| ELSE |
| ISAME( 6 ) |
| $ AA, LDA |
| END |
| IF( .NOT.PACKED |
| ISAME( 7 ) |
| END |
| |
| |
| |
| SAME |
| DO |
| SAME |
| IF( .NOT.ISAME( I ) |
| $ WRITE( NOUT, FMT |
| 30 CONTINUE |
| IF( .NOT.SAME |
| FATAL |
| GO |
| END |
| |
| IF( .NOT.NULL |
| |
| |
| |
| IF( INCX.GT.0 )THEN |
| DO |
| Z( I ) |
| 40 CONTINUE |
| ELSE |
| DO |
| Z( I ) |
| 50 CONTINUE |
| END |
| JA |
| DO |
| W( 1 ) |
| IF( UPPER |
| JJ |
| LJ |
| ELSE |
| JJ |
| LJ |
| END |
| CALL |
| $ 1, ONE, A( JJ, J |
| $ AA( JA |
| $ .TRUE. ) |
| IF( FULL |
| IF( UPPER |
| JA |
| ELSE |
| JA |
| END |
| ELSE |
| JA |
| END |
| ERRMAX |
| |
| IF( FATAL |
| $ GO |
| 60 CONTINUE |
| ELSE |
| |
| IF( N.LE.0 ) |
| $ GO |
| END |
| |
| 70 CONTINUE |
| |
| 80 CONTINUE |
| |
| 90 CONTINUE |
| |
| 100 CONTINUE |
| |
| |
| |
| IF( ERRMAX.LT.THRESH |
| WRITE( NOUT, FMT |
| ELSE |
| WRITE( NOUT, FMT |
| END |
| GO |
| |
| 110 CONTINUE |
| WRITE( NOUT, FMT |
| |
| 120 CONTINUE |
| WRITE( NOUT, FMT |
| IF( FULL |
| WRITE( NOUT, FMT |
| ELSE |
| WRITE( NOUT, FMT |
| END |
| |
| 130 CONTINUE |
| RETURN |
| |
| 9999 FORMAT( ' ', A6, ' PASSED THE COMPUTATIONAL TESTS (', I6, ' CALL', |
| $ 'S)' ) |
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', |
| $ 'ANGED INCORRECTLY *******' ) |
| 9997 FORMAT( ' ', A6, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', |
| $ 'ALLS)', /, F8.2, |
| $ ) |
| 9996 FORMAT( , A6, ) |
| 9995 FORMAT( , I3 ) |
| 9994 FORMAT( 1X, I6, , A6, , A1, , I3, , F4.1, , |
| $ I2, ) |
| 9993 FORMAT( 1X, I6, , A6, , A1, , I3, , F4.1, , |
| $ I2, , I3, ) |
| 9992 FORMAT( , |
| $ ) |
| * |
| * End of DCHK5. |
| * |
| END |
| SUBROUTINE DCHK6( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI, |
| $ FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, NMAX, |
| $ INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, YT, G, |
| $ Z ) |
| * |
| * Tests DSYR2 and DSPR2. |
| * |
| * Auxiliary routine for test program for Level 2 Blas. |
| * |
| * -- Written on 10-August-1987. |
| * Richard Hanson, Sandia National Labs. |
| * Jeremy Du Croz, NAG Central Office. |
| * |
| * .. Parameters .. |
| DOUBLE PRECISION ZERO, HALF, ONE |
| PARAMETER ( ZERO = 0.0D0, HALF = 0.5D0, ONE = 1.0D0 ) |
| * .. Scalar Arguments .. |
| DOUBLE PRECISION EPS, THRESH |
| INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA |
| LOGICAL FATAL, REWI, TRACE |
| CHARACTER*6 SNAME |
| * .. Array Arguments .. |
| DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), |
| $ AS( NMAX*NMAX ), G( NMAX ), X( NMAX ), |
| $ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ), |
| $ Y( NMAX ), YS( NMAX*INCMAX ), YT( NMAX ), |
| $ YY( NMAX*INCMAX ), Z( NMAX, 2 ) |
| INTEGER IDIM( NIDIM ), INC( NINC ) |
| * .. Local Scalars .. |
| DOUBLE PRECISION ALPHA, ALS, ERR, ERRMAX, TRANSL |
| INTEGER I, IA, IC, IN, INCX, INCXS, INCY, INCYS, IX, |
| $ IY, J, JA, JJ, LAA, LDA, LDAS, LJ, LX, LY, N, |
| $ NARGS, NC, NS |
| LOGICAL FULL, NULL, PACKED, RESET, SAME, UPPER |
| CHARACTER*1 UPLO, UPLOS |
| CHARACTER*2 ICH |
| * .. Local Arrays .. |
| DOUBLE PRECISION W( 2 ) |
| LOGICAL ISAME( 13 ) |
| * .. External Functions .. |
| LOGICAL LDE, LDERES |
| EXTERNAL LDE, LDERES |
| * .. External Subroutines .. |
| EXTERNAL DMAKE, DMVCH, DSPR2, DSYR2 |
| * .. Intrinsic Functions .. |
| INTRINSIC ABS, MAX |
| * .. Scalars in Common .. |
| INTEGER INFOT, NOUTC |
| LOGICAL LERR, OK |
| * .. Common blocks .. |
| COMMON /INFOC/INFOT, NOUTC, OK, LERR |
| * .. Data statements .. |
| DATA ICH/'UL'/ |
| * .. Executable Statements .. |
| FULL = SNAME( 3: 3 ).EQ. |
| PACKED = SNAME( 3: 3 ).EQ. |
| * Define the number of arguments. |
| IF( FULL )THEN |
| NARGS = 9 |
| ELSE IF( PACKED )THEN |
| NARGS = 8 |
| END IF |
| * |
| NC = 0 |
| RESET = .TRUE. |
| ERRMAX = ZERO |
| * |
| DO 140 IN = 1, NIDIM |
| N = IDIM( IN ) |
| * Set LDA to 1 more than minimum value if room. |
| LDA = N |
| IF( LDA.LT.NMAX ) |
| $ LDA = LDA + 1 |
| * Skip tests if not enough room. |
| IF( LDA.GT.NMAX ) |
| $ GO TO 140 |
| IF( PACKED )THEN |
| LAA = ( N*( N + 1 ) )/2 |
| ELSE |
| LAA |
| END |
| |
| DO |
| UPLO |
| UPPER |
| |
| DO |
| INCX |
| LX |
| |
| |
| |
| TRANSL |
| CALL |
| $ 0, N |
| IF( N.GT.1 )THEN |
| X( N/2 ) = ZERO |
| XX( 1 + ABS( INCX )*( N/2 - 1 ) ) = ZERO |
| END |
| |
| DO |
| INCY |
| LY |
| |
| |
| |
| TRANSL |
| CALL |
| $ ABS( INCY |
| IF( N.GT.1 )THEN |
| Y( N/2 ) = ZERO |
| YY( 1 + ABS( INCY )*( N/2 - 1 ) ) = ZERO |
| END |
| |
| DO |
| ALPHA |
| NULL |
| |
| |
| |
| TRANSL |
| CALL |
| $ NMAX, AA, LDA, N |
| $ TRANSL |
| |
| NC |
| |
| |
| |
| UPLOS |
| NS |
| ALS |
| DO |
| AS( I ) |
| 10 CONTINUE |
| LDAS |
| DO |
| XS( I ) |
| 20 CONTINUE |
| INCXS |
| DO |
| YS( I ) |
| 30 CONTINUE |
| INCYS |
| |
| |
| |
| IF( FULL |
| IF( TRACE |
| $ WRITE( NTRA, FMT |
| $ ALPHA, INCX, INCY, LDA |
| IF( REWI |
| $ REWIND |
| CALL |
| $ AA, LDA |
| ELSE |
| IF( TRACE |
| $ WRITE( NTRA, FMT |
| $ ALPHA, INCX, INCY |
| IF( REWI |
| $ REWIND |
| CALL |
| $ AA |
| END |
| |
| |
| |
| IF( .NOT.OK |
| WRITE( NOUT, FMT |
| FATAL |
| GO |
| END |
| |
| |
| |
| ISAME( 1 ) |
| ISAME( 2 ) |
| ISAME( 3 ) |
| ISAME( 4 ) |
| ISAME( 5 ) |
| ISAME( 6 ) |
| ISAME( 7 ) |
| IF( NULL |
| ISAME( 8 ) |
| ELSE |
| ISAME( 8 ) |
| $ AS, AA, LDA |
| END |
| IF( .NOT.PACKED |
| ISAME( 9 ) |
| END |
| |
| |
| |
| SAME |
| DO |
| SAME |
| IF( .NOT.ISAME( I ) |
| $ WRITE( NOUT, FMT |
| 40 CONTINUE |
| IF( .NOT.SAME |
| FATAL |
| GO |
| END |
| |
| IF( .NOT.NULL |
| |
| |
| |
| IF( INCX.GT.0 )THEN |
| DO |
| Z( I, 1 ) |
| 50 CONTINUE |
| ELSE |
| DO |
| Z( I, 1 ) |
| 60 CONTINUE |
| END |
| IF( INCY.GT.0 )THEN |
| DO |
| Z( I, 2 ) |
| 70 CONTINUE |
| ELSE |
| DO |
| Z( I, 2 ) |
| 80 CONTINUE |
| END |
| JA |
| DO |
| W( 1 ) |
| W( 2 ) |
| IF( UPPER |
| JJ |
| LJ |
| ELSE |
| JJ |
| LJ |
| END |
| CALL |
| $ NMAX, W, 1, ONE, A( JJ, J |
| $ YT, G, AA( JA |
| $ NOUT, .TRUE. ) |
| IF( FULL |
| IF( UPPER |
| JA |
| ELSE |
| JA |
| END |
| ELSE |
| JA |
| END |
| ERRMAX |
| |
| IF( FATAL |
| $ GO |
| 90 CONTINUE |
| ELSE |
| |
| IF( N.LE.0 ) |
| $ GO |
| END |
| |
| 100 CONTINUE |
| |
| 110 CONTINUE |
| |
| 120 CONTINUE |
| |
| 130 CONTINUE |
| |
| 140 CONTINUE |
| |
| |
| |
| IF( ERRMAX.LT.THRESH |
| WRITE( NOUT, FMT |
| ELSE |
| WRITE( NOUT, FMT |
| END |
| GO |
| |
| 150 CONTINUE |
| WRITE( NOUT, FMT |
| |
| 160 CONTINUE |
| WRITE( NOUT, FMT |
| IF( FULL |
| WRITE( NOUT, FMT |
| $ INCY, LDA |
| ELSE |
| WRITE( NOUT, FMT |
| END |
| |
| 170 CONTINUE |
| RETURN |
| |
| 9999 FORMAT( ' ', A6, ' PASSED THE COMPUTATIONAL TESTS (', I6, ' CALL', |
| $ 'S)' ) |
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', |
| $ 'ANGED INCORRECTLY *******' ) |
| 9997 FORMAT( ' ', A6, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', |
| $ 'ALLS)', /, F8.2, |
| $ ) |
| 9996 FORMAT( , A6, ) |
| 9995 FORMAT( , I3 ) |
| 9994 FORMAT( 1X, I6, , A6, , A1, , I3, , F4.1, , |
| $ I2, , I2, ) |
| 9993 FORMAT( 1X, I6, , A6, , A1, , I3, , F4.1, , |
| $ I2, , I2, , I3, ) |
| 9992 FORMAT( , |
| $ ) |
| * |
| * End of DCHK6. |
| * |
| END |
| SUBROUTINE DCHKE( ISNUM, SRNAMT, NOUT ) |
| * |
| * Tests the error exits from the Level 2 Blas. |
| * Requires a special version of the error-handling routine XERBLA. |
| * ALPHA, BETA, A, X and Y should not need to be defined. |
| * |
| * Auxiliary routine for test program for Level 2 Blas. |
| * |
| * -- Written on 10-August-1987. |
| * Richard Hanson, Sandia National Labs. |
| * Jeremy Du Croz, NAG Central Office. |
| * |
| * .. Scalar Arguments .. |
| INTEGER ISNUM, NOUT |
| CHARACTER*6 SRNAMT |
| * .. Scalars in Common .. |
| INTEGER INFOT, NOUTC |
| LOGICAL LERR, OK |
| * .. Local Scalars .. |
| DOUBLE PRECISION ALPHA, BETA |
| * .. Local Arrays .. |
| DOUBLE PRECISION A( 1, 1 ), X( 1 ), Y( 1 ) |
| * .. External Subroutines .. |
| EXTERNAL CHKXER, DGBMV, DGEMV, DGER, DSBMV, DSPMV, DSPR, |
| $ DSPR2, DSYMV, DSYR, DSYR2, DTBMV, DTBSV, DTPMV, |
| $ DTPSV, DTRMV, DTRSV |
| * .. Common blocks .. |
| COMMON /INFOC/INFOT, NOUTC, OK, LERR |
| * .. Executable Statements .. |
| * OK is set to .FALSE. by the special version of XERBLA or by CHKXER |
| * if anything is wrong. |
| OK = .TRUE. |
| * LERR is set to .TRUE. by the special version of XERBLA each time |
| * it is called, and is then tested and re-set by CHKXER. |
| LERR = .FALSE. |
| GO TO ( 10, 20, 30, 40, 50, 60, 70, 80, |
| $ 90, 100, 110, 120, 130, 140, 150, |
| $ 160 )ISNUM |
| 10 INFOT = 1 |
| CALL DGEMV( , 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 2 |
| CALL DGEMV( , -1, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 3 |
| CALL DGEMV( , 0, -1, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 6 |
| CALL DGEMV( , 2, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 8 |
| CALL DGEMV( , 0, 0, ALPHA, A, 1, X, 0, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 11 |
| CALL DGEMV( , 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 0 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| GO TO 170 |
| 20 INFOT = 1 |
| CALL DGBMV( , 0, 0, 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 2 |
| CALL DGBMV( , -1, 0, 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 3 |
| CALL DGBMV( , 0, -1, 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 4 |
| CALL DGBMV( , 0, 0, -1, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 5 |
| CALL DGBMV( , 2, 0, 0, -1, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 8 |
| CALL DGBMV( , 0, 0, 1, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 10 |
| CALL DGBMV( , 0, 0, 0, 0, ALPHA, A, 1, X, 0, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 13 |
| CALL DGBMV( , 0, 0, 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 0 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| GO TO 170 |
| 30 INFOT = 1 |
| CALL DSYMV( , 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 2 |
| CALL DSYMV( , -1, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 5 |
| CALL DSYMV( , 2, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 7 |
| CALL DSYMV( , 0, ALPHA, A, 1, X, 0, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 10 |
| CALL DSYMV( , 0, ALPHA, A, 1, X, 1, BETA, Y, 0 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| GO TO 170 |
| 40 INFOT = 1 |
| CALL DSBMV( , 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 2 |
| CALL DSBMV( , -1, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 3 |
| CALL DSBMV( , 0, -1, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 6 |
| CALL DSBMV( , 0, 1, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 8 |
| CALL DSBMV( , 0, 0, ALPHA, A, 1, X, 0, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 11 |
| CALL DSBMV( , 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 0 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| GO TO 170 |
| 50 INFOT = 1 |
| CALL DSPMV( , 0, ALPHA, A, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 2 |
| CALL DSPMV( , -1, ALPHA, A, X, 1, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 6 |
| CALL DSPMV( , 0, ALPHA, A, X, 0, BETA, Y, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 9 |
| CALL DSPMV( , 0, ALPHA, A, X, 1, BETA, Y, 0 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| GO TO 170 |
| 60 INFOT = 1 |
| CALL DTRMV( , , , 0, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 2 |
| CALL DTRMV( , , , 0, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 3 |
| CALL DTRMV( , , , 0, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 4 |
| CALL DTRMV( , , , -1, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 6 |
| CALL DTRMV( , , , 2, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 8 |
| CALL DTRMV( , , , 0, A, 1, X, 0 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| GO TO 170 |
| 70 INFOT = 1 |
| CALL DTBMV( , , , 0, 0, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 2 |
| CALL DTBMV( , , , 0, 0, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 3 |
| CALL DTBMV( , , , 0, 0, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 4 |
| CALL DTBMV( , , , -1, 0, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 5 |
| CALL DTBMV( , , , 0, -1, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 7 |
| CALL DTBMV( , , , 0, 1, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 9 |
| CALL DTBMV( , , , 0, 0, A, 1, X, 0 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| GO TO 170 |
| 80 INFOT = 1 |
| CALL DTPMV( , , , 0, A, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 2 |
| CALL DTPMV( , , , 0, A, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 3 |
| CALL DTPMV( , , , 0, A, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 4 |
| CALL DTPMV( , , , -1, A, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 7 |
| CALL DTPMV( , , , 0, A, X, 0 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| GO TO 170 |
| 90 INFOT = 1 |
| CALL DTRSV( , , , 0, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 2 |
| CALL DTRSV( , , , 0, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 3 |
| CALL DTRSV( , , , 0, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 4 |
| CALL DTRSV( , , , -1, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 6 |
| CALL DTRSV( , , , 2, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 8 |
| CALL DTRSV( , , , 0, A, 1, X, 0 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| GO TO 170 |
| 100 INFOT = 1 |
| CALL DTBSV( , , , 0, 0, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 2 |
| CALL DTBSV( , , , 0, 0, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 3 |
| CALL DTBSV( , , , 0, 0, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 4 |
| CALL DTBSV( , , , -1, 0, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 5 |
| CALL DTBSV( , , , 0, -1, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 7 |
| CALL DTBSV( , , , 0, 1, A, 1, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 9 |
| CALL DTBSV( , , , 0, 0, A, 1, X, 0 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| GO TO 170 |
| 110 INFOT = 1 |
| CALL DTPSV( , , , 0, A, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 2 |
| CALL DTPSV( , , , 0, A, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 3 |
| CALL DTPSV( , , , 0, A, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 4 |
| CALL DTPSV( , , , -1, A, X, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 7 |
| CALL DTPSV( , , , 0, A, X, 0 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| GO TO 170 |
| 120 INFOT = 1 |
| CALL DGER( -1, 0, ALPHA, X, 1, Y, 1, A, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 2 |
| CALL DGER( 0, -1, ALPHA, X, 1, Y, 1, A, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 5 |
| CALL DGER( 0, 0, ALPHA, X, 0, Y, 1, A, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 7 |
| CALL DGER( 0, 0, ALPHA, X, 1, Y, 0, A, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 9 |
| CALL DGER( 2, 0, ALPHA, X, 1, Y, 1, A, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| GO TO 170 |
| 130 INFOT = 1 |
| CALL DSYR( , 0, ALPHA, X, 1, A, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 2 |
| CALL DSYR( , -1, ALPHA, X, 1, A, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 5 |
| CALL DSYR( , 0, ALPHA, X, 0, A, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 7 |
| CALL DSYR( , 2, ALPHA, X, 1, A, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| GO TO 170 |
| 140 INFOT = 1 |
| CALL DSPR( , 0, ALPHA, X, 1, A ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 2 |
| CALL DSPR( , -1, ALPHA, X, 1, A ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 5 |
| CALL DSPR( , 0, ALPHA, X, 0, A ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| GO TO 170 |
| 150 INFOT = 1 |
| CALL DSYR2( , 0, ALPHA, X, 1, Y, 1, A, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 2 |
| CALL DSYR2( , -1, ALPHA, X, 1, Y, 1, A, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 5 |
| CALL DSYR2( , 0, ALPHA, X, 0, Y, 1, A, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 7 |
| CALL DSYR2( , 0, ALPHA, X, 1, Y, 0, A, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 9 |
| CALL DSYR2( , 2, ALPHA, X, 1, Y, 1, A, 1 ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| GO TO 170 |
| 160 INFOT = 1 |
| CALL DSPR2( , 0, ALPHA, X, 1, Y, 1, A ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 2 |
| CALL DSPR2( , -1, ALPHA, X, 1, Y, 1, A ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 5 |
| CALL DSPR2( , 0, ALPHA, X, 0, Y, 1, A ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| INFOT = 7 |
| CALL DSPR2( , 0, ALPHA, X, 1, Y, 0, A ) |
| CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
| * |
| 170 IF( OK )THEN |
| WRITE( NOUT, FMT = 9999 )SRNAMT |
| ELSE |
| WRITE( NOUT, FMT = 9998 )SRNAMT |
| END IF |
| RETURN |
| * |
| 9999 FORMAT( , A6, ) |
| 9998 FORMAT( , A6, , |
| $ ) |
| * |
| * End of DCHKE. |
| * |
| END |
| SUBROUTINE DMAKE( TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, |
| $ KU, RESET, TRANSL ) |
| * |
| * Generates values for an M by N matrix A within the bandwidth |
| * defined by KL and KU. |
| * Stores the values in the array AA in the data structure required |
| * by the routine, with unwanted elements set to rogue value. |
| * |
| * TYPE is , , , , , , OR . |
| * |
| * Auxiliary routine for test program for Level 2 Blas. |
| * |
| * -- Written on 10-August-1987. |
| * Richard Hanson, Sandia National Labs. |
| * Jeremy Du Croz, NAG Central Office. |
| * |
| * .. Parameters .. |
| DOUBLE PRECISION ZERO, ONE |
| PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 ) |
| DOUBLE PRECISION ROGUE |
| PARAMETER ( ROGUE = -1.0D10 ) |
| * .. Scalar Arguments .. |
| DOUBLE PRECISION TRANSL |
| INTEGER KL, KU, LDA, M, N, NMAX |
| LOGICAL RESET |
| CHARACTER*1 DIAG, UPLO |
| CHARACTER*2 TYPE |
| * .. Array Arguments .. |
| DOUBLE PRECISION A( NMAX, * ), AA( * ) |
| * .. Local Scalars .. |
| INTEGER I, I1, I2, I3, IBEG, IEND, IOFF, J, KK |
| LOGICAL GEN, LOWER, SYM, TRI, UNIT, UPPER |
| * .. External Functions .. |
| DOUBLE PRECISION DBEG |
| EXTERNAL DBEG |
| * .. Intrinsic Functions .. |
| INTRINSIC MAX, MIN |
| * .. Executable Statements .. |
| GEN = TYPE( 1: 1 ).EQ. |
| SYM = TYPE( 1: 1 ).EQ. |
| TRI = TYPE( 1: 1 ).EQ. |
| UPPER = ( SYM.OR.TRI ).AND.UPLO.EQ. |
| LOWER = ( SYM.OR.TRI ).AND.UPLO.EQ. |
| UNIT = TRI.AND.DIAG.EQ. |
| * |
| * Generate data in array A. |
| * |
| DO 20 J = 1, N |
| DO 10 I = 1, M |
| IF( GEN.OR.( UPPER.AND.I.LE.J ).OR.( LOWER.AND.I.GE.J ) ) |
| $ THEN |
| IF( ( I.LE.J.AND.J - I.LE.KU ).OR. |
| $ ( I.GE.J.AND.I - J.LE.KL ) )THEN |
| A( I, J ) = DBEG( RESET ) + TRANSL |
| ELSE |
| A( I, J ) = ZERO |
| END IF |
| IF( I.NE.J )THEN |
| IF( SYM )THEN |
| A( J, I ) = A( I, J ) |
| ELSE IF( TRI )THEN |
| A( J, I ) = ZERO |
| END IF |
| END IF |
| END IF |
| 10 CONTINUE |
| IF( TRI ) |
| $ A( J, J ) = A( J, J ) + ONE |
| IF( UNIT ) |
| $ A( J, J ) = ONE |
| 20 CONTINUE |
| * |
| * Store elements in array AS in data structure required by routine. |
| * |
| IF( TYPE.EQ. )THEN |
| DO 50 J = 1, N |
| DO 30 I = 1, M |
| AA( I + ( J - 1 )*LDA ) = A( I, J ) |
| 30 CONTINUE |
| DO 40 I = M + 1, LDA |
| AA( I + ( J - 1 )*LDA ) = ROGUE |
| 40 CONTINUE |
| 50 CONTINUE |
| ELSE IF( TYPE.EQ. )THEN |
| DO 90 J = 1, N |
| DO 60 I1 = 1, KU + 1 - J |
| AA( I1 + ( J - 1 )*LDA ) = ROGUE |
| 60 CONTINUE |
| DO 70 I2 = I1, MIN( KL + KU + 1, KU + 1 + M - J ) |
| AA( I2 + ( J - 1 )*LDA ) = A( I2 + J - KU - 1, J ) |
| 70 CONTINUE |
| DO 80 I3 = I2, LDA |
| AA( I3 + ( J - 1 )*LDA ) = ROGUE |
| 80 CONTINUE |
| 90 CONTINUE |
| ELSE IF( TYPE.EQ..OR.TYPE.EQ. )THEN |
| DO 130 J = 1, N |
| IF( UPPER )THEN |
| IBEG = 1 |
| IF( UNIT )THEN |
| IEND = J - 1 |
| ELSE |
| IEND = J |
| END IF |
| ELSE |
| IF( UNIT )THEN |
| IBEG = J + 1 |
| ELSE |
| IBEG = J |
| END IF |
| IEND = N |
| END IF |
| DO 100 I = 1, IBEG - 1 |
| AA( I + ( J - 1 )*LDA ) = ROGUE |
| 100 CONTINUE |
| DO 110 I = IBEG, IEND |
| AA( I + ( J - 1 )*LDA ) = A( I, J ) |
| 110 CONTINUE |
| DO 120 I = IEND + 1, LDA |
| AA( I + ( J - 1 )*LDA ) = ROGUE |
| 120 CONTINUE |
| 130 CONTINUE |
| ELSE IF( TYPE.EQ..OR.TYPE.EQ. )THEN |
| DO 170 J = 1, N |
| IF( UPPER )THEN |
| KK = KL + 1 |
| IBEG = MAX( 1, KL + 2 - J ) |
| IF( UNIT )THEN |
| IEND = KL |
| ELSE |
| IEND = KL + 1 |
| END IF |
| ELSE |
| KK = 1 |
| IF( UNIT )THEN |
| IBEG = 2 |
| ELSE |
| IBEG = 1 |
| END IF |
| IEND = MIN( KL + 1, 1 + M - J ) |
| END IF |
| DO 140 I = 1, IBEG - 1 |
| AA( I + ( J - 1 )*LDA ) = ROGUE |
| 140 CONTINUE |
| DO 150 I = IBEG, IEND |
| AA( I + ( J - 1 )*LDA ) = A( I + J - KK, J ) |
| 150 CONTINUE |
| DO 160 I = IEND + 1, LDA |
| AA( I + ( J - 1 )*LDA ) = ROGUE |
| 160 CONTINUE |
| 170 CONTINUE |
| ELSE IF( TYPE.EQ..OR.TYPE.EQ. )THEN |
| IOFF = 0 |
| DO 190 J = 1, N |
| IF( UPPER )THEN |
| IBEG = 1 |
| IEND = J |
| ELSE |
| IBEG = J |
| IEND = N |
| END IF |
| DO 180 I = IBEG, IEND |
| IOFF = IOFF + 1 |
| AA( IOFF ) = A( I, J ) |
| IF( I.EQ.J )THEN |
| IF( UNIT ) |
| $ AA( IOFF ) = ROGUE |
| END IF |
| 180 CONTINUE |
| 190 CONTINUE |
| END IF |
| RETURN |
| * |
| * End of DMAKE. |
| * |
| END |
| SUBROUTINE DMVCH( TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, |
| $ INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV ) |
| * |
| * Checks the results of the computational tests. |
| * |
| * Auxiliary routine for test program for Level 2 Blas. |
| * |
| * -- Written on 10-August-1987. |
| * Richard Hanson, Sandia National Labs. |
| * Jeremy Du Croz, NAG Central Office. |
| * |
| * .. Parameters .. |
| DOUBLE PRECISION ZERO, ONE |
| PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0 ) |
| * .. Scalar Arguments .. |
| DOUBLE PRECISION ALPHA, BETA, EPS, ERR |
| INTEGER INCX, INCY, M, N, NMAX, NOUT |
| LOGICAL FATAL, MV |
| CHARACTER*1 TRANS |
| * .. Array Arguments .. |
| DOUBLE PRECISION A( NMAX, * ), G( * ), X( * ), Y( * ), YT( * ), |
| $ YY( * ) |
| * .. Local Scalars .. |
| DOUBLE PRECISION ERRI |
| INTEGER I, INCXL, INCYL, IY, J, JX, KX, KY, ML, NL |
| LOGICAL TRAN |
| * .. Intrinsic Functions .. |
| INTRINSIC ABS, MAX, SQRT |
| * .. Executable Statements .. |
| TRAN = TRANS.EQ..OR.TRANS.EQ. |
| IF( TRAN )THEN |
| ML = N |
| NL = M |
| ELSE |
| ML = M |
| NL = N |
| END IF |
| IF( INCX.LT.0 )THEN |
| KX = NL |
| INCXL = -1 |
| ELSE |
| KX = 1 |
| INCXL = 1 |
| END IF |
| IF( INCY.LT.0 )THEN |
| KY = ML |
| INCYL = -1 |
| ELSE |
| KY = 1 |
| INCYL = 1 |
| END IF |
| * |
| * Compute expected result in YT using data in A, X and Y. |
| * Compute gauges in G. |
| * |
| IY = KY |
| DO 30 I = 1, ML |
| YT( IY ) = ZERO |
| G( IY ) = ZERO |
| JX = KX |
| IF( TRAN )THEN |
| DO 10 J = 1, NL |
| YT( IY ) = YT( IY ) + A( J, I )*X( JX ) |
| G( IY ) = G( IY ) + ABS( A( J, I )*X( JX ) ) |
| JX = JX + INCXL |
| 10 CONTINUE |
| ELSE |
| DO 20 J = 1, NL |
| YT( IY ) = YT( IY ) + A( I, J )*X( JX ) |
| G( IY ) = G( IY ) + ABS( A( I, J )*X( JX ) ) |
| JX = JX + INCXL |
| 20 CONTINUE |
| END IF |
| YT( IY ) = ALPHA*YT( IY ) + BETA*Y( IY ) |
| G( IY ) = ABS( ALPHA )*G( IY ) + ABS( BETA*Y( IY ) ) |
| IY = IY + INCYL |
| 30 CONTINUE |
| * |
| * Compute the error ratio for this result. |
| * |
| ERR = ZERO |
| DO 40 I = 1, ML |
| ERRI = ABS( YT( I ) - YY( 1 + ( I - 1 )*ABS( INCY ) ) )/EPS |
| IF( G( I |
| $ ERRI /G( I ) |
| ERR = MAX( ERR, ERRI ) |
| IF( ERR*SQRT( EPS ).GE.ONE ) |
| $ GO TO 50 |
| 40 CONTINUE |
| * If the loop completes, all results are at least half accurate. |
| GO TO 70 |
| * |
| * Report fatal error. |
| * |
| 50 FATAL = .TRUE. |
| WRITE( NOUT, FMT = 9999 ) |
| DO 60 I = 1, ML |
| IF( MV )THEN |
| WRITE( NOUT, FMT = 9998 )I, YT( I ), |
| $ YY( 1 + ( I - 1 )*ABS( INCY ) ) |
| ELSE |
| WRITE( NOUT, FMT = 9998 )I, |
| $ YY( 1 + ( I - 1 )*ABS( INCY ) ), YT( I ) |
| END IF |
| 60 CONTINUE |
| * |
| 70 CONTINUE |
| RETURN |
| * |
| 9999 FORMAT( , |
| $ , / |
| $ 'TED RESULT' ) |
| 9998 FORMAT( 1X, I7, 2G18.6 ) |
| |
| |
| |
| END |
| LOGICAL |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| INTEGER |
| |
| DOUBLE |
| |
| INTEGER |
| |
| DO |
| IF( RI( I |
| $ GO |
| 10 CONTINUE |
| LDE |
| GO |
| 20 CONTINUE |
| LDE |
| 30 RETURN |
| |
| |
| |
| END |
| LOGICAL |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| INTEGER |
| CHARACTER*1 UPLO |
| CHARACTER*2 TYPE |
| |
| DOUBLE |
| |
| INTEGER |
| LOGICAL |
| |
| UPPER |
| IF( TYPE.EQ.'GE' )THEN |
| DO |
| DO |
| IF( AA( I, J |
| $ GO |
| 10 CONTINUE |
| 20 CONTINUE |
| ELSE |
| DO |
| IF( UPPER |
| IBEG |
| IEND |
| ELSE |
| IBEG |
| IEND |
| END |
| DO |
| IF( AA( I, J |
| $ GO |
| 30 CONTINUE |
| DO |
| IF( AA( I, J |
| $ GO |
| 40 CONTINUE |
| 50 CONTINUE |
| END |
| |
| LDERES |
| GO |
| 70 CONTINUE |
| LDERES |
| 80 RETURN |
| |
| |
| |
| END |
| DOUBLE |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| LOGICAL |
| |
| INTEGER |
| |
| SAVE |
| |
| INTRINSIC |
| |
| IF( RESET |
| |
| MI |
| I |
| IC |
| RESET |
| END |
| |
| |
| |
| |
| |
| |
| |
| IC |
| 10 I |
| I /1000 ) |
| IF( IC.GE.5 )THEN |
| IC = 0 |
| GO TO 10 |
| END IF |
| DBEG = DBLE( I - 500 )/ |
| RETURN |
| |
| |
| |
| END |
| DOUBLE |
| |
| |
| |
| |
| |
| |
| |
| DOUBLE |
| |
| DDIFF |
| RETURN |
| |
| |
| |
| END |
| SUBROUTINE |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| INTEGER |
| LOGICAL |
| CHARACTER*6 SRNAMT |
| |
| IF( .NOT.LERR |
| WRITE( NOUT, FMT |
| OK |
| END |
| LERR |
| RETURN |
| |
| 9999 FORMAT( ' ***** ILLEGAL VALUE OF PARAMETER NUMBER ', I2, ' NOT D', |
| $ 'ETECTED BY ', A6, ' *****' ) |
| |
| |
| |
| END |
| SUBROUTINE |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| INTEGER |
| CHARACTER*6 SRNAME |
| |
| INTEGER |
| LOGICAL |
| CHARACTER*6 SRNAMT |
| |
| COMMON /INFOC/ |
| COMMON /SRNAMC/ |
| |
| LERR |
| IF( INFO.NE.INFOT |
| IF( INFOT.NE.0 )THEN |
| WRITE( NOUT, FMT |
| ELSE |
| WRITE( NOUT, FMT |
| END |
| OK |
| END |
| IF( SRNAME.NE.SRNAMT |
| WRITE( NOUT, FMT |
| OK |
| END |
| RETURN |
| |
| 9999 FORMAT( ' ******* XERBLA WAS CALLED WITH INFO = ', I6, ' INSTEAD', |
| $ ' OF ', I2, ' *******' ) |
| 9998 FORMAT( ' ******* XERBLA WAS CALLED WITH SRNAME = ', A6, ' INSTE', |
| $ 'AD OF ', A6, ' *******' ) |
| 9997 FORMAT( ' ******* XERBLA WAS CALLED WITH INFO = ', I6, |
| $ ' *******' ) |
| |
| |
| |
| END |
|
|
|
|