|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROGRAM CBLAT3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INTEGER NIN |
|
|
PARAMETER ( NIN |
|
|
INTEGER |
|
|
PARAMETER |
|
|
COMPLEX |
|
|
PARAMETER |
|
|
REAL |
|
|
PARAMETER |
|
|
INTEGER |
|
|
PARAMETER |
|
|
INTEGER |
|
|
PARAMETER |
|
|
|
|
|
REAL |
|
|
INTEGER |
|
|
LOGICAL |
|
|
$ TSTERR |
|
|
CHARACTER*1 TRANSA, TRANSB |
|
|
CHARACTER*6 SNAMET |
|
|
CHARACTER*32 SNAPS, SUMMRY |
|
|
|
|
|
COMPLEX |
|
|
$ ALF( NALMAX |
|
|
$ BB( NMAX*NMAX |
|
|
$ BS( NMAX*NMAX |
|
|
$ CC( NMAX*NMAX |
|
|
$ W( 2*NMAX |
|
|
REAL |
|
|
INTEGER |
|
|
LOGICAL |
|
|
CHARACTER*6 SNAMES( NSUBS |
|
|
|
|
|
REAL |
|
|
LOGICAL |
|
|
EXTERNAL |
|
|
|
|
|
EXTERNAL |
|
|
|
|
|
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( 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 |
|
|
IF( .NOT.TSTERR |
|
|
WRITE( NOUT, FMT |
|
|
WRITE( NOUT, FMT |
|
|
END |
|
|
WRITE( NOUT, FMT |
|
|
WRITE( NOUT, FMT |
|
|
WRITE( NOUT, FMT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DO |
|
|
LTEST( I ) |
|
|
20 CONTINUE |
|
|
30 READ( NIN, FMT |
|
|
DO |
|
|
IF( SNAMET.EQ.SNAMES( I ) |
|
|
$ GO |
|
|
40 CONTINUE |
|
|
WRITE( NOUT, FMT |
|
|
STOP |
|
|
50 LTEST( I ) |
|
|
GO |
|
|
|
|
|
60 CONTINUE |
|
|
CLOSE |
|
|
|
|
|
|
|
|
|
|
|
EPS |
|
|
WRITE( NOUT, FMT |
|
|
|
|
|
|
|
|
|
|
|
N |
|
|
DO |
|
|
DO |
|
|
AB( I, J ) |
|
|
90 CONTINUE |
|
|
AB( J, NMAX |
|
|
AB( 1, NMAX |
|
|
C( J, 1 ) |
|
|
100 CONTINUE |
|
|
DO |
|
|
CC( J ) /2 - ( ( J + 1 )*J*( J - 1 ) )/ |
|
|
110 CONTINUE |
|
|
|
|
|
|
|
|
TRANSA |
|
|
TRANSB |
|
|
CALL |
|
|
$ AB( 1, NMAX |
|
|
$ NMAX, EPS, ERR, FATAL, NOUT, .TRUE. ) |
|
|
SAME |
|
|
IF( .NOT.SAME.OR.ERR.NE.RZERO |
|
|
WRITE( NOUT, FMT |
|
|
STOP |
|
|
END |
|
|
TRANSB |
|
|
CALL |
|
|
$ AB( 1, NMAX |
|
|
$ NMAX, EPS, ERR, FATAL, NOUT, .TRUE. ) |
|
|
SAME |
|
|
IF( .NOT.SAME.OR.ERR.NE.RZERO |
|
|
WRITE( NOUT, FMT |
|
|
STOP |
|
|
END |
|
|
DO |
|
|
AB( J, NMAX |
|
|
AB( 1, NMAX |
|
|
120 CONTINUE |
|
|
DO |
|
|
CC( N /2 - |
|
|
$ ( ( J + 1 )*J*( J - 1 ) )/ |
|
|
130 CONTINUE |
|
|
TRANSA |
|
|
TRANSB |
|
|
CALL |
|
|
$ AB( 1, NMAX |
|
|
$ NMAX, EPS, ERR, FATAL, NOUT, .TRUE. ) |
|
|
SAME |
|
|
IF( .NOT.SAME.OR.ERR.NE.RZERO |
|
|
WRITE( NOUT, FMT |
|
|
STOP |
|
|
END |
|
|
TRANSB |
|
|
CALL |
|
|
$ AB( 1, NMAX |
|
|
$ NMAX, 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 |
|
|
$ 180, 180 )ISNUM |
|
|
|
|
|
140 CALL |
|
|
$ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, |
|
|
$ NMAX, AB, AA, AS, AB( 1, NMAX |
|
|
$ CC, CS, CT, G |
|
|
GO |
|
|
|
|
|
150 CALL |
|
|
$ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, |
|
|
$ NMAX, AB, AA, AS, AB( 1, NMAX |
|
|
$ CC, CS, CT, G |
|
|
GO |
|
|
|
|
|
160 CALL |
|
|
$ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, |
|
|
$ AA, AS, AB( 1, NMAX |
|
|
GO |
|
|
|
|
|
170 CALL |
|
|
$ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, |
|
|
$ NMAX, AB, AA, AS, AB( 1, NMAX |
|
|
$ CC, CS, CT, G |
|
|
GO |
|
|
|
|
|
180 CALL |
|
|
$ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, |
|
|
$ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W |
|
|
GO |
|
|
|
|
|
190 IF( FATAL.AND.SFATAL |
|
|
$ GO |
|
|
END |
|
|
200 CONTINUE |
|
|
WRITE( NOUT, FMT |
|
|
GO |
|
|
|
|
|
210 CONTINUE |
|
|
WRITE( NOUT, FMT |
|
|
GO |
|
|
|
|
|
220 CONTINUE |
|
|
WRITE( NOUT, FMT |
|
|
|
|
|
230 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( ' TESTS OF THE COMPLEX LEVEL 3 BLAS', |
|
|
$ 'OLLOWING PARAMETER VALUES WILL BE USED:' ) |
|
|
9994 FORMAT( ' FOR N ', 9I6 |
|
|
9993 FORMAT( ' FOR ALPHA ', |
|
|
$ 7( '(', F4.1, ',', F4.1, ') ', : ) ) |
|
|
9992 FORMAT( ' FOR BETA ', |
|
|
$ 7( '(', F4.1, ',', F4.1, ') ', : ) ) |
|
|
9991 FORMAT( ' AMEND DATA FILE OR INCREASE ARRAY SIZES IN PROGRAM', |
|
|
$ / ) |
|
|
9990 FORMAT( , A6, , /' ******* T', |
|
|
$ 'ESTS ABANDONED *******' ) |
|
|
9989 FORMAT( ' ERROR IN CMMCH - IN-LINE DOT PRODUCTS ARE BEING EVALU', |
|
|
$ 'ATED WRONGLY.', /, A1, |
|
|
$ , A1, /' AND RETURNED SAME = ', L1, ' AND ', |
|
|
$ 'ERR = ', F12.3, '.', /, |
|
|
$ , /' ******* TESTS ABANDONED ', |
|
|
$ '*******' ) |
|
|
9988 FORMAT( A6, L2 |
|
|
9987 FORMAT( 1X, A6, ' WAS NOT TESTED' ) |
|
|
9986 FORMAT( / ) |
|
|
9985 FORMAT( /' ******* FATAL ERROR - TESTS ABANDONED *******' ) |
|
|
9984 FORMAT( ' ERROR-EXITS WILL NOT BE TESTED' ) |
|
|
|
|
|
|
|
|
|
|
|
END |
|
|
SUBROUTINE |
|
|
$ FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, NMAX, |
|
|
$ A, AA, AS, B, BB, BS, C, CC, CS, CT, G |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
COMPLEX |
|
|
PARAMETER |
|
|
REAL |
|
|
PARAMETER |
|
|
|
|
|
REAL |
|
|
INTEGER |
|
|
LOGICAL |
|
|
CHARACTER*6 SNAME |
|
|
|
|
|
COMPLEX |
|
|
$ AS( NMAX*NMAX |
|
|
$ BB( NMAX*NMAX |
|
|
$ C( NMAX, NMAX |
|
|
$ CS( NMAX*NMAX |
|
|
REAL |
|
|
INTEGER |
|
|
|
|
|
COMPLEX |
|
|
REAL |
|
|
INTEGER |
|
|
$ LBB, LCC, LDA, LDAS, LDB, LDBS, LDC, LDCS, M, |
|
|
$ MA, MB, MS, N, NA, NARGS, NB, NC, NS |
|
|
LOGICAL |
|
|
CHARACTER*1 TRANAS, TRANBS, TRANSA, TRANSB |
|
|
CHARACTER*3 ICH |
|
|
|
|
|
LOGICAL |
|
|
|
|
|
LOGICAL |
|
|
EXTERNAL |
|
|
|
|
|
EXTERNAL |
|
|
|
|
|
INTRINSIC |
|
|
|
|
|
INTEGER |
|
|
LOGICAL |
|
|
|
|
|
COMMON /INFOC/ |
|
|
|
|
|
DATA // |
|
|
|
|
|
|
|
|
NARGS |
|
|
NC |
|
|
RESET |
|
|
ERRMAX |
|
|
|
|
|
DO |
|
|
M |
|
|
|
|
|
DO |
|
|
N |
|
|
|
|
|
LDC |
|
|
IF( LDC.LT.NMAX |
|
|
$ LDC |
|
|
|
|
|
IF( LDC.GT.NMAX |
|
|
$ GO |
|
|
LCC |
|
|
NULL |
|
|
|
|
|
DO |
|
|
K |
|
|
|
|
|
DO |
|
|
TRANSA |
|
|
TRANA |
|
|
|
|
|
IF( TRANA |
|
|
MA |
|
|
NA |
|
|
ELSE |
|
|
MA |
|
|
NA |
|
|
END |
|
|
|
|
|
LDA |
|
|
IF( LDA.LT.NMAX |
|
|
$ LDA |
|
|
|
|
|
IF( LDA.GT.NMAX |
|
|
$ GO |
|
|
LAA |
|
|
|
|
|
|
|
|
|
|
|
CALL |
|
|
$ RESET, ZERO |
|
|
|
|
|
DO |
|
|
TRANSB |
|
|
TRANB |
|
|
|
|
|
IF( TRANB |
|
|
MB |
|
|
NB |
|
|
ELSE |
|
|
MB |
|
|
NB |
|
|
END |
|
|
|
|
|
LDB |
|
|
IF( LDB.LT.NMAX |
|
|
$ LDB |
|
|
|
|
|
IF( LDB.GT.NMAX |
|
|
$ GO |
|
|
LBB |
|
|
|
|
|
|
|
|
|
|
|
CALL |
|
|
$ LDB, RESET, ZERO |
|
|
|
|
|
DO |
|
|
ALPHA |
|
|
|
|
|
DO |
|
|
BETA |
|
|
|
|
|
|
|
|
|
|
|
CALL |
|
|
$ CC, LDC, RESET, ZERO |
|
|
|
|
|
NC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TRANAS |
|
|
TRANBS |
|
|
MS |
|
|
NS |
|
|
KS |
|
|
ALS |
|
|
DO |
|
|
AS( I ) |
|
|
10 CONTINUE |
|
|
LDAS |
|
|
DO |
|
|
BS( I ) |
|
|
20 CONTINUE |
|
|
LDBS |
|
|
BLS |
|
|
DO |
|
|
CS( I ) |
|
|
30 CONTINUE |
|
|
LDCS |
|
|
|
|
|
|
|
|
|
|
|
IF( TRACE |
|
|
$ WRITE( NTRA, FMT |
|
|
$ TRANSA, TRANSB, M, N, K, ALPHA, LDA, LDB, |
|
|
$ BETA, LDC |
|
|
IF( REWI |
|
|
$ REWIND |
|
|
CALL |
|
|
$ AA, LDA, BB, LDB, BETA, CC, LDC |
|
|
|
|
|
|
|
|
|
|
|
IF( .NOT.OK |
|
|
WRITE( NOUT, FMT |
|
|
FATAL |
|
|
GO |
|
|
END |
|
|
|
|
|
|
|
|
|
|
|
ISAME( 1 ) |
|
|
ISAME( 2 ) |
|
|
ISAME( 3 ) |
|
|
ISAME( 4 ) |
|
|
ISAME( 5 ) |
|
|
ISAME( 6 ) |
|
|
ISAME( 7 ) |
|
|
ISAME( 8 ) |
|
|
ISAME( 9 ) |
|
|
ISAME( 10 ) |
|
|
ISAME( 11 ) |
|
|
IF( NULL |
|
|
ISAME( 12 ) |
|
|
ELSE |
|
|
ISAME( 12 ) |
|
|
$ CC, LDC |
|
|
END |
|
|
ISAME( 13 ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SAME |
|
|
DO |
|
|
SAME |
|
|
IF( .NOT.ISAME( I ) |
|
|
$ WRITE( NOUT, FMT |
|
|
40 CONTINUE |
|
|
IF( .NOT.SAME |
|
|
FATAL |
|
|
GO |
|
|
END |
|
|
|
|
|
IF( .NOT.NULL |
|
|
|
|
|
|
|
|
|
|
|
CALL |
|
|
$ ALPHA, A, NMAX, B, NMAX, BETA, |
|
|
$ C, NMAX, CT, G, CC, LDC, EPS, |
|
|
$ ERR, FATAL, NOUT, .TRUE. ) |
|
|
ERRMAX |
|
|
|
|
|
|
|
|
IF( FATAL |
|
|
$ 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 |
|
|
WRITE( NOUT, FMT |
|
|
$ ALPHA, LDA, LDB, BETA, LDC |
|
|
|
|
|
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, , A1, , |
|
|
$ 3( I3, ), , F4.1, , F4.1, , I3, , I3, |
|
|
$ , F4.1, , F4.1, , I3, ) |
|
|
9994 FORMAT( , |
|
|
$ ) |
|
|
* |
|
|
* End of CCHK1. |
|
|
* |
|
|
END |
|
|
SUBROUTINE CCHK2( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI, |
|
|
$ FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, NMAX, |
|
|
$ A, AA, AS, B, BB, BS, C, CC, CS, CT, G ) |
|
|
* |
|
|
* Tests CHEMM and CSYMM. |
|
|
* |
|
|
* Auxiliary routine for test program for Level 3 Blas. |
|
|
* |
|
|
* -- Written on 8-February-1989. |
|
|
* Jack Dongarra, Argonne National Laboratory. |
|
|
* Iain Duff, AERE Harwell. |
|
|
* Jeremy Du Croz, Numerical Algorithms Group Ltd. |
|
|
* Sven Hammarling, Numerical Algorithms Group Ltd. |
|
|
* |
|
|
* .. Parameters .. |
|
|
COMPLEX ZERO |
|
|
PARAMETER ( ZERO = ( 0.0, 0.0 ) ) |
|
|
REAL RZERO |
|
|
PARAMETER ( RZERO = 0.0 ) |
|
|
* .. Scalar Arguments .. |
|
|
REAL EPS, THRESH |
|
|
INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA |
|
|
LOGICAL FATAL, REWI, TRACE |
|
|
CHARACTER*6 SNAME |
|
|
* .. Array Arguments .. |
|
|
COMPLEX A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), |
|
|
$ AS( NMAX*NMAX ), B( NMAX, NMAX ), |
|
|
$ BB( NMAX*NMAX ), BET( NBET ), BS( NMAX*NMAX ), |
|
|
$ C( NMAX, NMAX ), CC( NMAX*NMAX ), |
|
|
$ CS( NMAX*NMAX ), CT( NMAX ) |
|
|
REAL G( NMAX ) |
|
|
INTEGER IDIM( NIDIM ) |
|
|
* .. Local Scalars .. |
|
|
COMPLEX ALPHA, ALS, BETA, BLS |
|
|
REAL ERR, ERRMAX |
|
|
INTEGER I, IA, IB, ICS, ICU, IM, IN, LAA, LBB, LCC, |
|
|
$ LDA, LDAS, LDB, LDBS, LDC, LDCS, M, MS, N, NA, |
|
|
$ NARGS, NC, NS |
|
|
LOGICAL CONJ, LEFT, NULL, RESET, SAME |
|
|
CHARACTER*1 SIDE, SIDES, UPLO, UPLOS |
|
|
CHARACTER*2 ICHS, ICHU |
|
|
* .. Local Arrays .. |
|
|
LOGICAL ISAME( 13 ) |
|
|
* .. External Functions .. |
|
|
LOGICAL LCE, LCERES |
|
|
EXTERNAL LCE, LCERES |
|
|
* .. External Subroutines .. |
|
|
EXTERNAL CHEMM, CMAKE, CMMCH, CSYMM |
|
|
* .. Intrinsic Functions .. |
|
|
INTRINSIC MAX |
|
|
* .. Scalars in Common .. |
|
|
INTEGER INFOT, NOUTC |
|
|
LOGICAL LERR, OK |
|
|
* .. Common blocks .. |
|
|
COMMON /INFOC/INFOT, NOUTC, OK, LERR |
|
|
* .. Data statements .. |
|
|
DATA ICHS/'LR'/, ICHU/'UL'/ |
|
|
* .. Executable Statements .. |
|
|
CONJ = SNAME( 2: 3 ).EQ. |
|
|
* |
|
|
NARGS = 12 |
|
|
NC = 0 |
|
|
RESET = .TRUE. |
|
|
ERRMAX = RZERO |
|
|
* |
|
|
DO 100 IM = 1, NIDIM |
|
|
M = IDIM( IM ) |
|
|
* |
|
|
DO 90 IN = 1, NIDIM |
|
|
N = IDIM( IN ) |
|
|
* Set LDC to 1 more than minimum value if room. |
|
|
LDC = M |
|
|
IF( LDC.LT.NMAX ) |
|
|
$ LDC = LDC + 1 |
|
|
* Skip tests if not enough room. |
|
|
IF( LDC.GT.NMAX ) |
|
|
$ GO TO 90 |
|
|
LCC = LDC*N |
|
|
NULL = N.LE.0.OR.M.LE.0 |
|
|
* Set LDB to 1 more than minimum value if room. |
|
|
LDB = M |
|
|
IF( LDB.LT.NMAX ) |
|
|
$ LDB = LDB + 1 |
|
|
* Skip tests if not enough room. |
|
|
IF( LDB.GT.NMAX ) |
|
|
$ GO TO 90 |
|
|
LBB = LDB*N |
|
|
* |
|
|
* Generate the matrix B. |
|
|
* |
|
|
CALL CMAKE( , , , M, N, B, NMAX, BB, LDB, RESET, |
|
|
$ ZERO ) |
|
|
* |
|
|
DO 80 ICS = 1, 2 |
|
|
SIDE = ICHS( ICS: ICS ) |
|
|
LEFT = SIDE.EQ. |
|
|
* |
|
|
IF( LEFT )THEN |
|
|
NA = M |
|
|
ELSE |
|
|
NA = N |
|
|
END IF |
|
|
* Set LDA to 1 more than minimum value if room. |
|
|
LDA = NA |
|
|
IF( LDA.LT.NMAX ) |
|
|
$ LDA = LDA + 1 |
|
|
* Skip tests if not enough room. |
|
|
IF( LDA.GT.NMAX ) |
|
|
$ GO TO 80 |
|
|
LAA = LDA*NA |
|
|
* |
|
|
DO 70 ICU = 1, 2 |
|
|
UPLO = ICHU( ICU: ICU ) |
|
|
* |
|
|
* Generate the hermitian or symmetric matrix A. |
|
|
* |
|
|
CALL CMAKE( SNAME( 2: 3 ), UPLO, , NA, NA, A, NMAX, |
|
|
$ AA, LDA, RESET, ZERO ) |
|
|
* |
|
|
DO 60 IA = 1, NALF |
|
|
ALPHA = ALF( IA ) |
|
|
* |
|
|
DO 50 IB = 1, NBET |
|
|
BETA = BET( IB ) |
|
|
* |
|
|
* Generate the matrix C. |
|
|
* |
|
|
CALL CMAKE( , , , M, N, C, NMAX, CC, |
|
|
$ LDC, RESET, ZERO ) |
|
|
* |
|
|
NC = NC + 1 |
|
|
* |
|
|
* Save every datum before calling the |
|
|
* subroutine. |
|
|
* |
|
|
SIDES = SIDE |
|
|
UPLOS = UPLO |
|
|
MS = M |
|
|
NS = N |
|
|
ALS = ALPHA |
|
|
DO 10 I = 1, LAA |
|
|
AS( I ) = AA( I ) |
|
|
10 CONTINUE |
|
|
LDAS = LDA |
|
|
DO 20 I = 1, LBB |
|
|
BS( I ) = BB( I ) |
|
|
20 CONTINUE |
|
|
LDBS = LDB |
|
|
BLS = BETA |
|
|
DO 30 I = 1, LCC |
|
|
CS( I ) = CC( I ) |
|
|
30 CONTINUE |
|
|
LDCS = LDC |
|
|
* |
|
|
* Call the subroutine. |
|
|
* |
|
|
IF( TRACE ) |
|
|
$ WRITE( NTRA, FMT = 9995 )NC, SNAME, SIDE, |
|
|
$ UPLO, M, N, ALPHA, LDA, LDB, BETA, LDC |
|
|
IF( REWI ) |
|
|
$ REWIND NTRA |
|
|
IF( CONJ )THEN |
|
|
CALL CHEMM( SIDE, UPLO, M, N, ALPHA, AA, LDA, |
|
|
$ BB, LDB, BETA, CC, LDC ) |
|
|
ELSE |
|
|
CALL CSYMM( SIDE, UPLO, M, N, ALPHA, AA, LDA, |
|
|
$ BB, LDB, BETA, CC, LDC ) |
|
|
END IF |
|
|
* |
|
|
* Check if error-exit was taken incorrectly. |
|
|
* |
|
|
IF( .NOT.OK )THEN |
|
|
WRITE( NOUT, FMT = 9994 ) |
|
|
FATAL = .TRUE. |
|
|
GO TO 110 |
|
|
END IF |
|
|
* |
|
|
* See what data changed inside subroutines. |
|
|
* |
|
|
ISAME( 1 ) = SIDES.EQ.SIDE |
|
|
ISAME( 2 ) = UPLOS.EQ.UPLO |
|
|
ISAME( 3 ) = MS.EQ.M |
|
|
ISAME( 4 ) = NS.EQ.N |
|
|
ISAME( 5 ) = ALS.EQ.ALPHA |
|
|
ISAME( 6 ) = LCE( AS, AA, LAA ) |
|
|
ISAME( 7 ) = LDAS.EQ.LDA |
|
|
ISAME( 8 ) = LCE( BS, BB, LBB ) |
|
|
ISAME( 9 ) = LDBS.EQ.LDB |
|
|
ISAME( 10 ) = BLS.EQ.BETA |
|
|
IF( NULL )THEN |
|
|
ISAME( 11 ) = LCE( CS, CC, LCC ) |
|
|
ELSE |
|
|
ISAME( 11 ) = LCERES( , , M, N, CS, |
|
|
$ CC, LDC ) |
|
|
END IF |
|
|
ISAME( 12 ) = LDCS.EQ.LDC |
|
|
* |
|
|
* If data was incorrectly changed, report and |
|
|
* return. |
|
|
* |
|
|
SAME = .TRUE. |
|
|
DO 40 I = 1, NARGS |
|
|
SAME = SAME.AND.ISAME( I ) |
|
|
IF( .NOT.ISAME( I ) ) |
|
|
$ WRITE( NOUT, FMT = 9998 )I |
|
|
40 CONTINUE |
|
|
IF( .NOT.SAME )THEN |
|
|
FATAL = .TRUE. |
|
|
GO TO 110 |
|
|
END IF |
|
|
* |
|
|
IF( .NOT.NULL )THEN |
|
|
* |
|
|
* Check the result. |
|
|
* |
|
|
IF( LEFT )THEN |
|
|
CALL CMMCH( , , M, N, M, ALPHA, A, |
|
|
$ NMAX, B, NMAX, BETA, C, NMAX, |
|
|
$ CT, G, CC, LDC, EPS, ERR, |
|
|
$ FATAL, NOUT, .TRUE. ) |
|
|
ELSE |
|
|
CALL CMMCH( , , M, N, N, ALPHA, B, |
|
|
$ NMAX, A, NMAX, BETA, C, NMAX, |
|
|
$ CT, G, CC, LDC, EPS, ERR, |
|
|
$ FATAL, NOUT, .TRUE. ) |
|
|
END IF |
|
|
ERRMAX = MAX( ERRMAX, ERR ) |
|
|
* If got really bad answer, report and |
|
|
* return. |
|
|
IF( FATAL ) |
|
|
$ GO TO 110 |
|
|
END IF |
|
|
* |
|
|
50 CONTINUE |
|
|
* |
|
|
60 CONTINUE |
|
|
* |
|
|
70 CONTINUE |
|
|
* |
|
|
80 CONTINUE |
|
|
* |
|
|
90 CONTINUE |
|
|
* |
|
|
100 CONTINUE |
|
|
* |
|
|
* Report result. |
|
|
* |
|
|
IF( ERRMAX.LT.THRESH )THEN |
|
|
WRITE( NOUT, FMT = 9999 )SNAME, NC |
|
|
ELSE |
|
|
WRITE( NOUT, FMT = 9997 )SNAME, NC, ERRMAX |
|
|
END IF |
|
|
GO TO 120 |
|
|
* |
|
|
110 CONTINUE |
|
|
WRITE( NOUT, FMT = 9996 )SNAME |
|
|
WRITE( NOUT, FMT = 9995 )NC, SNAME, SIDE, UPLO, M, N, ALPHA, LDA, |
|
|
$ LDB, BETA, LDC |
|
|
* |
|
|
120 CONTINUE |
|
|
RETURN |
|
|
* |
|
|
9999 FORMAT( , A6, , I6, , |
|
|
$ ) |
|
|
9998 FORMAT( , I2, , |
|
|
$ ) |
|
|
9997 FORMAT( , A6, , I6, , |
|
|
$ , /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, |
|
|
$ ' - SUSPECT *******' ) |
|
|
9996 FORMAT( ' ******* ', A6, ' FAILED ON CALL NUMBER:' ) |
|
|
9995 FORMAT( 1X, I6, ': ', A6, '(', 2( '''', A1, ''',' ), 2( I3, ',' ), |
|
|
$ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1, |
|
|
$ ',', F4.1, '), C,', I3, ') .' ) |
|
|
9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', |
|
|
$ '******' ) |
|
|
|
|
|
|
|
|
|
|
|
END |
|
|
SUBROUTINE |
|
|
$ FATAL, NIDIM, IDIM, NALF, ALF, NMAX, A, AA, AS, |
|
|
$ B, BB, BS, CT, G, C |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
COMPLEX |
|
|
PARAMETER |
|
|
REAL |
|
|
PARAMETER |
|
|
|
|
|
REAL |
|
|
INTEGER |
|
|
LOGICAL |
|
|
CHARACTER*6 SNAME |
|
|
|
|
|
COMPLEX |
|
|
$ AS( NMAX*NMAX |
|
|
$ BB( NMAX*NMAX |
|
|
$ C( NMAX, NMAX |
|
|
REAL |
|
|
INTEGER |
|
|
|
|
|
COMPLEX |
|
|
REAL |
|
|
INTEGER |
|
|
$ LDA, LDAS, LDB, LDBS, M, MS, N, NA, NARGS, NC, |
|
|
$ NS |
|
|
LOGICAL |
|
|
CHARACTER*1 DIAG, DIAGS, SIDE, SIDES, TRANAS, TRANSA, UPLO, |
|
|
$ UPLOS |
|
|
CHARACTER*2 ICHD, ICHS, ICHU |
|
|
CHARACTER*3 ICHT |
|
|
|
|
|
LOGICAL |
|
|
|
|
|
LOGICAL |
|
|
EXTERNAL |
|
|
|
|
|
EXTERNAL |
|
|
|
|
|
INTRINSIC |
|
|
|
|
|
INTEGER |
|
|
LOGICAL |
|
|
|
|
|
COMMON /INFOC/ |
|
|
|
|
|
DATA //////// |
|
|
|
|
|
|
|
|
NARGS |
|
|
NC |
|
|
RESET |
|
|
ERRMAX |
|
|
|
|
|
DO |
|
|
DO |
|
|
C( I, J ) |
|
|
10 CONTINUE |
|
|
20 CONTINUE |
|
|
|
|
|
DO |
|
|
M |
|
|
|
|
|
DO |
|
|
N |
|
|
|
|
|
LDB |
|
|
IF( LDB.LT.NMAX |
|
|
$ LDB |
|
|
|
|
|
IF( LDB.GT.NMAX |
|
|
$ GO |
|
|
LBB |
|
|
NULL |
|
|
|
|
|
DO |
|
|
SIDE |
|
|
LEFT |
|
|
IF( LEFT |
|
|
NA |
|
|
ELSE |
|
|
NA |
|
|
END |
|
|
|
|
|
LDA |
|
|
IF( LDA.LT.NMAX |
|
|
$ LDA |
|
|
|
|
|
IF( LDA.GT.NMAX |
|
|
$ GO |
|
|
LAA |
|
|
|
|
|
DO |
|
|
UPLO |
|
|
|
|
|
DO |
|
|
TRANSA |
|
|
|
|
|
DO |
|
|
DIAG |
|
|
|
|
|
DO |
|
|
ALPHA |
|
|
|
|
|
|
|
|
|
|
|
CALL |
|
|
$ NMAX, AA, LDA, RESET, ZERO |
|
|
|
|
|
|
|
|
|
|
|
CALL |
|
|
$ BB, LDB, RESET, ZERO |
|
|
|
|
|
NC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SIDES |
|
|
UPLOS |
|
|
TRANAS |
|
|
DIAGS |
|
|
MS |
|
|
NS |
|
|
ALS |
|
|
DO |
|
|
AS( I ) |
|
|
30 CONTINUE |
|
|
LDAS |
|
|
DO |
|
|
BS( I ) |
|
|
40 CONTINUE |
|
|
LDBS |
|
|
|
|
|
|
|
|
|
|
|
IF( SNAME( 4: 5 ).EQ.'MM' )THEN |
|
|
IF( TRACE |
|
|
$ WRITE( NTRA, FMT |
|
|
$ SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, |
|
|
$ LDA, LDB |
|
|
IF( REWI |
|
|
$ REWIND |
|
|
CALL |
|
|
$ N, ALPHA, AA, LDA, BB, LDB |
|
|
ELSE |
|
|
IF( TRACE |
|
|
$ WRITE( NTRA, FMT |
|
|
$ SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, |
|
|
$ LDA, LDB |
|
|
IF( REWI |
|
|
$ REWIND |
|
|
CALL |
|
|
$ N, ALPHA, AA, LDA, BB, LDB |
|
|
END |
|
|
|
|
|
|
|
|
|
|
|
IF( .NOT.OK |
|
|
WRITE( NOUT, FMT |
|
|
FATAL |
|
|
GO |
|
|
END |
|
|
|
|
|
|
|
|
|
|
|
ISAME( 1 ) |
|
|
ISAME( 2 ) |
|
|
ISAME( 3 ) |
|
|
ISAME( 4 ) |
|
|
ISAME( 5 ) |
|
|
ISAME( 6 ) |
|
|
ISAME( 7 ) |
|
|
ISAME( 8 ) |
|
|
ISAME( 9 ) |
|
|
IF( NULL |
|
|
ISAME( 10 ) |
|
|
ELSE |
|
|
ISAME( 10 ) |
|
|
$ BB, LDB |
|
|
END |
|
|
ISAME( 11 ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SAME |
|
|
DO |
|
|
SAME |
|
|
IF( .NOT.ISAME( I ) |
|
|
$ WRITE( NOUT, FMT |
|
|
50 CONTINUE |
|
|
IF( .NOT.SAME |
|
|
FATAL |
|
|
GO |
|
|
END |
|
|
|
|
|
IF( .NOT.NULL |
|
|
IF( SNAME( 4: 5 ).EQ.'MM' )THEN |
|
|
|
|
|
|
|
|
|
|
|
IF( LEFT |
|
|
CALL |
|
|
$ ALPHA, A, NMAX, B, NMAX, |
|
|
$ ZERO, C, NMAX, CT, G, |
|
|
$ BB, LDB, EPS, ERR, |
|
|
$ FATAL, NOUT, .TRUE. ) |
|
|
ELSE |
|
|
CALL |
|
|
$ ALPHA, B, NMAX, A, NMAX, |
|
|
$ ZERO, C, NMAX, CT, G, |
|
|
$ BB, LDB, EPS, ERR, |
|
|
$ FATAL, NOUT, .TRUE. ) |
|
|
END |
|
|
ELSE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DO |
|
|
DO |
|
|
C( I, J ) |
|
|
$ LDB |
|
|
BB( I |
|
|
$ B( I, J |
|
|
60 CONTINUE |
|
|
70 CONTINUE |
|
|
|
|
|
IF( LEFT |
|
|
CALL |
|
|
$ ONE, A, NMAX, C, NMAX, |
|
|
$ ZERO, B, NMAX, CT, G, |
|
|
$ BB, LDB, EPS, ERR, |
|
|
$ FATAL, NOUT, .FALSE. ) |
|
|
ELSE |
|
|
CALL |
|
|
$ ONE, C, NMAX, A, NMAX, |
|
|
$ ZERO, B, NMAX, CT, G, |
|
|
$ BB, LDB, EPS, ERR, |
|
|
$ FATAL, NOUT, .FALSE. ) |
|
|
END |
|
|
END |
|
|
ERRMAX |
|
|
|
|
|
|
|
|
IF( FATAL |
|
|
$ GO |
|
|
END |
|
|
|
|
|
80 CONTINUE |
|
|
|
|
|
90 CONTINUE |
|
|
|
|
|
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 |
|
|
WRITE( NOUT, FMT |
|
|
$ N, ALPHA, LDA, LDB |
|
|
|
|
|
160 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, , 4( , A1, ), 2( I3, ), |
|
|
$ , F4.1, , F4.1, , I3, , I3, , |
|
|
$ ) |
|
|
9994 FORMAT( , |
|
|
$ ) |
|
|
* |
|
|
* End of CCHK3. |
|
|
* |
|
|
END |
|
|
SUBROUTINE CCHK4( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI, |
|
|
$ FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, NMAX, |
|
|
$ A, AA, AS, B, BB, BS, C, CC, CS, CT, G ) |
|
|
* |
|
|
* Tests CHERK and CSYRK. |
|
|
* |
|
|
* Auxiliary routine for test program for Level 3 Blas. |
|
|
* |
|
|
* -- Written on 8-February-1989. |
|
|
* Jack Dongarra, Argonne National Laboratory. |
|
|
* Iain Duff, AERE Harwell. |
|
|
* Jeremy Du Croz, Numerical Algorithms Group Ltd. |
|
|
* Sven Hammarling, Numerical Algorithms Group Ltd. |
|
|
* |
|
|
* .. Parameters .. |
|
|
COMPLEX ZERO |
|
|
PARAMETER ( ZERO = ( 0.0, 0.0 ) ) |
|
|
REAL RONE, RZERO |
|
|
PARAMETER ( RONE = 1.0, RZERO = 0.0 ) |
|
|
* .. Scalar Arguments .. |
|
|
REAL EPS, THRESH |
|
|
INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA |
|
|
LOGICAL FATAL, REWI, TRACE |
|
|
CHARACTER*6 SNAME |
|
|
* .. Array Arguments .. |
|
|
COMPLEX A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ), |
|
|
$ AS( NMAX*NMAX ), B( NMAX, NMAX ), |
|
|
$ BB( NMAX*NMAX ), BET( NBET ), BS( NMAX*NMAX ), |
|
|
$ C( NMAX, NMAX ), CC( NMAX*NMAX ), |
|
|
$ CS( NMAX*NMAX ), CT( NMAX ) |
|
|
REAL G( NMAX ) |
|
|
INTEGER IDIM( NIDIM ) |
|
|
* .. Local Scalars .. |
|
|
COMPLEX ALPHA, ALS, BETA, BETS |
|
|
REAL ERR, ERRMAX, RALPHA, RALS, RBETA, RBETS |
|
|
INTEGER I, IA, IB, ICT, ICU, IK, IN, J, JC, JJ, K, KS, |
|
|
$ LAA, LCC, LDA, LDAS, LDC, LDCS, LJ, MA, N, NA, |
|
|
$ NARGS, NC, NS |
|
|
LOGICAL CONJ, NULL, RESET, SAME, TRAN, UPPER |
|
|
CHARACTER*1 TRANS, TRANSS, TRANST, UPLO, UPLOS |
|
|
CHARACTER*2 ICHT, ICHU |
|
|
* .. Local Arrays .. |
|
|
LOGICAL ISAME( 13 ) |
|
|
* .. External Functions .. |
|
|
LOGICAL LCE, LCERES |
|
|
EXTERNAL LCE, LCERES |
|
|
* .. External Subroutines .. |
|
|
EXTERNAL CHERK, CMAKE, CMMCH, CSYRK |
|
|
* .. Intrinsic Functions .. |
|
|
INTRINSIC CMPLX, MAX, REAL |
|
|
* .. Scalars in Common .. |
|
|
INTEGER INFOT, NOUTC |
|
|
LOGICAL LERR, OK |
|
|
* .. Common blocks .. |
|
|
COMMON /INFOC/INFOT, NOUTC, OK, LERR |
|
|
* .. Data statements .. |
|
|
DATA ICHT/'NC'/, ICHU/'UL'/ |
|
|
* .. Executable Statements .. |
|
|
CONJ = SNAME( 2: 3 ).EQ. |
|
|
* |
|
|
NARGS = 10 |
|
|
NC = 0 |
|
|
RESET = .TRUE. |
|
|
ERRMAX = RZERO |
|
|
* |
|
|
DO 100 IN = 1, NIDIM |
|
|
N = IDIM( IN ) |
|
|
* Set LDC to 1 more than minimum value if room. |
|
|
LDC = N |
|
|
IF( LDC.LT.NMAX ) |
|
|
$ LDC = LDC + 1 |
|
|
* Skip tests if not enough room. |
|
|
IF( LDC.GT.NMAX ) |
|
|
$ GO TO 100 |
|
|
LCC = LDC*N |
|
|
* |
|
|
DO 90 IK = 1, NIDIM |
|
|
K = IDIM( IK ) |
|
|
* |
|
|
DO 80 ICT = 1, 2 |
|
|
TRANS = ICHT( ICT: ICT ) |
|
|
TRAN = TRANS.EQ. |
|
|
IF( TRAN.AND..NOT.CONJ ) |
|
|
$ TRANS = |
|
|
IF( TRAN )THEN |
|
|
MA = K |
|
|
NA = N |
|
|
ELSE |
|
|
MA = N |
|
|
NA = K |
|
|
END IF |
|
|
* Set LDA to 1 more than minimum value if room. |
|
|
LDA = MA |
|
|
IF( LDA.LT.NMAX ) |
|
|
$ LDA = LDA + 1 |
|
|
* Skip tests if not enough room. |
|
|
IF( LDA.GT.NMAX ) |
|
|
$ GO TO 80 |
|
|
LAA = LDA*NA |
|
|
* |
|
|
* Generate the matrix A. |
|
|
* |
|
|
CALL CMAKE( , , , MA, NA, A, NMAX, AA, LDA, |
|
|
$ RESET, ZERO ) |
|
|
* |
|
|
DO 70 ICU = 1, 2 |
|
|
UPLO = ICHU( ICU: ICU ) |
|
|
UPPER = UPLO.EQ. |
|
|
* |
|
|
DO 60 IA = 1, NALF |
|
|
ALPHA = ALF( IA ) |
|
|
IF( CONJ )THEN |
|
|
RALPHA = REAL( ALPHA ) |
|
|
ALPHA = CMPLX( RALPHA, RZERO ) |
|
|
END IF |
|
|
* |
|
|
DO 50 IB = 1, NBET |
|
|
BETA = BET( IB ) |
|
|
IF( CONJ )THEN |
|
|
RBETA = REAL( BETA ) |
|
|
BETA = CMPLX( RBETA, RZERO ) |
|
|
END IF |
|
|
NULL = N.LE.0 |
|
|
IF( CONJ ) |
|
|
$ NULL = NULL.OR.( ( K.LE.0.OR.RALPHA.EQ. |
|
|
$ RZERO ).AND.RBETA.EQ.RONE ) |
|
|
* |
|
|
* Generate the matrix C. |
|
|
* |
|
|
CALL CMAKE( SNAME( 2: 3 ), UPLO, , N, N, C, |
|
|
$ NMAX, CC, LDC, RESET, ZERO ) |
|
|
* |
|
|
NC = NC + 1 |
|
|
* |
|
|
* Save every datum before calling the subroutine. |
|
|
* |
|
|
UPLOS = UPLO |
|
|
TRANSS = TRANS |
|
|
NS = N |
|
|
KS = K |
|
|
IF( CONJ )THEN |
|
|
RALS = RALPHA |
|
|
ELSE |
|
|
ALS = ALPHA |
|
|
END IF |
|
|
DO 10 I = 1, LAA |
|
|
AS( I ) = AA( I ) |
|
|
10 CONTINUE |
|
|
LDAS = LDA |
|
|
IF( CONJ )THEN |
|
|
RBETS = RBETA |
|
|
ELSE |
|
|
BETS = BETA |
|
|
END IF |
|
|
DO 20 I = 1, LCC |
|
|
CS( I ) = CC( I ) |
|
|
20 CONTINUE |
|
|
LDCS = LDC |
|
|
* |
|
|
* Call the subroutine. |
|
|
* |
|
|
IF( CONJ )THEN |
|
|
IF( TRACE ) |
|
|
$ WRITE( NTRA, FMT = 9994 )NC, SNAME, UPLO, |
|
|
$ TRANS, N, K, RALPHA, LDA, RBETA, LDC |
|
|
IF( REWI ) |
|
|
$ REWIND NTRA |
|
|
CALL CHERK( UPLO, TRANS, N, K, RALPHA, AA, |
|
|
$ LDA, RBETA, CC, LDC ) |
|
|
ELSE |
|
|
IF( TRACE ) |
|
|
$ WRITE( NTRA, FMT = 9993 )NC, SNAME, UPLO, |
|
|
$ TRANS, N, K, ALPHA, LDA, BETA, LDC |
|
|
IF( REWI ) |
|
|
$ REWIND NTRA |
|
|
CALL CSYRK( UPLO, TRANS, N, K, ALPHA, AA, |
|
|
$ LDA, BETA, CC, LDC ) |
|
|
END IF |
|
|
* |
|
|
* Check if error-exit was taken incorrectly. |
|
|
* |
|
|
IF( .NOT.OK )THEN |
|
|
WRITE( NOUT, FMT = 9992 ) |
|
|
FATAL = .TRUE. |
|
|
GO TO 120 |
|
|
END IF |
|
|
* |
|
|
* See what data changed inside subroutines. |
|
|
* |
|
|
ISAME( 1 ) = UPLOS.EQ.UPLO |
|
|
ISAME( 2 ) = TRANSS.EQ.TRANS |
|
|
ISAME( 3 ) = NS.EQ.N |
|
|
ISAME( 4 ) = KS.EQ.K |
|
|
IF( CONJ )THEN |
|
|
ISAME( 5 ) = RALS.EQ.RALPHA |
|
|
ELSE |
|
|
ISAME( 5 ) = ALS.EQ.ALPHA |
|
|
END IF |
|
|
ISAME( 6 ) = LCE( AS, AA, LAA ) |
|
|
ISAME( 7 ) = LDAS.EQ.LDA |
|
|
IF( CONJ )THEN |
|
|
ISAME( 8 ) = RBETS.EQ.RBETA |
|
|
ELSE |
|
|
ISAME( 8 ) = BETS.EQ.BETA |
|
|
END IF |
|
|
IF( NULL )THEN |
|
|
ISAME( 9 ) = LCE( CS, CC, LCC ) |
|
|
ELSE |
|
|
ISAME( 9 ) = LCERES( SNAME( 2: 3 ), UPLO, N, |
|
|
$ N, CS, CC, LDC ) |
|
|
END IF |
|
|
ISAME( 10 ) = LDCS.EQ.LDC |
|
|
* |
|
|
* If data was incorrectly changed, report and |
|
|
* return. |
|
|
* |
|
|
SAME = .TRUE. |
|
|
DO 30 I = 1, NARGS |
|
|
SAME = SAME.AND.ISAME( I ) |
|
|
IF( .NOT.ISAME( I ) ) |
|
|
$ WRITE( NOUT, FMT = 9998 )I |
|
|
30 CONTINUE |
|
|
IF( .NOT.SAME )THEN |
|
|
FATAL = .TRUE. |
|
|
GO TO 120 |
|
|
END IF |
|
|
* |
|
|
IF( .NOT.NULL )THEN |
|
|
* |
|
|
* Check the result column by column. |
|
|
* |
|
|
IF( CONJ )THEN |
|
|
TRANST = |
|
|
ELSE |
|
|
TRANST = |
|
|
END IF |
|
|
JC = 1 |
|
|
DO 40 J = 1, N |
|
|
IF( UPPER )THEN |
|
|
JJ = 1 |
|
|
LJ = J |
|
|
ELSE |
|
|
JJ = J |
|
|
LJ = N - J + 1 |
|
|
END IF |
|
|
IF( TRAN )THEN |
|
|
CALL CMMCH( TRANST, , LJ, 1, K, |
|
|
$ ALPHA, A( 1, JJ ), NMAX, |
|
|
$ A( 1, J ), NMAX, BETA, |
|
|
$ C( JJ, J ), NMAX, CT, G, |
|
|
$ CC( JC ), LDC, EPS, ERR, |
|
|
$ FATAL, NOUT, .TRUE. ) |
|
|
ELSE |
|
|
CALL CMMCH( , TRANST, LJ, 1, K, |
|
|
$ ALPHA, A( JJ, 1 ), NMAX, |
|
|
$ A( J, 1 ), NMAX, BETA, |
|
|
$ C( JJ, J ), NMAX, CT, G, |
|
|
$ CC( JC ), LDC, EPS, ERR, |
|
|
$ FATAL, NOUT, .TRUE. ) |
|
|
END IF |
|
|
IF( UPPER )THEN |
|
|
JC = JC + LDC |
|
|
ELSE |
|
|
JC = JC + LDC + 1 |
|
|
END IF |
|
|
ERRMAX = MAX( ERRMAX, ERR ) |
|
|
* If got really bad answer, report and |
|
|
* return. |
|
|
IF( FATAL ) |
|
|
$ GO TO 110 |
|
|
40 CONTINUE |
|
|
END IF |
|
|
* |
|
|
50 CONTINUE |
|
|
* |
|
|
60 CONTINUE |
|
|
* |
|
|
70 CONTINUE |
|
|
* |
|
|
80 CONTINUE |
|
|
* |
|
|
90 CONTINUE |
|
|
* |
|
|
100 CONTINUE |
|
|
* |
|
|
* Report result. |
|
|
* |
|
|
IF( ERRMAX.LT.THRESH )THEN |
|
|
WRITE( NOUT, FMT = 9999 )SNAME, NC |
|
|
ELSE |
|
|
WRITE( NOUT, FMT = 9997 )SNAME, NC, ERRMAX |
|
|
END IF |
|
|
GO TO 130 |
|
|
* |
|
|
110 CONTINUE |
|
|
IF( N.GT.1 ) |
|
|
$ WRITE( NOUT, FMT = 9995 )J |
|
|
* |
|
|
120 CONTINUE |
|
|
WRITE( NOUT, FMT = 9996 )SNAME |
|
|
IF( CONJ )THEN |
|
|
WRITE( NOUT, FMT = 9994 )NC, SNAME, UPLO, TRANS, N, K, RALPHA, |
|
|
$ LDA, RBETA, LDC |
|
|
ELSE |
|
|
WRITE( NOUT, FMT = 9993 )NC, SNAME, UPLO, TRANS, N, K, ALPHA, |
|
|
$ LDA, BETA, LDC |
|
|
END IF |
|
|
* |
|
|
130 CONTINUE |
|
|
RETURN |
|
|
* |
|
|
9999 FORMAT( , A6, , I6, , |
|
|
$ ) |
|
|
9998 FORMAT( , I2, , |
|
|
$ ) |
|
|
9997 FORMAT( , A6, , I6, , |
|
|
$ , /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, |
|
|
$ ' - SUSPECT *******' ) |
|
|
9996 FORMAT( ' ******* ', A6, ' FAILED ON CALL NUMBER:' ) |
|
|
9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 |
|
|
9994 FORMAT( 1X, I6, ': ', A6, '(', 2( '''', A1, ''',' ), 2( I3, ',' ), |
|
|
$ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') ', |
|
|
$ ' .' ) |
|
|
9993 FORMAT( 1X, I6, ': ', A6, '(', 2( '''', A1, ''',' ), 2( I3, ',' ), |
|
|
$ '(', F4.1, ',', F4.1, ') , A,', I3, ',(', F4.1, ',', F4.1, |
|
|
$ '), C,', I3, ') .' ) |
|
|
9992 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', |
|
|
$ '******' ) |
|
|
|
|
|
|
|
|
|
|
|
END |
|
|
SUBROUTINE |
|
|
$ FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, NMAX, |
|
|
$ AB, AA, AS, BB, BS, C, CC, CS, CT, G, W |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
COMPLEX |
|
|
PARAMETER |
|
|
REAL |
|
|
PARAMETER |
|
|
|
|
|
REAL |
|
|
INTEGER |
|
|
LOGICAL |
|
|
CHARACTER*6 SNAME |
|
|
|
|
|
COMPLEX |
|
|
$ ALF( NALF |
|
|
$ BET( NBET |
|
|
$ CC( NMAX*NMAX |
|
|
$ W( 2*NMAX |
|
|
REAL |
|
|
INTEGER |
|
|
|
|
|
COMPLEX |
|
|
REAL |
|
|
INTEGER |
|
|
$ K, KS, LAA, LBB, LCC, LDA, LDAS, LDB, LDBS, |
|
|
$ LDC, LDCS, LJ, MA, N, NA, NARGS, NC, NS |
|
|
LOGICAL |
|
|
CHARACTER*1 TRANS, TRANSS, TRANST, UPLO, UPLOS |
|
|
CHARACTER*2 ICHT, ICHU |
|
|
|
|
|
LOGICAL |
|
|
|
|
|
LOGICAL |
|
|
EXTERNAL |
|
|
|
|
|
EXTERNAL |
|
|
|
|
|
INTRINSIC |
|
|
|
|
|
INTEGER |
|
|
LOGICAL |
|
|
|
|
|
COMMON /INFOC/ |
|
|
|
|
|
DATA //// |
|
|
|
|
|
CONJ |
|
|
|
|
|
NARGS |
|
|
NC |
|
|
RESET |
|
|
ERRMAX |
|
|
|
|
|
DO |
|
|
N |
|
|
|
|
|
LDC |
|
|
IF( LDC.LT.NMAX |
|
|
$ LDC |
|
|
|
|
|
IF( LDC.GT.NMAX |
|
|
$ GO |
|
|
LCC |
|
|
|
|
|
DO |
|
|
K |
|
|
|
|
|
DO |
|
|
TRANS |
|
|
TRAN |
|
|
IF( TRAN.AND..NOT.CONJ |
|
|
$ TRANS |
|
|
IF( TRAN |
|
|
MA |
|
|
NA |
|
|
ELSE |
|
|
MA |
|
|
NA |
|
|
END |
|
|
|
|
|
LDA |
|
|
IF( LDA.LT.NMAX |
|
|
$ LDA |
|
|
|
|
|
IF( LDA.GT.NMAX |
|
|
$ GO |
|
|
LAA |
|
|
|
|
|
|
|
|
|
|
|
IF( TRAN |
|
|
CALL |
|
|
$ LDA, RESET, ZERO |
|
|
ELSE |
|
|
CALL |
|
|
$ RESET, ZERO |
|
|
END |
|
|
|
|
|
|
|
|
|
|
|
LDB |
|
|
LBB |
|
|
IF( TRAN |
|
|
CALL |
|
|
$ 2*NMAX, BB, LDB, RESET, ZERO |
|
|
ELSE |
|
|
CALL |
|
|
$ NMAX, BB, LDB, RESET, ZERO |
|
|
END |
|
|
|
|
|
DO |
|
|
UPLO |
|
|
UPPER |
|
|
|
|
|
DO |
|
|
ALPHA |
|
|
|
|
|
DO |
|
|
BETA |
|
|
IF( CONJ |
|
|
RBETA |
|
|
BETA |
|
|
END |
|
|
NULL |
|
|
IF( CONJ |
|
|
$ NULL |
|
|
$ ZERO |
|
|
|
|
|
|
|
|
|
|
|
CALL |
|
|
$ NMAX, CC, LDC, RESET, ZERO |
|
|
|
|
|
NC |
|
|
|
|
|
|
|
|
|
|
|
UPLOS |
|
|
TRANSS |
|
|
NS |
|
|
KS |
|
|
ALS |
|
|
DO |
|
|
AS( I ) |
|
|
10 CONTINUE |
|
|
LDAS |
|
|
DO |
|
|
BS( I ) |
|
|
20 CONTINUE |
|
|
LDBS |
|
|
IF( CONJ |
|
|
RBETS |
|
|
ELSE |
|
|
BETS |
|
|
END |
|
|
DO |
|
|
CS( I ) |
|
|
30 CONTINUE |
|
|
LDCS |
|
|
|
|
|
|
|
|
|
|
|
IF( CONJ |
|
|
IF( TRACE |
|
|
$ WRITE( NTRA, FMT |
|
|
$ TRANS, N, K, ALPHA, LDA, LDB, RBETA, LDC |
|
|
IF( REWI |
|
|
$ REWIND |
|
|
CALL |
|
|
$ LDA, BB, LDB, RBETA, CC, LDC |
|
|
ELSE |
|
|
IF( TRACE |
|
|
$ WRITE( NTRA, FMT |
|
|
$ TRANS, N, K, ALPHA, LDA, LDB, BETA, LDC |
|
|
IF( REWI |
|
|
$ REWIND |
|
|
CALL |
|
|
$ LDA, BB, LDB, BETA, CC, LDC |
|
|
END |
|
|
|
|
|
|
|
|
|
|
|
IF( .NOT.OK |
|
|
WRITE( NOUT, FMT |
|
|
FATAL |
|
|
GO |
|
|
END |
|
|
|
|
|
|
|
|
|
|
|
ISAME( 1 ) |
|
|
ISAME( 2 ) |
|
|
ISAME( 3 ) |
|
|
ISAME( 4 ) |
|
|
ISAME( 5 ) |
|
|
ISAME( 6 ) |
|
|
ISAME( 7 ) |
|
|
ISAME( 8 ) |
|
|
ISAME( 9 ) |
|
|
IF( CONJ |
|
|
ISAME( 10 ) |
|
|
ELSE |
|
|
ISAME( 10 ) |
|
|
END |
|
|
IF( NULL |
|
|
ISAME( 11 ) |
|
|
ELSE |
|
|
ISAME( 11 ) |
|
|
$ CC, LDC |
|
|
END |
|
|
ISAME( 12 ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SAME |
|
|
DO |
|
|
SAME |
|
|
IF( .NOT.ISAME( I ) |
|
|
$ WRITE( NOUT, FMT |
|
|
40 CONTINUE |
|
|
IF( .NOT.SAME |
|
|
FATAL |
|
|
GO |
|
|
END |
|
|
|
|
|
IF( .NOT.NULL |
|
|
|
|
|
|
|
|
|
|
|
IF( CONJ |
|
|
TRANST |
|
|
ELSE |
|
|
TRANST |
|
|
END |
|
|
JJAB |
|
|
JC |
|
|
DO |
|
|
IF( UPPER |
|
|
JJ |
|
|
LJ |
|
|
ELSE |
|
|
JJ |
|
|
LJ |
|
|
END |
|
|
IF( TRAN |
|
|
DO |
|
|
W( I ) |
|
|
$ NMAX |
|
|
IF( CONJ |
|
|
W( K |
|
|
$ AB( ( J |
|
|
$ NMAX |
|
|
ELSE |
|
|
W( K |
|
|
$ AB( ( J |
|
|
$ NMAX |
|
|
END |
|
|
50 CONTINUE |
|
|
CALL |
|
|
$ ONE, AB( JJAB |
|
|
$ 2*NMAX, BETA, C( JJ, J |
|
|
$ NMAX, CT, G, CC( JC |
|
|
$ EPS, ERR, FATAL, NOUT, |
|
|
$ .TRUE. ) |
|
|
ELSE |
|
|
DO |
|
|
IF( CONJ |
|
|
W( I ) |
|
|
$ I |
|
|
W( K |
|
|
$ AB( ( I |
|
|
$ J |
|
|
ELSE |
|
|
W( I ) |
|
|
$ NMAX |
|
|
W( K |
|
|
$ AB( ( I |
|
|
$ J |
|
|
END |
|
|
60 CONTINUE |
|
|
CALL |
|
|
$ AB( JJ |
|
|
$ BETA, C( JJ, J |
|
|
$ G, CC( JC |
|
|
$ FATAL, NOUT, .TRUE. ) |
|
|
END |
|
|
IF( UPPER |
|
|
JC |
|
|
ELSE |
|
|
JC |
|
|
IF( TRAN |
|
|
$ JJAB |
|
|
END |
|
|
ERRMAX |
|
|
|
|
|
|
|
|
IF( FATAL |
|
|
$ GO |
|
|
70 CONTINUE |
|
|
END |
|
|
|
|
|
80 CONTINUE |
|
|
|
|
|
90 CONTINUE |
|
|
|
|
|
100 CONTINUE |
|
|
|
|
|
110 CONTINUE |
|
|
|
|
|
120 CONTINUE |
|
|
|
|
|
130 CONTINUE |
|
|
|
|
|
|
|
|
|
|
|
IF( ERRMAX.LT.THRESH |
|
|
WRITE( NOUT, FMT |
|
|
ELSE |
|
|
WRITE( NOUT, FMT |
|
|
END |
|
|
GO |
|
|
|
|
|
140 CONTINUE |
|
|
IF( N.GT.1 ) |
|
|
$ WRITE( NOUT, FMT |
|
|
|
|
|
150 CONTINUE |
|
|
WRITE( NOUT, FMT |
|
|
IF( CONJ |
|
|
WRITE( NOUT, FMT |
|
|
$ LDA, LDB, RBETA, LDC |
|
|
ELSE |
|
|
WRITE( NOUT, FMT |
|
|
$ LDA, LDB, BETA, LDC |
|
|
END |
|
|
|
|
|
160 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( , A1, ), 2( I3, ), |
|
|
$ , F4.1, , F4.1, , I3, , I3, , F4.1, |
|
|
$ , I3, ) |
|
|
9993 FORMAT( 1X, I6, , A6, , 2( , A1, ), 2( I3, ), |
|
|
$ , F4.1, , F4.1, , I3, , I3, , F4.1, |
|
|
$ , F4.1, , I3, ) |
|
|
9992 FORMAT( , |
|
|
$ ) |
|
|
* |
|
|
* End of CCHK5. |
|
|
* |
|
|
END |
|
|
SUBROUTINE CCHKE( ISNUM, SRNAMT, NOUT ) |
|
|
* |
|
|
* Tests the error exits from the Level 3 Blas. |
|
|
* Requires a special version of the error-handling routine XERBLA. |
|
|
* A, B and C should not need to be defined. |
|
|
* |
|
|
* Auxiliary routine for test program for Level 3 Blas. |
|
|
* |
|
|
* -- Written on 8-February-1989. |
|
|
* Jack Dongarra, Argonne National Laboratory. |
|
|
* Iain Duff, AERE Harwell. |
|
|
* Jeremy Du Croz, Numerical Algorithms Group Ltd. |
|
|
* Sven Hammarling, Numerical Algorithms Group Ltd. |
|
|
* |
|
|
* 3-19-92: Initialize ALPHA, BETA, RALPHA, and RBETA (eca) |
|
|
* 3-19-92: Fix argument 12 in calls to CSYMM and CHEMM |
|
|
* with INFOT = 9 (eca) |
|
|
* |
|
|
* .. Scalar Arguments .. |
|
|
INTEGER ISNUM, NOUT |
|
|
CHARACTER*6 SRNAMT |
|
|
* .. Scalars in Common .. |
|
|
INTEGER INFOT, NOUTC |
|
|
LOGICAL LERR, OK |
|
|
* .. Parameters .. |
|
|
REAL ONE, TWO |
|
|
PARAMETER ( ONE = 1.0E0, TWO = 2.0E0 ) |
|
|
* .. Local Scalars .. |
|
|
COMPLEX ALPHA, BETA |
|
|
REAL RALPHA, RBETA |
|
|
* .. Local Arrays .. |
|
|
COMPLEX A( 2, 1 ), B( 2, 1 ), C( 2, 1 ) |
|
|
* .. External Subroutines .. |
|
|
EXTERNAL CGEMM, CHEMM, CHER2K, CHERK, CHKXER, CSYMM, |
|
|
$ CSYR2K, CSYRK, CTRMM, CTRSM |
|
|
* .. 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. |
|
|
* |
|
|
* Initialize ALPHA, BETA, RALPHA, and RBETA. |
|
|
* |
|
|
ALPHA = CMPLX( ONE, -ONE ) |
|
|
BETA = CMPLX( TWO, -TWO ) |
|
|
RALPHA = ONE |
|
|
RBETA = TWO |
|
|
* |
|
|
GO TO ( 10, 20, 30, 40, 50, 60, 70, 80, |
|
|
$ 90 )ISNUM |
|
|
10 INFOT = 1 |
|
|
CALL CGEMM( , , 0, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 1 |
|
|
CALL CGEMM( , , 0, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 1 |
|
|
CALL CGEMM( , , 0, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CGEMM( , , 0, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CGEMM( , , 0, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CGEMM( , , 0, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CGEMM( , , -1, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CGEMM( , , -1, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CGEMM( , , -1, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CGEMM( , , -1, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CGEMM( , , -1, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CGEMM( , , -1, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CGEMM( , , -1, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CGEMM( , , -1, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CGEMM( , , -1, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CGEMM( , , 0, -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CGEMM( , , 0, -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CGEMM( , , 0, -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CGEMM( , , 0, -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CGEMM( , , 0, -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CGEMM( , , 0, -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CGEMM( , , 0, -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CGEMM( , , 0, -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CGEMM( , , 0, -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CGEMM( , , 0, 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CGEMM( , , 0, 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CGEMM( , , 0, 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CGEMM( , , 0, 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CGEMM( , , 0, 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CGEMM( , , 0, 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CGEMM( , , 0, 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CGEMM( , , 0, 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CGEMM( , , 0, 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 8 |
|
|
CALL CGEMM( , , 2, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 8 |
|
|
CALL CGEMM( , , 2, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 8 |
|
|
CALL CGEMM( , , 2, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 8 |
|
|
CALL CGEMM( , , 0, 0, 2, ALPHA, A, 1, B, 2, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 8 |
|
|
CALL CGEMM( , , 0, 0, 2, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 8 |
|
|
CALL CGEMM( , , 0, 0, 2, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 8 |
|
|
CALL CGEMM( , , 0, 0, 2, ALPHA, A, 1, B, 2, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 8 |
|
|
CALL CGEMM( , , 0, 0, 2, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 8 |
|
|
CALL CGEMM( , , 0, 0, 2, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CGEMM( , , 0, 0, 2, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CGEMM( , , 0, 0, 2, ALPHA, A, 2, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CGEMM( , , 0, 0, 2, ALPHA, A, 2, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CGEMM( , , 0, 2, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CGEMM( , , 0, 2, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CGEMM( , , 0, 2, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CGEMM( , , 0, 2, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CGEMM( , , 0, 2, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CGEMM( , , 0, 2, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 13 |
|
|
CALL CGEMM( , , 2, 0, 0, ALPHA, A, 2, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 13 |
|
|
CALL CGEMM( , , 2, 0, 0, ALPHA, A, 2, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 13 |
|
|
CALL CGEMM( , , 2, 0, 0, ALPHA, A, 2, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 13 |
|
|
CALL CGEMM( , , 2, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 13 |
|
|
CALL CGEMM( , , 2, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 13 |
|
|
CALL CGEMM( , , 2, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 13 |
|
|
CALL CGEMM( , , 2, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 13 |
|
|
CALL CGEMM( , , 2, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 13 |
|
|
CALL CGEMM( , , 2, 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 100 |
|
|
20 INFOT = 1 |
|
|
CALL CHEMM( , , 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CHEMM( , , 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CHEMM( , , -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CHEMM( , , -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CHEMM( , , -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CHEMM( , , -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CHEMM( , , 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CHEMM( , , 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CHEMM( , , 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CHEMM( , , 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CHEMM( , , 2, 0, ALPHA, A, 1, B, 2, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CHEMM( , , 0, 2, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CHEMM( , , 2, 0, ALPHA, A, 1, B, 2, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CHEMM( , , 0, 2, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CHEMM( , , 2, 0, ALPHA, A, 2, B, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CHEMM( , , 2, 0, ALPHA, A, 1, B, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CHEMM( , , 2, 0, ALPHA, A, 2, B, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CHEMM( , , 2, 0, ALPHA, A, 1, B, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 12 |
|
|
CALL CHEMM( , , 2, 0, ALPHA, A, 2, B, 2, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 12 |
|
|
CALL CHEMM( , , 2, 0, ALPHA, A, 1, B, 2, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 12 |
|
|
CALL CHEMM( , , 2, 0, ALPHA, A, 2, B, 2, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 12 |
|
|
CALL CHEMM( , , 2, 0, ALPHA, A, 1, B, 2, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 100 |
|
|
30 INFOT = 1 |
|
|
CALL CSYMM( , , 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CSYMM( , , 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CSYMM( , , -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CSYMM( , , -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CSYMM( , , -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CSYMM( , , -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CSYMM( , , 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CSYMM( , , 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CSYMM( , , 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CSYMM( , , 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CSYMM( , , 2, 0, ALPHA, A, 1, B, 2, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CSYMM( , , 0, 2, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CSYMM( , , 2, 0, ALPHA, A, 1, B, 2, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CSYMM( , , 0, 2, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CSYMM( , , 2, 0, ALPHA, A, 2, B, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CSYMM( , , 2, 0, ALPHA, A, 1, B, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CSYMM( , , 2, 0, ALPHA, A, 2, B, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CSYMM( , , 2, 0, ALPHA, A, 1, B, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 12 |
|
|
CALL CSYMM( , , 2, 0, ALPHA, A, 2, B, 2, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 12 |
|
|
CALL CSYMM( , , 2, 0, ALPHA, A, 1, B, 2, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 12 |
|
|
CALL CSYMM( , , 2, 0, ALPHA, A, 2, B, 2, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 12 |
|
|
CALL CSYMM( , , 2, 0, ALPHA, A, 1, B, 2, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 100 |
|
|
40 INFOT = 1 |
|
|
CALL CTRMM( , , , , 0, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CTRMM( , , , , 0, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CTRMM( , , , , 0, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CTRMM( , , , , 0, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRMM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRMM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRMM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRMM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRMM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRMM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRMM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRMM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRMM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRMM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRMM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRMM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRMM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRMM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRMM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRMM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRMM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRMM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRMM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRMM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRMM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRMM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRMM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRMM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 1, B, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 1, B, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 1, B, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRMM( , , , , 0, 2, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRMM( , , , , 0, 2, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRMM( , , , , 0, 2, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 1, B, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 1, B, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 1, B, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRMM( , , , , 0, 2, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRMM( , , , , 0, 2, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRMM( , , , , 0, 2, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 2, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 2, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 2, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 2, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 2, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 2, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRMM( , , , , 2, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 100 |
|
|
50 INFOT = 1 |
|
|
CALL CTRSM( , , , , 0, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CTRSM( , , , , 0, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CTRSM( , , , , 0, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CTRSM( , , , , 0, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRSM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRSM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRSM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRSM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRSM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRSM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRSM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRSM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRSM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRSM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRSM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 5 |
|
|
CALL CTRSM( , , , , -1, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRSM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRSM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRSM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRSM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRSM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRSM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRSM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRSM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRSM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRSM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRSM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 6 |
|
|
CALL CTRSM( , , , , 0, -1, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 1, B, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 1, B, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 1, B, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRSM( , , , , 0, 2, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRSM( , , , , 0, 2, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRSM( , , , , 0, 2, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 1, B, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 1, B, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 1, B, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRSM( , , , , 0, 2, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRSM( , , , , 0, 2, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CTRSM( , , , , 0, 2, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 2, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 2, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 2, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 2, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 2, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 2, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 11 |
|
|
CALL CTRSM( , , , , 2, 0, ALPHA, A, 1, B, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 100 |
|
|
60 INFOT = 1 |
|
|
CALL CHERK( , , 0, 0, RALPHA, A, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CHERK( , , 0, 0, RALPHA, A, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CHERK( , , -1, 0, RALPHA, A, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CHERK( , , -1, 0, RALPHA, A, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CHERK( , , -1, 0, RALPHA, A, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CHERK( , , -1, 0, RALPHA, A, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CHERK( , , 0, -1, RALPHA, A, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CHERK( , , 0, -1, RALPHA, A, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CHERK( , , 0, -1, RALPHA, A, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CHERK( , , 0, -1, RALPHA, A, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CHERK( , , 2, 0, RALPHA, A, 1, RBETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CHERK( , , 0, 2, RALPHA, A, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CHERK( , , 2, 0, RALPHA, A, 1, RBETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CHERK( , , 0, 2, RALPHA, A, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CHERK( , , 2, 0, RALPHA, A, 2, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CHERK( , , 2, 0, RALPHA, A, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CHERK( , , 2, 0, RALPHA, A, 2, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CHERK( , , 2, 0, RALPHA, A, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 100 |
|
|
70 INFOT = 1 |
|
|
CALL CSYRK( , , 0, 0, ALPHA, A, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CSYRK( , , 0, 0, ALPHA, A, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CSYRK( , , -1, 0, ALPHA, A, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CSYRK( , , -1, 0, ALPHA, A, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CSYRK( , , -1, 0, ALPHA, A, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CSYRK( , , -1, 0, ALPHA, A, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CSYRK( , , 0, -1, ALPHA, A, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CSYRK( , , 0, -1, ALPHA, A, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CSYRK( , , 0, -1, ALPHA, A, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CSYRK( , , 0, -1, ALPHA, A, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CSYRK( , , 2, 0, ALPHA, A, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CSYRK( , , 0, 2, ALPHA, A, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CSYRK( , , 2, 0, ALPHA, A, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CSYRK( , , 0, 2, ALPHA, A, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CSYRK( , , 2, 0, ALPHA, A, 2, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CSYRK( , , 2, 0, ALPHA, A, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CSYRK( , , 2, 0, ALPHA, A, 2, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 10 |
|
|
CALL CSYRK( , , 2, 0, ALPHA, A, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 100 |
|
|
80 INFOT = 1 |
|
|
CALL CHER2K( , , 0, 0, ALPHA, A, 1, B, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CHER2K( , , 0, 0, ALPHA, A, 1, B, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CHER2K( , , -1, 0, ALPHA, A, 1, B, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CHER2K( , , -1, 0, ALPHA, A, 1, B, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CHER2K( , , -1, 0, ALPHA, A, 1, B, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CHER2K( , , -1, 0, ALPHA, A, 1, B, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CHER2K( , , 0, -1, ALPHA, A, 1, B, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CHER2K( , , 0, -1, ALPHA, A, 1, B, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CHER2K( , , 0, -1, ALPHA, A, 1, B, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CHER2K( , , 0, -1, ALPHA, A, 1, B, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CHER2K( , , 2, 0, ALPHA, A, 1, B, 1, RBETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CHER2K( , , 0, 2, ALPHA, A, 1, B, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CHER2K( , , 2, 0, ALPHA, A, 1, B, 1, RBETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CHER2K( , , 0, 2, ALPHA, A, 1, B, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CHER2K( , , 2, 0, ALPHA, A, 2, B, 1, RBETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CHER2K( , , 0, 2, ALPHA, A, 2, B, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CHER2K( , , 2, 0, ALPHA, A, 2, B, 1, RBETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CHER2K( , , 0, 2, ALPHA, A, 2, B, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 12 |
|
|
CALL CHER2K( , , 2, 0, ALPHA, A, 2, B, 2, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 12 |
|
|
CALL CHER2K( , , 2, 0, ALPHA, A, 1, B, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 12 |
|
|
CALL CHER2K( , , 2, 0, ALPHA, A, 2, B, 2, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 12 |
|
|
CALL CHER2K( , , 2, 0, ALPHA, A, 1, B, 1, RBETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
GO TO 100 |
|
|
90 INFOT = 1 |
|
|
CALL CSYR2K( , , 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 2 |
|
|
CALL CSYR2K( , , 0, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CSYR2K( , , -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CSYR2K( , , -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CSYR2K( , , -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 3 |
|
|
CALL CSYR2K( , , -1, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CSYR2K( , , 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CSYR2K( , , 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CSYR2K( , , 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 4 |
|
|
CALL CSYR2K( , , 0, -1, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CSYR2K( , , 2, 0, ALPHA, A, 1, B, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CSYR2K( , , 0, 2, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CSYR2K( , , 2, 0, ALPHA, A, 1, B, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 7 |
|
|
CALL CSYR2K( , , 0, 2, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CSYR2K( , , 2, 0, ALPHA, A, 2, B, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CSYR2K( , , 0, 2, ALPHA, A, 2, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CSYR2K( , , 2, 0, ALPHA, A, 2, B, 1, BETA, C, 2 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 9 |
|
|
CALL CSYR2K( , , 0, 2, ALPHA, A, 2, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 12 |
|
|
CALL CSYR2K( , , 2, 0, ALPHA, A, 2, B, 2, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 12 |
|
|
CALL CSYR2K( , , 2, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 12 |
|
|
CALL CSYR2K( , , 2, 0, ALPHA, A, 2, B, 2, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
INFOT = 12 |
|
|
CALL CSYR2K( , , 2, 0, ALPHA, A, 1, B, 1, BETA, C, 1 ) |
|
|
CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
* |
|
|
100 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, RESET, |
|
|
$ TRANSL ) |
|
|
* |
|
|
* Generates values for an M by N matrix A. |
|
|
* 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 3 Blas. |
|
|
* |
|
|
* -- Written on 8-February-1989. |
|
|
* Jack Dongarra, Argonne National Laboratory. |
|
|
* Iain Duff, AERE Harwell. |
|
|
* Jeremy Du Croz, Numerical Algorithms Group Ltd. |
|
|
* Sven Hammarling, Numerical Algorithms Group Ltd. |
|
|
* |
|
|
* .. 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 LDA, M, N, NMAX |
|
|
LOGICAL RESET |
|
|
CHARACTER*1 DIAG, UPLO |
|
|
CHARACTER*2 TYPE |
|
|
* .. Array Arguments .. |
|
|
COMPLEX A( NMAX, * ), AA( * ) |
|
|
* .. Local Scalars .. |
|
|
INTEGER I, IBEG, IEND, J, JJ |
|
|
LOGICAL GEN, HER, LOWER, SYM, TRI, UNIT, UPPER |
|
|
* .. External Functions .. |
|
|
COMPLEX CBEG |
|
|
EXTERNAL CBEG |
|
|
* .. Intrinsic Functions .. |
|
|
INTRINSIC CMPLX, CONJG, REAL |
|
|
* .. Executable Statements .. |
|
|
GEN = TYPE.EQ. |
|
|
HER = TYPE.EQ. |
|
|
SYM = TYPE.EQ. |
|
|
TRI = TYPE.EQ. |
|
|
UPPER = ( HER.OR.SYM.OR.TRI ).AND.UPLO.EQ. |
|
|
LOWER = ( HER.OR.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 |
|
|
A( I, J ) = CBEG( RESET ) + TRANSL |
|
|
IF( I.NE.J )THEN |
|
|
* Set some elements to zero |
|
|
IF( N.GT.3.AND.J.EQ.N/2 ) |
|
|
$ A( I, J ) |
|
|
IF( HER |
|
|
A( J, I ) |
|
|
ELSE |
|
|
A( J, I ) |
|
|
ELSE |
|
|
A( J, I ) |
|
|
END |
|
|
END |
|
|
END |
|
|
10 CONTINUE |
|
|
IF( HER |
|
|
$ A( J, J ) |
|
|
IF( TRI |
|
|
$ A( J, J ) |
|
|
IF( UNIT |
|
|
$ A( J, J ) |
|
|
20 CONTINUE |
|
|
|
|
|
|
|
|
|
|
|
IF( TYPE.EQ.'GE' )THEN |
|
|
DO |
|
|
DO |
|
|
AA( I |
|
|
30 CONTINUE |
|
|
DO |
|
|
AA( I |
|
|
40 CONTINUE |
|
|
50 CONTINUE |
|
|
ELSE |
|
|
DO |
|
|
IF( UPPER |
|
|
IBEG |
|
|
IF( UNIT |
|
|
IEND |
|
|
ELSE |
|
|
IEND |
|
|
END |
|
|
ELSE |
|
|
IF( UNIT |
|
|
IBEG |
|
|
ELSE |
|
|
IBEG |
|
|
END |
|
|
IEND |
|
|
END |
|
|
DO |
|
|
AA( I |
|
|
60 CONTINUE |
|
|
DO |
|
|
AA( I |
|
|
70 CONTINUE |
|
|
DO |
|
|
AA( I |
|
|
80 CONTINUE |
|
|
IF( HER |
|
|
JJ |
|
|
AA( JJ ) |
|
|
END |
|
|
90 CONTINUE |
|
|
END |
|
|
RETURN |
|
|
|
|
|
|
|
|
|
|
|
END |
|
|
SUBROUTINE |
|
|
$ BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, |
|
|
$ NOUT, MV |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
COMPLEX |
|
|
PARAMETER |
|
|
REAL |
|
|
PARAMETER |
|
|
|
|
|
COMPLEX |
|
|
REAL |
|
|
INTEGER |
|
|
LOGICAL |
|
|
CHARACTER*1 TRANSA, TRANSB |
|
|
|
|
|
COMPLEX |
|
|
$ CC( LDCC, * ), CT( * ) |
|
|
REAL |
|
|
|
|
|
COMPLEX |
|
|
REAL |
|
|
INTEGER |
|
|
LOGICAL |
|
|
|
|
|
INTRINSIC |
|
|
|
|
|
REAL |
|
|
|
|
|
ABS1( CL ) |
|
|
|
|
|
TRANA |
|
|
TRANB |
|
|
CTRANA |
|
|
CTRANB |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DO |
|
|
|
|
|
DO |
|
|
CT( I ) |
|
|
G( I ) |
|
|
10 CONTINUE |
|
|
IF( .NOT.TRANA.AND..NOT.TRANB |
|
|
DO |
|
|
DO |
|
|
CT( I ) |
|
|
G( I ) |
|
|
20 CONTINUE |
|
|
30 CONTINUE |
|
|
ELSE |
|
|
IF( CTRANA |
|
|
DO |
|
|
DO |
|
|
CT( I ) |
|
|
G( I ) |
|
|
$ ABS1( B( K, J ) |
|
|
40 CONTINUE |
|
|
50 CONTINUE |
|
|
ELSE |
|
|
DO |
|
|
DO |
|
|
CT( I ) |
|
|
G( I ) |
|
|
$ ABS1( B( K, J ) |
|
|
60 CONTINUE |
|
|
70 CONTINUE |
|
|
END |
|
|
ELSE |
|
|
IF( CTRANB |
|
|
DO |
|
|
DO |
|
|
CT( I ) |
|
|
G( I ) |
|
|
$ ABS1( B( J, K ) |
|
|
80 CONTINUE |
|
|
90 CONTINUE |
|
|
ELSE |
|
|
DO |
|
|
DO |
|
|
CT( I ) |
|
|
G( I ) |
|
|
$ ABS1( B( J, K ) |
|
|
100 CONTINUE |
|
|
110 CONTINUE |
|
|
END |
|
|
ELSE |
|
|
IF( CTRANA |
|
|
IF( CTRANB |
|
|
DO |
|
|
DO |
|
|
CT( I ) |
|
|
$ CONJG( B( J, K ) |
|
|
G( I ) |
|
|
$ ABS1( B( J, K ) |
|
|
120 CONTINUE |
|
|
130 CONTINUE |
|
|
ELSE |
|
|
DO |
|
|
DO |
|
|
CT( I ) |
|
|
G( I ) |
|
|
$ ABS1( B( J, K ) |
|
|
140 CONTINUE |
|
|
150 CONTINUE |
|
|
END |
|
|
ELSE |
|
|
IF( CTRANB |
|
|
DO |
|
|
DO |
|
|
CT( I ) |
|
|
G( I ) |
|
|
$ ABS1( B( J, K ) |
|
|
160 CONTINUE |
|
|
170 CONTINUE |
|
|
ELSE |
|
|
DO |
|
|
DO |
|
|
CT( I ) |
|
|
G( I ) |
|
|
$ ABS1( B( J, K ) |
|
|
180 CONTINUE |
|
|
190 CONTINUE |
|
|
END |
|
|
END |
|
|
END |
|
|
DO |
|
|
CT( I ) |
|
|
G( I ) |
|
|
$ ABS1( BETA |
|
|
200 CONTINUE |
|
|
|
|
|
|
|
|
|
|
|
ERR |
|
|
DO |
|
|
ERRI /EPS |
|
|
IF( G( I ).NE.RZERO ) |
|
|
$ ERRI = ERRI/ |
|
|
ERR |
|
|
IF( ERR*SQRT( EPS |
|
|
$ GO |
|
|
210 CONTINUE |
|
|
|
|
|
220 CONTINUE |
|
|
|
|
|
|
|
|
GO |
|
|
|
|
|
|
|
|
|
|
|
230 FATAL |
|
|
WRITE( NOUT, FMT |
|
|
DO |
|
|
IF( MV |
|
|
WRITE( NOUT, FMT |
|
|
ELSE |
|
|
WRITE( NOUT, FMT |
|
|
END |
|
|
240 CONTINUE |
|
|
IF( N.GT.1 ) |
|
|
$ WRITE( NOUT, FMT |
|
|
|
|
|
250 CONTINUE |
|
|
RETURN |
|
|
|
|
|
9999 FORMAT( ' ******* FATAL ERROR - COMPUTED RESULT IS LESS THAN HAL', |
|
|
$ 'F ACCURATE *******', /, |
|
|
$ ) |
|
|
9998 FORMAT( 1X, I7, 2( , G15.6, , G15.6, ) ) |
|
|
9997 FORMAT( , I3 ) |
|
|
* |
|
|
* End of CMMCH. |
|
|
* |
|
|
END |
|
|
LOGICAL FUNCTION LCE( RI, RJ, LR ) |
|
|
* |
|
|
* Tests if two arrays are identical. |
|
|
* |
|
|
* Auxiliary routine for test program for Level 3 Blas. |
|
|
* |
|
|
* -- Written on 8-February-1989. |
|
|
* Jack Dongarra, Argonne National Laboratory. |
|
|
* Iain Duff, AERE Harwell. |
|
|
* Jeremy Du Croz, Numerical Algorithms Group Ltd. |
|
|
* Sven Hammarling, Numerical Algorithms Group Ltd. |
|
|
* |
|
|
* .. Scalar Arguments .. |
|
|
INTEGER LR |
|
|
* .. Array Arguments .. |
|
|
COMPLEX RI( * ), RJ( * ) |
|
|
* .. Local Scalars .. |
|
|
INTEGER I |
|
|
* .. Executable Statements .. |
|
|
DO 10 I = 1, LR |
|
|
IF( RI( I ).NE.RJ( I ) ) |
|
|
$ GO TO 20 |
|
|
10 CONTINUE |
|
|
LCE = .TRUE. |
|
|
GO TO 30 |
|
|
20 CONTINUE |
|
|
LCE = .FALSE. |
|
|
30 RETURN |
|
|
* |
|
|
* End of LCE. |
|
|
* |
|
|
END |
|
|
LOGICAL FUNCTION LCERES( TYPE, UPLO, M, N, AA, AS, LDA ) |
|
|
* |
|
|
* Tests if selected elements in two arrays are equal. |
|
|
* |
|
|
* TYPE is or or . |
|
|
* |
|
|
* Auxiliary routine for test program for Level 3 Blas. |
|
|
* |
|
|
* -- Written on 8-February-1989. |
|
|
* Jack Dongarra, Argonne National Laboratory. |
|
|
* Iain Duff, AERE Harwell. |
|
|
* Jeremy Du Croz, Numerical Algorithms Group Ltd. |
|
|
* Sven Hammarling, Numerical Algorithms Group Ltd. |
|
|
* |
|
|
* .. Scalar Arguments .. |
|
|
INTEGER LDA, M, N |
|
|
CHARACTER*1 UPLO |
|
|
CHARACTER*2 TYPE |
|
|
* .. Array Arguments .. |
|
|
COMPLEX AA( LDA, * ), AS( LDA, * ) |
|
|
* .. Local Scalars .. |
|
|
INTEGER I, IBEG, IEND, J |
|
|
LOGICAL UPPER |
|
|
* .. Executable Statements .. |
|
|
UPPER = UPLO.EQ. |
|
|
IF( TYPE.EQ. )THEN |
|
|
DO 20 J = 1, N |
|
|
DO 10 I = M + 1, LDA |
|
|
IF( AA( I, J ).NE.AS( I, J ) ) |
|
|
$ GO TO 70 |
|
|
10 CONTINUE |
|
|
20 CONTINUE |
|
|
ELSE IF( TYPE.EQ..OR.TYPE.EQ. )THEN |
|
|
DO 50 J = 1, N |
|
|
IF( UPPER )THEN |
|
|
IBEG = 1 |
|
|
IEND = J |
|
|
ELSE |
|
|
IBEG = J |
|
|
IEND = N |
|
|
END IF |
|
|
DO 30 I = 1, IBEG - 1 |
|
|
IF( AA( I, J ).NE.AS( I, J ) ) |
|
|
$ GO TO 70 |
|
|
30 CONTINUE |
|
|
DO 40 I = IEND + 1, LDA |
|
|
IF( AA( I, J ).NE.AS( I, J ) ) |
|
|
$ GO TO 70 |
|
|
40 CONTINUE |
|
|
50 CONTINUE |
|
|
END IF |
|
|
* |
|
|
LCERES = .TRUE. |
|
|
GO TO 80 |
|
|
70 CONTINUE |
|
|
LCERES = .FALSE. |
|
|
80 RETURN |
|
|
* |
|
|
* End of LCERES. |
|
|
* |
|
|
END |
|
|
COMPLEX FUNCTION CBEG( RESET ) |
|
|
* |
|
|
* Generates complex numbers as pairs of random numbers uniformly |
|
|
* distributed between -0.5 and 0.5. |
|
|
* |
|
|
* Auxiliary routine for test program for Level 3 Blas. |
|
|
* |
|
|
* -- Written on 8-February-1989. |
|
|
* Jack Dongarra, Argonne National Laboratory. |
|
|
* Iain Duff, AERE Harwell. |
|
|
* Jeremy Du Croz, Numerical Algorithms Group Ltd. |
|
|
* Sven Hammarling, Numerical Algorithms Group Ltd. |
|
|
* |
|
|
* .. Scalar Arguments .. |
|
|
LOGICAL RESET |
|
|
* .. Local Scalars .. |
|
|
INTEGER I, IC, J, MI, MJ |
|
|
* .. Save statement .. |
|
|
SAVE I, IC, J, MI, MJ |
|
|
* .. Intrinsic Functions .. |
|
|
INTRINSIC CMPLX |
|
|
* .. Executable Statements .. |
|
|
IF( RESET )THEN |
|
|
* Initialize local variables. |
|
|
MI = 891 |
|
|
MJ = 457 |
|
|
I = 7 |
|
|
J = 7 |
|
|
IC = 0 |
|
|
RESET = .FALSE. |
|
|
END IF |
|
|
* |
|
|
* The sequence of values of I or J is bounded between 1 and 999. |
|
|
* If initial I or J = 1,2,3,6,7 or 9, the period will be 50. |
|
|
* If initial I or J = 4 or 8, the period will be 25. |
|
|
* If initial I or J = 5, the period will be 10. |
|
|
* IC is used to break up the period by skipping 1 value of I or J |
|
|
* in 6. |
|
|
* |
|
|
IC = IC + 1 |
|
|
10 I = I*MI |
|
|
J = J*MJ |
|
|
I = I - 1000*( I/1000 ) |
|
|
J /1000 ) |
|
|
IF( IC.GE.5 )THEN |
|
|
IC = 0 |
|
|
GO TO 10 |
|
|
END IF |
|
|
CBEG = CMPLX( ( I - 500 )//1001.0 ) |
|
|
RETURN |
|
|
* |
|
|
* End of CBEG. |
|
|
* |
|
|
END |
|
|
REAL FUNCTION SDIFF( X, Y ) |
|
|
* |
|
|
* Auxiliary routine for test program for Level 3 Blas. |
|
|
* |
|
|
* -- Written on 8-February-1989. |
|
|
* Jack Dongarra, Argonne National Laboratory. |
|
|
* Iain Duff, AERE Harwell. |
|
|
* Jeremy Du Croz, Numerical Algorithms Group Ltd. |
|
|
* Sven Hammarling, Numerical Algorithms Group Ltd. |
|
|
* |
|
|
* .. Scalar Arguments .. |
|
|
REAL X, Y |
|
|
* .. Executable Statements .. |
|
|
SDIFF = X - Y |
|
|
RETURN |
|
|
* |
|
|
* End of SDIFF. |
|
|
* |
|
|
END |
|
|
SUBROUTINE CHKXER( SRNAMT, INFOT, NOUT, LERR, OK ) |
|
|
* |
|
|
* Tests whether XERBLA has detected an error when it should. |
|
|
* |
|
|
* Auxiliary routine for test program for Level 3 Blas. |
|
|
* |
|
|
* -- Written on 8-February-1989. |
|
|
* Jack Dongarra, Argonne National Laboratory. |
|
|
* Iain Duff, AERE Harwell. |
|
|
* Jeremy Du Croz, Numerical Algorithms Group Ltd. |
|
|
* Sven Hammarling, Numerical Algorithms Group Ltd. |
|
|
* |
|
|
* .. Scalar Arguments .. |
|
|
INTEGER INFOT, NOUT |
|
|
LOGICAL LERR, OK |
|
|
CHARACTER*6 SRNAMT |
|
|
* .. Executable Statements .. |
|
|
IF( .NOT.LERR )THEN |
|
|
WRITE( NOUT, FMT = 9999 )INFOT, SRNAMT |
|
|
OK = .FALSE. |
|
|
END IF |
|
|
LERR = .FALSE. |
|
|
RETURN |
|
|
* |
|
|
9999 FORMAT( , I2, , |
|
|
$ , A6, ) |
|
|
* |
|
|
* End of CHKXER. |
|
|
* |
|
|
END |
|
|
SUBROUTINE XERBLA( SRNAME, INFO ) |
|
|
* |
|
|
* This is a special version of XERBLA to be used only as part of |
|
|
* the test program for testing error exits from the Level 3 BLAS |
|
|
* routines. |
|
|
* |
|
|
* XERBLA is an error handler for the Level 3 BLAS routines. |
|
|
* |
|
|
* It is called by the Level 3 BLAS routines if an input parameter is |
|
|
* invalid. |
|
|
* |
|
|
* Auxiliary routine for test program for Level 3 Blas. |
|
|
* |
|
|
* -- Written on 8-February-1989. |
|
|
* Jack Dongarra, Argonne National Laboratory. |
|
|
* Iain Duff, AERE Harwell. |
|
|
* Jeremy Du Croz, Numerical Algorithms Group Ltd. |
|
|
* Sven Hammarling, Numerical Algorithms Group Ltd. |
|
|
* |
|
|
* .. Scalar Arguments .. |
|
|
INTEGER INFO |
|
|
CHARACTER*6 SRNAME |
|
|
* .. Scalars in Common .. |
|
|
INTEGER INFOT, NOUT |
|
|
LOGICAL LERR, OK |
|
|
CHARACTER*6 SRNAMT |
|
|
* .. Common blocks .. |
|
|
COMMON //INFOT, NOUT, OK, LERR |
|
|
COMMON //SRNAMT |
|
|
* .. Executable Statements .. |
|
|
LERR = .TRUE. |
|
|
IF( INFO.NE.INFOT )THEN |
|
|
IF( INFOT.NE.0 )THEN |
|
|
WRITE( NOUT, FMT = 9999 )INFO, INFOT |
|
|
ELSE |
|
|
WRITE( NOUT, FMT = 9997 )INFO |
|
|
END IF |
|
|
OK = .FALSE. |
|
|
END IF |
|
|
IF( SRNAME.NE.SRNAMT )THEN |
|
|
WRITE( NOUT, FMT = 9998 )SRNAME, SRNAMT |
|
|
OK = .FALSE. |
|
|
END IF |
|
|
RETURN |
|
|
* |
|
|
9999 FORMAT( , I6, , |
|
|
$ , I2, ) |
|
|
9998 FORMAT( , A6, , |
|
|
$ , A6, ) |
|
|
9997 FORMAT( , I6, |
|
|
$ ) |
|
|
* |
|
|
* End of XERBLA |
|
|
* |
|
|
END |
|
|
|
|
|
|