|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROGRAM CBLAT2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INTEGER NIN |
|
|
PARAMETER ( NIN |
|
|
INTEGER |
|
|
PARAMETER |
|
|
COMPLEX |
|
|
PARAMETER |
|
|
REAL |
|
|
PARAMETER |
|
|
INTEGER |
|
|
PARAMETER |
|
|
INTEGER |
|
|
PARAMETER |
|
|
$ NALMAX |
|
|
|
|
|
REAL |
|
|
INTEGER |
|
|
$ NOUT, NTRA |
|
|
LOGICAL |
|
|
$ TSTERR |
|
|
CHARACTER*1 TRANS |
|
|
CHARACTER*6 SNAMET |
|
|
CHARACTER*32 SNAPS, SUMMRY |
|
|
|
|
|
COMPLEX |
|
|
$ ALF( NALMAX |
|
|
$ X( NMAX |
|
|
$ XX( NMAX*INCMAX |
|
|
$ YS( NMAX*INCMAX |
|
|
$ YY( NMAX*INCMAX |
|
|
REAL |
|
|
INTEGER |
|
|
LOGICAL |
|
|
CHARACTER*6 SNAMES( NSUBS |
|
|
|
|
|
REAL |
|
|
LOGICAL |
|
|
EXTERNAL |
|
|
|
|
|
EXTERNAL |
|
|
$ CCHKE, CMVCH |
|
|
|
|
|
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.RZERO |
|
|
WRITE( NOUT, FMT |
|
|
STOP |
|
|
END |
|
|
TRANS |
|
|
CALL |
|
|
$ YY, EPS, ERR, FATAL, NOUT, .TRUE. ) |
|
|
SAME |
|
|
IF( .NOT.SAME.OR.ERR.NE.RZERO |
|
|
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, 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, E9.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 COMPLEX 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 ', |
|
|
$ 7( '(', F4.1, ',', F4.1, ') ', : ) ) |
|
|
9988 FORMAT( ' FOR BETA ', |
|
|
$ 7( '(', F4.1, ',', F4.1, ') ', : ) ) |
|
|
9987 FORMAT( ' AMEND DATA FILE OR INCREASE ARRAY SIZES IN PROGRAM', |
|
|
$ / ) |
|
|
9986 FORMAT( , A6, , /' ******* T', |
|
|
$ 'ESTS ABANDONED *******' ) |
|
|
9985 FORMAT( ' ERROR IN CMVCH - 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 CBLAT2. |
|
|
* |
|
|
END |
|
|
SUBROUTINE CCHK1( 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 CGEMV and CGBMV. |
|
|
* |
|
|
* 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 .. |
|
|
COMPLEX ZERO, HALF |
|
|
PARAMETER ( ZERO = ( 0.0, 0.0 ), HALF = ( 0.5, 0.0 ) ) |
|
|
REAL RZERO |
|
|
PARAMETER ( RZERO = 0.0 ) |
|
|
* .. Scalar Arguments .. |
|
|
REAL EPS, THRESH |
|
|
INTEGER INCMAX, NALF, NBET, NIDIM, NINC, NKB, NMAX, |
|
|
$ NOUT, NTRA |
|
|
LOGICAL FATAL, REWI, TRACE |
|
|
CHARACTER*6 SNAME |
|
|
* .. Array Arguments .. |
|
|
COMPLEX A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), |
|
|
$ AS( NMAX*NMAX ), BET( NBET ), X( NMAX ), |
|
|
$ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ), |
|
|
$ Y( NMAX ), YS( NMAX*INCMAX ), YT( NMAX ), |
|
|
$ YY( NMAX*INCMAX ) |
|
|
REAL G( NMAX ) |
|
|
INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB ) |
|
|
* .. Local Scalars .. |
|
|
COMPLEX ALPHA, ALS, BETA, BLS, TRANSL |
|
|
REAL ERR, ERRMAX |
|
|
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 LCE, LCERES |
|
|
EXTERNAL LCE, LCERES |
|
|
* .. External Subroutines .. |
|
|
EXTERNAL CGBMV, CGEMV, CMAKE, CMVCH |
|
|
* .. 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 = RZERO |
|
|
* |
|
|
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, , F4.1, , I3, , I2, , F4.1, , |
|
|
$ F4.1, , I2, ) |
|
|
9994 FORMAT( 1X, I6, , A6, , A1, , 2( I3, ), , |
|
|
$ F4.1, , F4.1, , I3, , I2, , F4.1, , |
|
|
$ F4.1, , I2, ) |
|
|
9993 FORMAT( , |
|
|
$ ) |
|
|
* |
|
|
* End of CCHK1. |
|
|
* |
|
|
END |
|
|
SUBROUTINE CCHK2( 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 CHEMV, CHBMV and CHPMV. |
|
|
* |
|
|
* 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 .. |
|
|
COMPLEX ZERO, HALF |
|
|
PARAMETER ( ZERO = ( 0.0, 0.0 ), HALF = ( 0.5, 0.0 ) ) |
|
|
REAL RZERO |
|
|
PARAMETER ( RZERO = 0.0 ) |
|
|
* .. Scalar Arguments .. |
|
|
REAL EPS, THRESH |
|
|
INTEGER INCMAX, NALF, NBET, NIDIM, NINC, NKB, NMAX, |
|
|
$ NOUT, NTRA |
|
|
LOGICAL FATAL, REWI, TRACE |
|
|
CHARACTER*6 SNAME |
|
|
* .. Array Arguments .. |
|
|
COMPLEX A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), |
|
|
$ AS( NMAX*NMAX ), BET( NBET ), X( NMAX ), |
|
|
$ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ), |
|
|
$ Y( NMAX ), YS( NMAX*INCMAX ), YT( NMAX ), |
|
|
$ YY( NMAX*INCMAX ) |
|
|
REAL G( NMAX ) |
|
|
INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB ) |
|
|
* .. Local Scalars .. |
|
|
COMPLEX ALPHA, ALS, BETA, BLS, TRANSL |
|
|
REAL ERR, ERRMAX |
|
|
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 LCE, LCERES |
|
|
EXTERNAL LCE, LCERES |
|
|
* .. External Subroutines .. |
|
|
EXTERNAL CHBMV, CHEMV, CHPMV, CMAKE, CMVCH |
|
|
* .. 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 = RZERO |
|
|
* |
|
|
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, , |
|
|
$ F4.1, , I2, , F4.1, , F4.1, , I2, |
|
|
$ ) |
|
|
9994 FORMAT( 1X, I6, , A6, , A1, , 2( I3, ), , |
|
|
$ F4.1, , F4.1, , I3, , I2, , F4.1, , |
|
|
$ F4.1, , I2, ) |
|
|
9993 FORMAT( 1X, I6, , A6, , A1, , I3, , F4.1, , |
|
|
$ F4.1, , I3, , I2, , F4.1, , F4.1, , |
|
|
$ , I2, ) |
|
|
9992 FORMAT( , |
|
|
$ ) |
|
|
* |
|
|
* End of CCHK2. |
|
|
* |
|
|
END |
|
|
SUBROUTINE CCHK3( 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 CTRMV, CTBMV, CTPMV, CTRSV, CTBSV and CTPSV. |
|
|
* |
|
|
* 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 .. |
|
|
COMPLEX ZERO, HALF, ONE |
|
|
PARAMETER ( ZERO = ( 0.0, 0.0 ), HALF = ( 0.5, 0.0 ), |
|
|
$ ONE = ( 1.0, 0.0 ) ) |
|
|
REAL RZERO |
|
|
PARAMETER ( RZERO = 0.0 ) |
|
|
* .. Scalar Arguments .. |
|
|
REAL EPS, THRESH |
|
|
INTEGER INCMAX, NIDIM, NINC, NKB, NMAX, NOUT, NTRA |
|
|
LOGICAL FATAL, REWI, TRACE |
|
|
CHARACTER*6 SNAME |
|
|
* .. Array Arguments .. |
|
|
COMPLEX A( NMAX, NMAX ), AA( NMAX*NMAX ), |
|
|
$ AS( NMAX*NMAX ), X( NMAX ), XS( NMAX*INCMAX ), |
|
|
$ XT( NMAX ), XX( NMAX*INCMAX ), Z( NMAX ) |
|
|
REAL G( NMAX ) |
|
|
INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB ) |
|
|
* .. Local Scalars .. |
|
|
COMPLEX TRANSL |
|
|
REAL ERR, ERRMAX |
|
|
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 LCE, LCERES |
|
|
EXTERNAL LCE, LCERES |
|
|
* .. External Subroutines .. |
|
|
EXTERNAL CMAKE, CMVCH, CTBMV, CTBSV, CTPMV, CTPSV, |
|
|
$ CTRMV, CTRSV |
|
|
* .. 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 = RZERO |
|
|
* Set up zero vector for CMVCH. |
|
|
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 CCHK3. |
|
|
* |
|
|
END |
|
|
SUBROUTINE CCHK4( 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 CGERC and CGERU. |
|
|
* |
|
|
* 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 .. |
|
|
COMPLEX ZERO, HALF, ONE |
|
|
PARAMETER ( ZERO = ( 0.0, 0.0 ), HALF = ( 0.5, 0.0 ), |
|
|
$ ONE = ( 1.0, 0.0 ) ) |
|
|
REAL RZERO |
|
|
PARAMETER ( RZERO = 0.0 ) |
|
|
* .. Scalar Arguments .. |
|
|
REAL EPS, THRESH |
|
|
INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA |
|
|
LOGICAL FATAL, REWI, TRACE |
|
|
CHARACTER*6 SNAME |
|
|
* .. Array Arguments .. |
|
|
COMPLEX A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), |
|
|
$ AS( NMAX*NMAX ), X( NMAX ), XS( NMAX*INCMAX ), |
|
|
$ XX( NMAX*INCMAX ), Y( NMAX ), |
|
|
$ YS( NMAX*INCMAX ), YT( NMAX ), |
|
|
$ YY( NMAX*INCMAX ), Z( NMAX ) |
|
|
REAL G( NMAX ) |
|
|
INTEGER IDIM( NIDIM ), INC( NINC ) |
|
|
* .. Local Scalars .. |
|
|
COMPLEX ALPHA, ALS, TRANSL |
|
|
REAL ERR, ERRMAX |
|
|
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 CONJ, NULL, RESET, SAME |
|
|
* .. Local Arrays .. |
|
|
COMPLEX W( 1 ) |
|
|
LOGICAL ISAME( 13 ) |
|
|
* .. External Functions .. |
|
|
LOGICAL LCE, LCERES |
|
|
EXTERNAL LCE, LCERES |
|
|
* .. External Subroutines .. |
|
|
EXTERNAL CGERC, CGERU, CMAKE, CMVCH |
|
|
* .. Intrinsic Functions .. |
|
|
INTRINSIC ABS, CONJG, MAX, MIN |
|
|
* .. Scalars in Common .. |
|
|
INTEGER INFOT, NOUTC |
|
|
LOGICAL LERR, OK |
|
|
* .. Common blocks .. |
|
|
COMMON /INFOC/INFOT, NOUTC, OK, LERR |
|
|
* .. Executable Statements .. |
|
|
CONJ = SNAME( 5: 5 ).EQ. |
|
|
* Define the number of arguments. |
|
|
NARGS = 9 |
|
|
* |
|
|
NC = 0 |
|
|
RESET = .TRUE. |
|
|
ERRMAX = RZERO |
|
|
* |
|
|
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( CONJ |
|
|
IF( REWI |
|
|
$ REWIND |
|
|
CALL |
|
|
$ LDA |
|
|
ELSE |
|
|
IF( REWI |
|
|
$ REWIND |
|
|
CALL |
|
|
$ LDA |
|
|
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 ) |
|
|
$ 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 |
|
|
IF( CONJ |
|
|
$ W( 1 ) |
|
|
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, , F4.1, |
|
|
$ , I2, , I2, , I3, , |
|
|
$ ) |
|
|
9993 FORMAT( , |
|
|
$ ) |
|
|
* |
|
|
* End of CCHK4. |
|
|
* |
|
|
END |
|
|
SUBROUTINE CCHK5( 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 CHER and CHPR. |
|
|
* |
|
|
* 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 .. |
|
|
COMPLEX ZERO, HALF, ONE |
|
|
PARAMETER ( ZERO = ( 0.0, 0.0 ), HALF = ( 0.5, 0.0 ), |
|
|
$ ONE = ( 1.0, 0.0 ) ) |
|
|
REAL RZERO |
|
|
PARAMETER ( RZERO = 0.0 ) |
|
|
* .. Scalar Arguments .. |
|
|
REAL EPS, THRESH |
|
|
INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA |
|
|
LOGICAL FATAL, REWI, TRACE |
|
|
CHARACTER*6 SNAME |
|
|
* .. Array Arguments .. |
|
|
COMPLEX A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), |
|
|
$ AS( NMAX*NMAX ), X( NMAX ), XS( NMAX*INCMAX ), |
|
|
$ XX( NMAX*INCMAX ), Y( NMAX ), |
|
|
$ YS( NMAX*INCMAX ), YT( NMAX ), |
|
|
$ YY( NMAX*INCMAX ), Z( NMAX ) |
|
|
REAL G( NMAX ) |
|
|
INTEGER IDIM( NIDIM ), INC( NINC ) |
|
|
* .. Local Scalars .. |
|
|
COMPLEX ALPHA, TRANSL |
|
|
REAL ERR, ERRMAX, RALPHA, RALS |
|
|
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 .. |
|
|
COMPLEX W( 1 ) |
|
|
LOGICAL ISAME( 13 ) |
|
|
* .. External Functions .. |
|
|
LOGICAL LCE, LCERES |
|
|
EXTERNAL LCE, LCERES |
|
|
* .. External Subroutines .. |
|
|
EXTERNAL CHER, CHPR, CMAKE, CMVCH |
|
|
* .. Intrinsic Functions .. |
|
|
INTRINSIC ABS, CMPLX, CONJG, MAX, REAL |
|
|
* .. 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 = RZERO |
|
|
* |
|
|
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 |
|
|
RALPHA |
|
|
ALPHA |
|
|
NULL |
|
|
|
|
|
|
|
|
|
|
|
TRANSL |
|
|
CALL |
|
|
$ AA, LDA, N |
|
|
|
|
|
NC |
|
|
|
|
|
|
|
|
|
|
|
UPLOS |
|
|
NS |
|
|
RALS |
|
|
DO |
|
|
AS( I ) |
|
|
10 CONTINUE |
|
|
LDAS |
|
|
DO |
|
|
XS( I ) |
|
|
20 CONTINUE |
|
|
INCXS |
|
|
|
|
|
|
|
|
|
|
|
IF( FULL |
|
|
IF( TRACE |
|
|
$ WRITE( NTRA, FMT |
|
|
$ RALPHA, INCX, LDA |
|
|
IF( REWI |
|
|
$ REWIND |
|
|
CALL |
|
|
ELSE |
|
|
IF( TRACE |
|
|
$ WRITE( NTRA, FMT |
|
|
$ RALPHA, 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 CCHK5. |
|
|
* |
|
|
END |
|
|
SUBROUTINE CCHK6( 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 CHER2 and CHPR2. |
|
|
* |
|
|
* 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 .. |
|
|
COMPLEX ZERO, HALF, ONE |
|
|
PARAMETER ( ZERO = ( 0.0, 0.0 ), HALF = ( 0.5, 0.0 ), |
|
|
$ ONE = ( 1.0, 0.0 ) ) |
|
|
REAL RZERO |
|
|
PARAMETER ( RZERO = 0.0 ) |
|
|
* .. Scalar Arguments .. |
|
|
REAL EPS, THRESH |
|
|
INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA |
|
|
LOGICAL FATAL, REWI, TRACE |
|
|
CHARACTER*6 SNAME |
|
|
* .. Array Arguments .. |
|
|
COMPLEX A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), |
|
|
$ AS( NMAX*NMAX ), X( NMAX ), XS( NMAX*INCMAX ), |
|
|
$ XX( NMAX*INCMAX ), Y( NMAX ), |
|
|
$ YS( NMAX*INCMAX ), YT( NMAX ), |
|
|
$ YY( NMAX*INCMAX ), Z( NMAX, 2 ) |
|
|
REAL G( NMAX ) |
|
|
INTEGER IDIM( NIDIM ), INC( NINC ) |
|
|
* .. Local Scalars .. |
|
|
COMPLEX ALPHA, ALS, TRANSL |
|
|
REAL ERR, ERRMAX |
|
|
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 .. |
|
|
COMPLEX W( 2 ) |
|
|
LOGICAL ISAME( 13 ) |
|
|
* .. External Functions .. |
|
|
LOGICAL LCE, LCERES |
|
|
EXTERNAL LCE, LCERES |
|
|
* .. External Subroutines .. |
|
|
EXTERNAL CHER2, CHPR2, CMAKE, CMVCH |
|
|
* .. Intrinsic Functions .. |
|
|
INTRINSIC ABS, CONJG, 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 = RZERO |
|
|
* |
|
|
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, , |
|
|
$ F4.1, , I2, , I2, , |
|
|
$ ) |
|
|
9993 FORMAT( 1X, I6, , A6, , A1, , I3, , F4.1, , |
|
|
$ F4.1, , I2, , I2, , I3, , |
|
|
$ ) |
|
|
9992 FORMAT( , |
|
|
$ ) |
|
|
* |
|
|
* End of CCHK6. |
|
|
* |
|
|
END |
|
|
SUBROUTINE CCHKE( ISNUM, SRNAMT, NOUT ) |
|
|
* |
|
|
* Tests the error exits from the Level 2 Blas. |
|
|
* Requires a special version of the error-handling routine XERBLA. |
|
|
* ALPHA, RALPHA, 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 .. |
|
|
COMPLEX ALPHA, BETA |
|
|
REAL RALPHA |
|
|
* .. Local Arrays .. |
|
|
COMPLEX A( 1, 1 ), X( 1 ), Y( 1 ) |
|
|
* .. External Subroutines .. |
|
|
EXTERNAL CGBMV, CGEMV, CGERC, CGERU, CHBMV, CHEMV, CHER, |
|
|
$ CHER2, CHKXER, CHPMV, CHPR, CHPR2, CTBMV, |
|
|
$ CTBSV, CTPMV, CTPSV, CTRMV, CTRSV |
|
|
* .. 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, |
|
|
$ 170 )ISNUM |
|
|
10 INFOT = 1 |
|
|
CALL CGEMV( , 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CGEMV( , -1, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CGEMV( , 0, -1, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CGEMV( , 2, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 8 |
|
|
CALL CGEMV( , 0, 0, ALPHA, A, 1, X, 0, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CGEMV( , 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 0 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 180 |
|
|
20 INFOT = 1 |
|
|
CALL CGBMV( , 0, 0, 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CGBMV( , -1, 0, 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CGBMV( , 0, -1, 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CGBMV( , 0, 0, -1, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CGBMV( , 2, 0, 0, -1, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 8 |
|
|
CALL CGBMV( , 0, 0, 1, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CGBMV( , 0, 0, 0, 0, ALPHA, A, 1, X, 0, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 13 |
|
|
CALL CGBMV( , 0, 0, 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 0 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 180 |
|
|
30 INFOT = 1 |
|
|
CALL CHEMV( , 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CHEMV( , -1, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CHEMV( , 2, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CHEMV( , 0, ALPHA, A, 1, X, 0, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CHEMV( , 0, ALPHA, A, 1, X, 1, BETA, Y, 0 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 180 |
|
|
40 INFOT = 1 |
|
|
CALL CHBMV( , 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CHBMV( , -1, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CHBMV( , 0, -1, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CHBMV( , 0, 1, ALPHA, A, 1, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 8 |
|
|
CALL CHBMV( , 0, 0, ALPHA, A, 1, X, 0, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CHBMV( , 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 0 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 180 |
|
|
50 INFOT = 1 |
|
|
CALL CHPMV( , 0, ALPHA, A, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CHPMV( , -1, ALPHA, A, X, 1, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CHPMV( , 0, ALPHA, A, X, 0, BETA, Y, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CHPMV( , 0, ALPHA, A, X, 1, BETA, Y, 0 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 180 |
|
|
60 INFOT = 1 |
|
|
CALL CTRMV( , , , 0, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CTRMV( , , , 0, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CTRMV( , , , 0, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CTRMV( , , , -1, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRMV( , , , 2, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 8 |
|
|
CALL CTRMV( , , , 0, A, 1, X, 0 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 180 |
|
|
70 INFOT = 1 |
|
|
CALL CTBMV( , , , 0, 0, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CTBMV( , , , 0, 0, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CTBMV( , , , 0, 0, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CTBMV( , , , -1, 0, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTBMV( , , , 0, -1, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CTBMV( , , , 0, 1, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTBMV( , , , 0, 0, A, 1, X, 0 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 180 |
|
|
80 INFOT = 1 |
|
|
CALL CTPMV( , , , 0, A, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CTPMV( , , , 0, A, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CTPMV( , , , 0, A, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CTPMV( , , , -1, A, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CTPMV( , , , 0, A, X, 0 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 180 |
|
|
90 INFOT = 1 |
|
|
CALL CTRSV( , , , 0, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CTRSV( , , , 0, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CTRSV( , , , 0, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CTRSV( , , , -1, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRSV( , , , 2, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 8 |
|
|
CALL CTRSV( , , , 0, A, 1, X, 0 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 180 |
|
|
100 INFOT = 1 |
|
|
CALL CTBSV( , , , 0, 0, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CTBSV( , , , 0, 0, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CTBSV( , , , 0, 0, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CTBSV( , , , -1, 0, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTBSV( , , , 0, -1, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CTBSV( , , , 0, 1, A, 1, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTBSV( , , , 0, 0, A, 1, X, 0 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 180 |
|
|
110 INFOT = 1 |
|
|
CALL CTPSV( , , , 0, A, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CTPSV( , , , 0, A, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CTPSV( , , , 0, A, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CTPSV( , , , -1, A, X, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CTPSV( , , , 0, A, X, 0 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 180 |
|
|
120 INFOT = 1 |
|
|
CALL CGERC( -1, 0, ALPHA, X, 1, Y, 1, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CGERC( 0, -1, ALPHA, X, 1, Y, 1, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CGERC( 0, 0, ALPHA, X, 0, Y, 1, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CGERC( 0, 0, ALPHA, X, 1, Y, 0, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CGERC( 2, 0, ALPHA, X, 1, Y, 1, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 180 |
|
|
130 INFOT = 1 |
|
|
CALL CGERU( -1, 0, ALPHA, X, 1, Y, 1, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CGERU( 0, -1, ALPHA, X, 1, Y, 1, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CGERU( 0, 0, ALPHA, X, 0, Y, 1, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CGERU( 0, 0, ALPHA, X, 1, Y, 0, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CGERU( 2, 0, ALPHA, X, 1, Y, 1, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 180 |
|
|
140 INFOT = 1 |
|
|
CALL CHER( , 0, RALPHA, X, 1, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CHER( , -1, RALPHA, X, 1, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CHER( , 0, RALPHA, X, 0, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CHER( , 2, RALPHA, X, 1, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 180 |
|
|
150 INFOT = 1 |
|
|
CALL CHPR( , 0, RALPHA, X, 1, A ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CHPR( , -1, RALPHA, X, 1, A ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CHPR( , 0, RALPHA, X, 0, A ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 180 |
|
|
160 INFOT = 1 |
|
|
CALL CHER2( , 0, ALPHA, X, 1, Y, 1, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CHER2( , -1, ALPHA, X, 1, Y, 1, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CHER2( , 0, ALPHA, X, 0, Y, 1, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CHER2( , 0, ALPHA, X, 1, Y, 0, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CHER2( , 2, ALPHA, X, 1, Y, 1, A, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 180 |
|
|
170 INFOT = 1 |
|
|
CALL CHPR2( , 0, ALPHA, X, 1, Y, 1, A ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CHPR2( , -1, ALPHA, X, 1, Y, 1, A ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CHPR2( , 0, ALPHA, X, 0, Y, 1, A ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CHPR2( , 0, ALPHA, X, 1, Y, 0, A ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
* |
|
|
180 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 CCHKE. |
|
|
* |
|
|
END |
|
|
SUBROUTINE CMAKE( 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 .. |
|
|
COMPLEX ZERO, ONE |
|
|
PARAMETER ( ZERO = ( 0.0, 0.0 ), ONE = ( 1.0, 0.0 ) ) |
|
|
COMPLEX ROGUE |
|
|
PARAMETER ( ROGUE = ( -1.0E10, 1.0E10 ) ) |
|
|
REAL RZERO |
|
|
PARAMETER ( RZERO = 0.0 ) |
|
|
REAL RROGUE |
|
|
PARAMETER ( RROGUE = -1.0E10 ) |
|
|
* .. Scalar Arguments .. |
|
|
COMPLEX TRANSL |
|
|
INTEGER KL, KU, LDA, M, N, NMAX |
|
|
LOGICAL RESET |
|
|
CHARACTER*1 DIAG, UPLO |
|
|
CHARACTER*2 TYPE |
|
|
* .. Array Arguments .. |
|
|
COMPLEX A( NMAX, * ), AA( * ) |
|
|
* .. Local Scalars .. |
|
|
INTEGER I, I1, I2, I3, IBEG, IEND, IOFF, J, JJ, KK |
|
|
LOGICAL GEN, LOWER, SYM, TRI, UNIT, UPPER |
|
|
* .. External Functions .. |
|
|
COMPLEX CBEG |
|
|
EXTERNAL CBEG |
|
|
* .. Intrinsic Functions .. |
|
|
INTRINSIC CMPLX, CONJG, MAX, MIN, REAL |
|
|
* .. 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 ) = CBEG( RESET ) + TRANSL |
|
|
ELSE |
|
|
A( I, J ) = ZERO |
|
|
END IF |
|
|
IF( I.NE.J )THEN |
|
|
IF( SYM )THEN |
|
|
A( J, I ) = CONJG( A( I, J ) ) |
|
|
ELSE IF( TRI )THEN |
|
|
A( J, I ) = ZERO |
|
|
END IF |
|
|
END IF |
|
|
END IF |
|
|
10 CONTINUE |
|
|
IF( SYM ) |
|
|
$ A( J, J ) = CMPLX( REAL( A( J, J ) ), RZERO ) |
|
|
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 |
|
|
IF( SYM )THEN |
|
|
JJ = J + ( J - 1 )*LDA |
|
|
AA( JJ ) = CMPLX( REAL( AA( JJ ) ), RROGUE ) |
|
|
END IF |
|
|
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 |
|
|
IF( SYM )THEN |
|
|
JJ = KK + ( J - 1 )*LDA |
|
|
AA( JJ ) = CMPLX( REAL( AA( JJ ) ), RROGUE ) |
|
|
END IF |
|
|
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 |
|
|
IF( SYM ) |
|
|
$ AA( IOFF ) = CMPLX( REAL( AA( IOFF ) ), RROGUE ) |
|
|
END IF |
|
|
180 CONTINUE |
|
|
190 CONTINUE |
|
|
END IF |
|
|
RETURN |
|
|
* |
|
|
* End of CMAKE. |
|
|
* |
|
|
END |
|
|
SUBROUTINE CMVCH( 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 .. |
|
|
COMPLEX ZERO |
|
|
PARAMETER ( ZERO = ( 0.0, 0.0 ) ) |
|
|
REAL RZERO, RONE |
|
|
PARAMETER ( RZERO = 0.0, RONE = 1.0 ) |
|
|
* .. Scalar Arguments .. |
|
|
COMPLEX ALPHA, BETA |
|
|
REAL EPS, ERR |
|
|
INTEGER INCX, INCY, M, N, NMAX, NOUT |
|
|
LOGICAL FATAL, MV |
|
|
CHARACTER*1 TRANS |
|
|
* .. Array Arguments .. |
|
|
COMPLEX A( NMAX, * ), X( * ), Y( * ), YT( * ), YY( * ) |
|
|
REAL G( * ) |
|
|
* .. Local Scalars .. |
|
|
COMPLEX C |
|
|
REAL ERRI |
|
|
INTEGER I, INCXL, INCYL, IY, J, JX, KX, KY, ML, NL |
|
|
LOGICAL CTRAN, TRAN |
|
|
* .. Intrinsic Functions .. |
|
|
INTRINSIC ABS, AIMAG, CONJG, MAX, REAL, SQRT |
|
|
* .. Statement Functions .. |
|
|
REAL ABS1 |
|
|
* .. Statement Function definitions .. |
|
|
ABS1( C ) = ABS( REAL( C ) ) + ABS( AIMAG( C ) ) |
|
|
* .. Executable Statements .. |
|
|
TRAN = TRANS.EQ. |
|
|
CTRAN = TRANS.EQ. |
|
|
IF( TRAN.OR.CTRAN )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 40 I = 1, ML |
|
|
YT( IY ) = ZERO |
|
|
G( IY ) = RZERO |
|
|
JX = KX |
|
|
IF( TRAN )THEN |
|
|
DO 10 J = 1, NL |
|
|
YT( IY ) = YT( IY ) + A( J, I )*X( JX ) |
|
|
G( IY ) = G( IY ) + ABS1( A( J, I ) )*ABS1( X( JX ) ) |
|
|
JX = JX + INCXL |
|
|
10 CONTINUE |
|
|
ELSE IF( CTRAN )THEN |
|
|
DO 20 J = 1, NL |
|
|
YT( IY ) = YT( IY ) + CONJG( A( J, I ) )*X( JX ) |
|
|
G( IY ) = G( IY ) + ABS1( A( J, I ) )*ABS1( X( JX ) ) |
|
|
JX = JX + INCXL |
|
|
20 CONTINUE |
|
|
ELSE |
|
|
DO 30 J = 1, NL |
|
|
YT( IY ) = YT( IY ) + A( I, J )*X( JX ) |
|
|
G( IY ) = G( IY ) + ABS1( A( I, J ) )*ABS1( X( JX ) ) |
|
|
JX = JX + INCXL |
|
|
30 CONTINUE |
|
|
END IF |
|
|
YT( IY ) = ALPHA*YT( IY ) + BETA*Y( IY ) |
|
|
G( IY ) = ABS1( ALPHA )*G( IY ) + ABS1( BETA )*ABS1( Y( IY ) ) |
|
|
IY = IY + INCYL |
|
|
40 CONTINUE |
|
|
* |
|
|
* Compute the error ratio for this result. |
|
|
* |
|
|
ERR = ZERO |
|
|
DO 50 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.RONE ) |
|
|
$ GO TO 60 |
|
|
50 CONTINUE |
|
|
* If the loop completes, all results are at least half accurate. |
|
|
GO TO 80 |
|
|
* |
|
|
* Report fatal error. |
|
|
* |
|
|
60 FATAL = .TRUE. |
|
|
WRITE( NOUT, FMT = 9999 ) |
|
|
DO 70 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 |
|
|
70 CONTINUE |
|
|
* |
|
|
80 CONTINUE |
|
|
RETURN |
|
|
* |
|
|
9999 FORMAT( , |
|
|
$ , / |
|
|
$ 'SULT COMPUTED RESULT' ) |
|
|
9998 FORMAT( 1X, I7, 2( ' (', G15.6, ',', G15.6, ')' ) ) |
|
|
|
|
|
|
|
|
|
|
|
END |
|
|
LOGICAL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INTEGER |
|
|
|
|
|
COMPLEX |
|
|
|
|
|
INTEGER |
|
|
|
|
|
DO |
|
|
IF( RI( I |
|
|
$ GO |
|
|
10 CONTINUE |
|
|
LCE |
|
|
GO |
|
|
20 CONTINUE |
|
|
LCE |
|
|
30 RETURN |
|
|
|
|
|
|
|
|
|
|
|
END |
|
|
LOGICAL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INTEGER |
|
|
CHARACTER*1 UPLO |
|
|
CHARACTER*2 TYPE |
|
|
|
|
|
COMPLEX |
|
|
|
|
|
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 |
|
|
|
|
|
LCERES |
|
|
GO |
|
|
70 CONTINUE |
|
|
LCERES |
|
|
80 RETURN |
|
|
|
|
|
|
|
|
|
|
|
END |
|
|
COMPLEX |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOGICAL |
|
|
|
|
|
INTEGER |
|
|
|
|
|
SAVE |
|
|
|
|
|
INTRINSIC |
|
|
|
|
|
IF( RESET |
|
|
|
|
|
MI |
|
|
MJ |
|
|
I |
|
|
J |
|
|
IC |
|
|
RESET |
|
|
END |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IC |
|
|
10 I |
|
|
J |
|
|
I /1000 ) |
|
|
J = J - 1000*( J/ |
|
|
IF( IC.GE.5 )THEN |
|
|
IC |
|
|
GO |
|
|
END |
|
|
CBEG /1001.0, ( J - 500 )/ |
|
|
RETURN |
|
|
|
|
|
|
|
|
|
|
|
END |
|
|
REAL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
REAL |
|
|
|
|
|
SDIFF |
|
|
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 |
|
|
|
|
|
|