114 parameter( nsubs = 17 )
116 parameter( zero = ( 0.0d0, 0.0d0 ),
117 $ one = ( 1.0d0, 0.0d0 ) )
118 DOUBLE PRECISION rzero
119 parameter( rzero = 0.0d0 )
121 parameter( nmax = 65, incmax = 2 )
122 INTEGER ninmax, nidmax, nkbmax, nalmax, nbemax
123 parameter( ninmax = 7, nidmax = 9, nkbmax = 7,
124 $ nalmax = 7, nbemax = 7 )
126 DOUBLE PRECISION , err, thresh
127 INTEGER i, isnum, j, n, nalf, nbet, nidim, ninc, nkb,
129 LOGICAL fatal, ltestt, rewi, same, sfatal, trace,
133 CHARACTER*32 snaps, summry
135 COMPLEX*16 a( nmax, nmax ), aa( nmax*nmax ),
136 $ alf( nalmax ), as( nmax*nmax ), bet( nbemax ),
137 $ x( nmax ), xs( nmax*incmax ),
138 $ xx( nmax*incmax ), y( nmax ),
139 $ ys( nmax*incmax ), yt( nmax ),
140 $ yy( nmax*incmax ), z( 2*nmax )
141 DOUBLE PRECISION g( nmax )
142 INTEGER idim( nidmax ), inc( ninmax ), kb( nkbmax )
143 LOGICAL ltest( nsubs )
144 CHARACTER*6 snames( nsubs )
146 DOUBLE PRECISION ddiff
159 COMMON /infoc/infot, noutc, ok, lerr
160 COMMON /srnamc/srnamt
162 DATA snames
'ZGEMV ''ZGBMV ',
'ZHEMV ',
'ZHBMV ',
163 $
'ZHPMV ',
'ZTRMV ',
'ZTBMV ',
'ZTPMV '
164 $
'ZTRSV ',
'ZTBSV ',
'ZTPSV ',
'ZGERC ',
165 $
'ZGERU ',
'ZHER ',
'ZHPR ',
'ZHER2 ',
171 READ( nin, fmt = * )summry
172 READ( nin, fmt = * )nout
173 OPEN( nout, file = summry, status =
'UNKNOWN' )
178 READ( nin, fmt = * )snaps
179 READ( nin, fmt = * )ntra
182 OPEN( ntra, file = snaps, status =
'UNKNOWN' )
185 READ( nin, fmt = * )rewi
186 rewi = rewi.AND.trace
188 READ( nin, fmt = * )sfatal
190 READ( nin, fmt = * )tsterr
192 READ( nin, fmt = * )thresh
197 READ( nin, fmt = * )nidim
199 WRITE( nout, fmt = 9997 )'n
', NIDMAX
202 READ( NIN, FMT = * )( IDIM( I ), I = 1, NIDIM )
204.LT..OR..GT.
IF( IDIM( I )0IDIM( I )NMAX )THEN
205 WRITE( NOUT, FMT = 9996 )NMAX
210 READ( NIN, FMT = * )NKB
211.LT..OR..GT.
IF( NKB1NKBNKBMAX )THEN
212 WRITE( NOUT, FMT = 9997 )'k
', NKBMAX
215 READ( NIN, FMT = * )( KB( I ), I = 1, NKB )
217.LT.
IF( KB( I )0 )THEN
218 WRITE( NOUT, FMT = 9995 )
223 READ( NIN, FMT = * )NINC
224.LT..OR..GT.
IF( NINC1NINCNINMAX )THEN
225 WRITE( NOUT, FMT = 9997 )'incx and incy
', NINMAX
228 READ( NIN, FMT = * )( INC( I ), I = 1, NINC )
230.EQ..OR..GT.
IF( INC( I )0ABS( INC( I ) )INCMAX )THEN
231 WRITE( NOUT, FMT = 9994 )INCMAX
236 READ( NIN, FMT = * )NALF
237.LT..OR..GT.
IF( NALF1NALFNALMAX )THEN
238 WRITE( NOUT, FMT = 9997 )'alpha', NALMAX
241 READ( NIN, FMT = * )( ALF( I ), I = 1, NALF )
243 READ( NIN, FMT = * )NBET
244.LT..OR..GT.
IF( NBET1NBETNBEMAX )THEN
245 WRITE( NOUT, FMT = 9997 )'beta
', NBEMAX
248 READ( NIN, FMT = * )( BET( I ), I = 1, NBET )
252 WRITE( NOUT, FMT = 9993 )
253 WRITE( NOUT, FMT = 9992 )( IDIM( I ), I = 1, NIDIM )
254 WRITE( NOUT, FMT = 9991 )( KB( I ), I = 1, NKB )
255 WRITE( NOUT, FMT = 9990 )( INC( I ), I = 1, NINC )
256 WRITE( NOUT, FMT = 9989 )( ALF( I ), I = 1, NALF )
257 WRITE( NOUT, FMT = 9988 )( BET( I ), I = 1, NBET )
258.NOT.
IF( TSTERR )THEN
259 WRITE( NOUT, FMT = * )
260 WRITE( NOUT, FMT = 9980 )
262 WRITE( NOUT, FMT = * )
263 WRITE( NOUT, FMT = 9999 )THRESH
264 WRITE( NOUT, FMT = * )
272 50 READ( NIN, FMT = 9984, END = 80 )SNAMET, LTESTT
274.EQ.
IF( SNAMETSNAMES( I ) )
277 WRITE( NOUT, FMT = 9986 )SNAMET
279 70 LTEST( I ) = LTESTT
288 WRITE( NOUT, FMT = 9998 )EPS
295 A( I, J ) = MAX( I - J + 1, 0 )
301 YY( J ) = J*( ( J + 1 )*J )/2 - ( ( J + 1 )*J*( J - 1 ) )/3
306 CALL ZMVCH( TRANS, N, N, ONE, A, NMAX, X, 1, ZERO, Y, 1, YT, G,
307 $ YY, EPS, ERR, FATAL, NOUT, .TRUE. )
308 SAME = LZE( YY, YT, N )
309.NOT..OR..NE.
IF( SAMEERRRZERO )THEN
310 WRITE( NOUT, FMT = 9985 )TRANS, SAME, ERR
314 CALL ZMVCH( TRANS, N, N, ONE, A, NMAX, X, -1, ZERO, Y, -1, YT, G,
315 $ YY, EPS, ERR, FATAL, NOUT, .TRUE. )
316 SAME = LZE( YY, YT, N )
317.NOT..OR..NE.
IF( SAMEERRRZERO )THEN
318 WRITE( NOUT, FMT = 9985 )TRANS, SAME, ERR
324 DO 210 ISNUM = 1, NSUBS
325 WRITE( NOUT, FMT = * )
326.NOT.
IF( LTEST( ISNUM ) )THEN
328 WRITE( NOUT, FMT = 9983 )SNAMES( ISNUM )
330 SRNAMT = SNAMES( ISNUM )
333 CALL ZCHKE( ISNUM, SNAMES( ISNUM ), NOUT )
334 WRITE( NOUT, FMT = * )
340 GO TO ( 140, 140, 150, 150, 150, 160, 160,
341 $ 160, 160, 160, 160, 170, 170, 180,
342 $ 180, 190, 190 )ISNUM
344 140 CALL ZCHK1( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE,
345 $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NALF, ALF,
346 $ NBET, BET, NINC, INC, NMAX, INCMAX, A, AA, AS,
347 $ X, XX, XS, Y, YY, YS, YT, G )
350 150 CALL ZCHK2( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE,
351 $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NALF, ALF,
352 $ NBET, BET, NINC, INC, NMAX, INCMAX, A, AA, AS,
353 $ X, XX, XS, Y, YY, YS, YT, G )
357 160 CALL ZCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE,
358 $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC,
359 $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z )
362 170 CALL ZCHK4( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE,
363 $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC,
364 $ NMAX, INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS,
368 180 CALL ZCHK5( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE,
369 $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC,
370 $ NMAX, INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS,
374 190 CALL ZCHK6( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE,
375 $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC,
376 $ NMAX, INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS,
379.AND.
200 IF( FATALSFATAL )
383 WRITE( NOUT, FMT = 9982 )
387 WRITE( NOUT, FMT = 9981 )
391 WRITE( NOUT, FMT = 9987 )
399 9999 FORMAT( ' routines pass computational tests
IF test ratio is les
',
401 9998 FORMAT( ' relative machine precision is taken to be
', 1P, D9.1 )
402 9997 FORMAT( ' number of values of
', A, ' is less than 1 or greater
',
404 9996 FORMAT( ' VALUE of n is less than 0 or greater than
', I2 )
405 9995 FORMAT( ' VALUE of k is less than 0
' )
406 9994 FORMAT( ' absolute
VALUE of incx or incy is 0 or greater than
',
408 9993 FORMAT( ' tests of
the COMPLEX*16 level 2 blas
', //' the f
',
409 $ 'ollowing
PARAMETER values will be used:
' )
410 9992 FORMAT( ' for n
', 9I6 )
411 9991 FORMAT( ' for k ', 7i6 )
412 9990
FORMAT(
' FOR INCX AND INCY ', 7i6 )
413 9989
FORMAT(
' FOR ALPHA ',
414 $ 7(
'(', f4.1,
',', f4.1,
') ', : ) )
415 9988
FORMAT(
' FOR BETA ',
416 $ 7(
'(', f4.1,
',', f4.1,
') ', : ) )
417 9987
FORMAT(
' AMEND DATA FILE OR INCREASE ARRAY SIZES IN PROGRAM',
418 $ /
' ******* TESTS ABANDONED *******' )
419 9986
FORMAT(
' SUBPROGRAM NAME ', a6,
' NOT RECOGNIZED', /
' ******* T',
420 $
'ESTS ABANDONED *******' )
421 9985
FORMAT(
' ERROR IN ZMVCH - IN-LINE DOT PRODUCTS ARE BEING EVALU',
422 $
'ATED WRONGLY.', /
' ZMVCH WAS CALLED WITH TRANS = ', a1
423 $
' AND RETURNED SAME = ', l1,
' AND ERR = ', f12.3,
'.', /
424 $
' THIS MAY BE DUE TO FAULTS IN THE ARITHMETIC OR THE COMPILER.'
425 $ , /
' ******* TESTS ABANDONED *******' )
426 9984
FORMAT( a6, l2 )
427 9983
FORMAT( 1x, a6,
' WAS NOT TESTED' )
428 9982
FORMAT( /
' END OF TESTS' )
429 9981
FORMAT( /
' ******* FATAL ERROR - TESTS ABANDONED *******' )
430 9980
FORMAT(
' ERROR-EXITS WILL NOT BE TESTED' )
435 SUBROUTINE zchk1( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
436 $ FATAL, NIDIM, IDIM, NKB, KB, NALF, ALF, NBET,
437 $ BET, NINC, INC, NMAX, INCMAX, A, AA, AS, X, XX,
438 $ XS, Y, YY, YS, YT, G )
449 COMPLEX*16 ZERO, HALF
450 PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
451 $ half = ( 0.5d0, 0.0d0 ) )
452 DOUBLE PRECISION RZERO
453 parameter( rzero = 0.0d0 )
455 DOUBLE PRECISION EPS, THRESH
456 INTEGER INCMAX, NALF, NBET, NIDIM, NINC, NKB, NMAX,
458 LOGICAL FATAL, REWI, TRACE
461 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
462 $ as( nmax*nmax ), bet( nbet ), x( nmax ),
463 $ xs( nmax*incmax ), xx( nmax*incmax ),
464 $ y( nmax ), ys( nmax*incmax ), yt( nmax ),
466 DOUBLE PRECISION G( )
467 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
469 COMPLEX*16 ALPHA, ALS, BETA, BLS, TRANSL
470 DOUBLE PRECISION ERR, ERRMAX
471 INTEGER I, IA, IB, IC, IKU, IM, IN, INCX, , INCY,
472 $ incys, ix, iy, kl, kls, ku, kus, laa, lda,
473 $ ldas, lx, ly, m, ml, ms, n, nargs, nc, nd, nk,
475 LOGICAL BANDED, FULL, NULL, RESET, SAME, TRAN
476 CHARACTER*1 TRANS, TRANSS
491 COMMON /infoc/infot, noutc, ok, lerr
495 full = sname( 3: 3 ).EQ.
'E'
496 banded = sname( 3: 3 ).EQ.
'B'
500 ELSE IF( banded )
THEN
514 $ m =
max( n - nd, 0 )
516 $ m =
min( n + nd, nmax )
526 kl =
max( ku - 1, 0 )
543 null = n.LE.0.OR.m.LE.0
548 CALL zmake( sname( 2: 3 ),
' ',
' ', m, n, a, nmax, aa,
549 $ lda, kl, ku, reset, transl )
552 trans = ich( ic: ic )
553 tran = trans.EQ.
'T'.OR.trans.EQ.
'C'
570 CALL zmake(
'GE',
' ',
' ', 1,
nl, x, 1, xx,
571 $ abs( incx ), 0,
nl - 1, reset, transl )
574 xx( 1 + abs( incx )*(
nl/2 - 1 ) ) = zero
590 CALL zmake(
'GE',
' ',
' ', 1, ml, y, 1,
591 $ yy, abs( incy ), 0, ml - 1,
623 $
WRITE( ntra, fmt = 9994 )nc, sname,
624 $ trans, m, n, alpha, lda, incx, beta,
628 CALL zgemv( trans, m, n, alpha, aa,
629 $ lda, xx, incx, beta, yy,
631 ELSE IF( banded )
THEN
633 $
WRITE( ntra, fmt = 9995 )nc, sname,
634 $ trans, m, n, kl, ku, alpha, lda,
638 CALL zgbmv( trans, m, n, kl, ku, alpha,
639 $ aa, lda, xx, incx, beta,
646 WRITE( nout, fmt = 9993 )
653 isame( 1 ) = trans.EQ.transs
657 isame( 4 ) = als.EQ.alpha
658 isame( 5 ) = lze( as, aa, laa )
659 isame( 6 ) = ldas.EQ.lda
660 isame( 7 ) = lze( xs, xx, lx )
661 isame( 8 ) = incxs.EQ.incx
662 isame( 9 ) = bls.EQ.beta
664 isame( 10 ) = lze( ys, yy, ly )
666 isame( 10 ) = lzeres(
'GE',
' ', 1,
670 isame( 11 ) = incys.EQ.incy
671 ELSE IF( banded )
THEN
672 isame( 4 ) = kls.EQ.kl
673 isame( 5 ) = kus.EQ.ku
674 isame( 6 ) = als.EQ.alpha
675 isame( 7 ) = lze( as, aa, laa )
676 isame( 8 ) = ldas.EQ.lda
677 isame( 9 ) = lze( xs, xx, lx )
678 isame( 10 ) = incxs.EQ.incx
679 isame( 11 ) = bls.EQ.beta
681 isame( 12 ) = lze( ys, yy, ly )
683 isame( 12 ) = lzeres(
'GE',
' ', 1,
687 isame( 13 ) = incys.EQ.incy
695 same = same.AND.isame( i )
696 IF( .NOT.isame( i ) )
697 $
WRITE( nout, fmt = 9998 )i
708 CALL zmvch( trans, m, n, alpha, a,
709 $ nmax, x, incx, beta, y,
710 $ incy, yt, g, yy, eps, err,
711 $ fatal, nout, .true. )
712 errmax =
max( errmax, err )
741 IF( errmax.LT.thresh )
THEN
742 WRITE( nout, fmt = 9999 )sname, nc
744 WRITE( nout, fmt = 9997 )sname, nc, errmax
749 WRITE( nout, fmt = 9996 )sname
751 WRITE( nout, fmt = 9994 )nc, sname, trans, m, n, alpha, lda,
753 ELSE IF( banded )
THEN
754 WRITE( nout, fmt = 9995 )nc, sname, trans, m, n, kl, ku,
755 $ alpha, lda, incx, beta, incy
761 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
763 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
764 $
'ANGED INCORRECTLY *******' )
765 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
766 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
767 $
' - SUSPECT *******' )
768 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
769 9995
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 4( i3,
',' ),
'(',
770 $ f4.1,
',', f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',',
771 $ f4.1,
'), Y,', i2,
') .' )
772 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 2( i3,
',' ),
'(',
773 $ f4.1, ',
', F4.1, '), a,
', I3, ', x,
', I2, ',(
', F4.1, ',
',
774 $ F4.1, '), y,
', I2, ') .
' )
775 9993 FORMAT( ' ******* fatal error - error-
EXIT taken on valid
CALL *
',
781 SUBROUTINE ZCHK2( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
782 $ FATAL, NIDIM, IDIM, NKB, KB, NALF, ALF, NBET,
783 $ BET, NINC, INC, NMAX, INCMAX, A, AA, AS, X, XX,
784 $ XS, Y, YY, YS, YT, G )
795 COMPLEX*16 ZERO, HALF
796 PARAMETER ( ZERO = ( 0.0D0, 0.0D0 ),
797 $ HALF = ( 0.5D0, 0.0D0 ) )
798 DOUBLE PRECISION RZERO
799 PARAMETER ( RZERO = 0.0D0 )
801 DOUBLE PRECISION EPS, THRESH
802 INTEGER INCMAX, NALF, NBET, NIDIM, NINC, NKB, NMAX,
804 LOGICAL FATAL, REWI, TRACE
807 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
808 $ AS( NMAX*NMAX ), BET( NBET ), X( NMAX ),
809 $ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ),
810 $ Y( NMAX ), YS( NMAX*INCMAX ), YT( NMAX ),
812 DOUBLE PRECISION G( NMAX )
813 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
815 COMPLEX*16 ALPHA, ALS, BETA, BLS, TRANSL
816 DOUBLE PRECISION ERR, ERRMAX
817 INTEGER I, IA, IB, IC, IK, IN, INCX, INCXS, INCY,
818 $ INCYS, IX, IY, K, KS, LAA, LDA, LDAS, LX, LY,
819 $ N, NARGS, NC, NK, NS
820 LOGICAL BANDED, FULL, NULL, PACKED, RESET, SAME
821 CHARACTER*1 UPLO, UPLOS
829 EXTERNAL ZHBMV, ZHEMV, ZHPMV, ZMAKE, ZMVCH
836 COMMON /INFOC/INFOT, NOUTC, OK, LERR
840.EQ.
FULL = SNAME( 3: 3 )'e
'
841.EQ.
BANDED = SNAME( 3: 3 )'b
'
842.EQ.
PACKED = SNAME( 3: 3 )'p
'
846 ELSE IF( BANDED )THEN
848 ELSE IF( PACKED )THEN
882 LAA = ( N*( N + 1 ) )/2
894 CALL ZMAKE( SNAME( 2: 3 ), UPLO, ' ', N, N, A, NMAX, AA,
895 $ LDA, K, K, RESET, TRANSL )
904 CALL ZMAKE( 'ge
', ' ', ' ', 1, N, X, 1, XX,
905 $ ABS( INCX ), 0, N - 1, RESET, TRANSL )
908 XX( 1 + ABS( INCX )*( N/2 - 1 ) ) = ZERO
924 CALL ZMAKE( 'ge
', ' ', ' ', 1, N, Y, 1, YY,
925 $ ABS( INCY ), 0, N - 1, RESET,
955 $ WRITE( NTRA, FMT = 9993 )NC, SNAME,
956 $ UPLO, N, ALPHA, LDA, INCX, BETA, INCY
959 CALL ZHEMV( UPLO, N, ALPHA, AA, LDA, XX,
960 $ INCX, BETA, YY, INCY )
961 ELSE IF( BANDED )THEN
963 $ WRITE( NTRA, FMT = 9994 )NC, SNAME,
964 $ UPLO, N, K, ALPHA, LDA, INCX, BETA,
968 CALL ZHBMV( UPLO, N, K, ALPHA, AA, LDA,
969 $ XX, INCX, BETA, YY, INCY )
970 ELSE IF( PACKED )THEN
972 $ WRITE( NTRA, FMT = 9995 )NC, SNAME,
973 $ UPLO, N, ALPHA, INCX, BETA, INCY
976 CALL ZHPMV( UPLO, N, ALPHA, AA, XX, INCX,
983 WRITE( NOUT, FMT = 9992 )
990.EQ.
ISAME( 1 ) = UPLOUPLOS
993.EQ.
ISAME( 3 ) = ALSALPHA
994 ISAME( 4 ) = LZE( AS, AA, LAA )
995.EQ.
ISAME( 5 ) = LDASLDA
996 ISAME( 6 ) = LZE( XS, XX, LX )
997.EQ.
ISAME( 7 ) = INCXSINCX
998.EQ.
ISAME( 8 ) = BLSBETA
1000 ISAME( 9 ) = LZE( YS, YY, LY )
1002 ISAME( 9 ) = LZERES( 'ge
', ' ', 1, N,
1003 $ YS, YY, ABS( INCY ) )
1005.EQ.
ISAME( 10 ) = INCYSINCY
1006 ELSE IF( BANDED )THEN
1007.EQ.
ISAME( 3 ) = KSK
1008.EQ.
ISAME( 4 ) = ALSALPHA
1009 ISAME( 5 ) = LZE( AS, AA, LAA )
1010.EQ.
ISAME( 6 ) = LDASLDA
1011 ISAME( 7 ) = LZE( XS, XX, LX )
1012.EQ.
ISAME( 8 ) = INCXSINCX
1013.EQ.
ISAME( 9 ) = BLSBETA
1015 ISAME( 10 ) = LZE( YS, YY, LY )
1017 ISAME( 10 ) = LZERES( 'ge
', ' ', 1, N,
1018 $ YS, YY, ABS( INCY ) )
1020.EQ.
ISAME( 11 ) = INCYSINCY
1021 ELSE IF( PACKED )THEN
1022.EQ.
ISAME( 3 ) = ALSALPHA
1023 ISAME( 4 ) = LZE( AS, AA, LAA )
1024 ISAME( 5 ) = LZE( XS, XX, LX )
1025.EQ.
ISAME( 6 ) = INCXSINCX
1026.EQ.
ISAME( 7 ) = BLSBETA
1028 ISAME( 8 ) = LZE( YS, YY, LY )
1030 ISAME( 8 ) = LZERES( 'ge
', ' ', 1, N,
1031 $ YS, YY, ABS( INCY ) )
1033.EQ.
ISAME( 9 ) = INCYSINCY
1041.AND.
SAME = SAMEISAME( I )
1042.NOT.
IF( ISAME( I ) )
1043 $ WRITE( NOUT, FMT = 9998 )I
1054 CALL ZMVCH( 'n
', N, N, ALPHA, A, NMAX, X,
1055 $ INCX, BETA, Y, INCY, YT, G,
1056 $ YY, EPS, ERR, FATAL, NOUT,
1058 ERRMAX = MAX( ERRMAX, ERR )
1084.LT.
IF( ERRMAXTHRESH )THEN
1085 WRITE( NOUT, FMT = 9999 )SNAME, NC
1087 WRITE( NOUT, FMT = 9997 )SNAME, NC, ERRMAX
1092 WRITE( NOUT, FMT = 9996 )SNAME
1094 WRITE( NOUT, FMT = 9993 )NC, SNAME, UPLO, N, ALPHA, LDA, INCX,
1096 ELSE IF( BANDED )THEN
1097 WRITE( NOUT, FMT = 9994 )NC, SNAME, UPLO, N, K, ALPHA, LDA,
1099 ELSE IF( PACKED )THEN
1100 WRITE( NOUT, FMT = 9995 )NC, SNAME, UPLO, N, ALPHA, INCX,
1107 9999 FORMAT( ' ', A6, ' passed
the computational tests(
', I6, ' call
',
1109 9998 FORMAT( ' ******* fatal error -
PARAMETER number
', I2, ' was ch
',
1110 $ 'anged incorrectly *******
' )
1111 9997 FORMAT( ' ', A6, ' completed
the computational tests(
', I6, ' c
',
1112 $ 'alls)
', /' ******* but with maximum test ratio
', F8.2,
1113 $ ' - suspect *******
' )
1114 9996 FORMAT( ' *******
', A6, ' failed on
CALL number:
' )
1115 9995 FORMAT( 1X, I6, ':
', A6, '(
''', A1, ''',
', I3, ',(
', F4.1, ',
',
1116 $ F4.1, '), ap, x,
', I2, ',(
', F4.1, ',
', F4.1, '), y,
', I2,
1118 9994 FORMAT( 1X, I6, ':
', A6, '(
''', A1, ''',
', 2( I3, ',
' ), '(
',
1119 $ F4.1, ',
', F4.1, '), a,
', I3, ', x,
', I2, ',(
', F4.1, ',
',
1120 $ F4.1, '), y,
', I2, ') .
' )
1121 9993 FORMAT( 1X, I6, ':
', A6, '(
''', A1, ''',
', I3, ',(
', F4.1, ',
',
1122 $ F4.1, '), a,
', I3, ', x,
', I2, ',(
', F4.1, ',
', F4.1, '),
',
1124 9992 FORMAT( ' ******* fatal error - error-
EXIT taken on valid
CALL *
',
1130 SUBROUTINE ZCHK3( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1131 $ FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, NMAX,
1132 $ INCMAX, A, AA, AS, X, XX, XS, XT, G, Z )
1143 COMPLEX*16 ZERO, HALF, ONE
1144 PARAMETER ( ZERO = ( 0.0D0, 0.0D0 ),
1145 $ HALF = ( 0.5D0, 0.0D0 ),
1146 $ ONE = ( 1.0D0, 0.0D0 ) )
1147 DOUBLE PRECISION RZERO
1148 PARAMETER ( RZERO = 0.0D0 )
1150 DOUBLE PRECISION EPS, THRESH
1151 INTEGER INCMAX, NIDIM, NINC, NKB, NMAX, NOUT, NTRA
1152 LOGICAL FATAL, REWI, TRACE
1155 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ),
1156 $ AS( NMAX*NMAX ), X( NMAX ), XS( NMAX*INCMAX ),
1157 $ XT( NMAX ), XX( NMAX*INCMAX ), Z( NMAX )
1158 DOUBLE PRECISION G( NMAX )
1159 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
1162 DOUBLE PRECISION ERR, ERRMAX
1163 INTEGER I, ICD, ICT, ICU, IK, IN, INCX, INCXS, IX, K,
1164 $ KS, LAA, LDA, LDAS, LX, N, NARGS, NC, NK, NS
1165 LOGICAL BANDED, FULL, NULL, PACKED, RESET, SAME
1166 CHARACTER*1 DIAG, DIAGS, TRANS, TRANSS, UPLO, UPLOS
1167 CHARACTER*2 ICHD, ICHU
1173 EXTERNAL LZE, LZERES
1175 EXTERNAL ZMAKE, ZMVCH, ZTBMV, ZTBSV, ZTPMV, ZTPSV,
1180 INTEGER INFOT, NOUTC
1183 COMMON /INFOC/INFOT, NOUTC, OK, LERR
1185 DATA ICHU/'ul
'/, ICHT/'ntc
'/, ICHD/'un
'/
1187.EQ.
FULL = SNAME( 3: 3 )'r
'
1188.EQ.
BANDED = SNAME( 3: 3 )'b
'
1189.EQ.
PACKED = SNAME( 3: 3 )'p
'
1193 ELSE IF( BANDED )THEN
1195 ELSE IF( PACKED )THEN
1207 DO 110 IN = 1, NIDIM
1233 LAA = ( N*( N + 1 ) )/2
1240 UPLO = ICHU( ICU: ICU )
1243 TRANS = ICHT( ICT: ICT )
1246 DIAG = ICHD( ICD: ICD )
1251 CALL ZMAKE( SNAME( 2: 3 ), UPLO, DIAG, N, N, A,
1252 $ NMAX, AA, LDA, K, K, RESET, TRANSL )
1261 CALL ZMAKE( 'ge
', ' ', ' ', 1, N, X, 1, XX,
1262 $ ABS( INCX ), 0, N - 1, RESET,
1266 XX( 1 + ABS( INCX )*( N/2 - 1 ) ) = ZERO
1289.EQ.
IF( SNAME( 4: 5 )'mv
' )THEN
1292 $ WRITE( NTRA, FMT = 9993 )NC, SNAME,
1293 $ UPLO, TRANS, DIAG, N, LDA, INCX
1296 CALL ZTRMV( UPLO, TRANS, DIAG, N, AA, LDA,
1298 ELSE IF( BANDED )THEN
1300 $ WRITE( NTRA, FMT = 9994 )NC, SNAME,
1301 $ UPLO, TRANS, DIAG, N, K, LDA, INCX
1304 CALL ZTBMV( UPLO, TRANS, DIAG, N, K, AA,
1306 ELSE IF( PACKED )THEN
1308 $ WRITE( NTRA, FMT = 9995 )NC, SNAME,
1309 $ UPLO, TRANS, DIAG, N, INCX
1312 CALL ZTPMV( UPLO, TRANS, DIAG, N, AA, XX,
1315.EQ.
ELSE IF( SNAME( 4: 5 )'sv
' )THEN
1318 $ WRITE( NTRA, FMT = 9993 )NC, SNAME,
1319 $ UPLO, TRANS, DIAG, N, LDA, INCX
1322 CALL ZTRSV( UPLO, TRANS, DIAG, N, AA, LDA,
1324 ELSE IF( BANDED )THEN
1326 $ WRITE( NTRA, FMT = 9994 )NC, SNAME,
1327 $ UPLO, TRANS, DIAG, N, K, LDA, INCX
1330 CALL ZTBSV( UPLO, TRANS, DIAG, N, K, AA,
1332 ELSE IF( PACKED )THEN
1334 $ WRITE( NTRA, FMT = 9995 )NC, SNAME,
1335 $ UPLO, TRANS, DIAG, N, INCX
1338 CALL ZTPSV( UPLO, TRANS, DIAG, N, AA, XX,
1346 WRITE( NOUT, FMT = 9992 )
1353.EQ.
ISAME( 1 ) = UPLOUPLOS
1354.EQ.
ISAME( 2 ) = TRANSTRANSS
1355.EQ.
ISAME( 3 ) = DIAGDIAGS
1356.EQ.
ISAME( 4 ) = NSN
1358 ISAME( 5 ) = LZE( AS, AA, LAA )
1359.EQ.
ISAME( 6 ) = LDASLDA
1361 ISAME( 7 ) = LZE( XS, XX, LX )
1363 ISAME( 7 ) = LZERES( 'ge
', ' ', 1, N, XS,
1366.EQ.
ISAME( 8 ) = INCXSINCX
1367 ELSE IF( BANDED )THEN
1368.EQ.
ISAME( 5 ) = KSK
1369 ISAME( 6 ) = LZE( AS, AA, LAA )
1370.EQ.
ISAME( 7 ) = LDASLDA
1372 ISAME( 8 ) = LZE( XS, XX, LX )
1374 ISAME( 8 ) = LZERES( 'ge
', ' ', 1, N, XS,
1377.EQ.
ISAME( 9 ) = INCXSINCX
1378 ELSE IF( PACKED )THEN
1379 ISAME( 5 ) = LZE( AS, AA, LAA )
1381 ISAME( 6 ) = LZE( XS, XX, LX )
1383 ISAME( 6 ) = LZERES( 'ge
', ' ', 1, N, XS,
1386.EQ.
ISAME( 7 ) = INCXSINCX
1394.AND.
SAME = SAMEISAME( I )
1395.NOT.
IF( ISAME( I ) )
1396 $ WRITE( NOUT, FMT = 9998 )I
1404.EQ.
IF( SNAME( 4: 5 )'mv
' )THEN
1408 CALL ZMVCH( TRANS, N, N, ONE, A, NMAX, X,
1409 $ INCX, ZERO, Z, INCX, XT, G,
1410 $ XX, EPS, ERR, FATAL, NOUT,
1412.EQ.
ELSE IF( SNAME( 4: 5 )'sv
' )THEN
1417 Z( I ) = XX( 1 + ( I - 1 )*
1419 XX( 1 + ( I - 1 )*ABS( INCX ) )
1422 CALL ZMVCH( TRANS, N, N, ONE, A, NMAX, Z,
1423 $ INCX, ZERO, X, INCX, XT, G,
1424 $ XX, EPS, ERR, FATAL, NOUT,
1427 ERRMAX = MAX( ERRMAX, ERR )
1450.LT.
IF( ERRMAXTHRESH )THEN
1451 WRITE( NOUT, FMT = 9999 )SNAME, NC
1453 WRITE( NOUT, FMT = 9997 )SNAME, NC, ERRMAX
1458 WRITE( NOUT, FMT = 9996 )SNAME
1460 WRITE( NOUT, FMT = 9993 )NC, SNAME, UPLO, TRANS, DIAG, N, LDA,
1462 ELSE IF( BANDED )THEN
1463 WRITE( NOUT, FMT = 9994 )NC, SNAME, UPLO, TRANS, DIAG, N, K,
1465 ELSE IF( PACKED )THEN
1466 WRITE( NOUT, FMT = 9995 )NC, SNAME, UPLO, TRANS, DIAG, N, INCX
1472 9999 FORMAT( ' ', A6, ' passed
the computational tests(
', I6, ' call
',
1474 9998 FORMAT( ' ******* fatal error -
PARAMETER number
', I2, ' was ch
',
1475 $ 'anged incorrectly *******
' )
1476 9997 FORMAT( ' ', A6, ' completed
the computational tests(
', I6, ' c
',
1477 $ 'alls)
', /' ******* but with maximum test ratio
', F8.2,
1478 $ ' - suspect *******
' )
1479 9996 FORMAT( ' *******
', A6, ' failed on
CALL number:
' )
1480 9995 FORMAT( 1X, I6, ':
', A6, '(
', 3( '''', A1, ''',
' ), I3, ', ap,
',
1482 9994 FORMAT( 1X, I6, ':
', A6, '(
', 3( '''', a1,
''',' ), 2( i3,
',' ),
1483 $
' A,', i3,
', X,', i2,
') .' )
1484 9993
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', A,',
1485 $ i3,
', X,', i2,
') .' )
1486 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
1492 SUBROUTINE zchk4( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1493 $ FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, NMAX,
1494 $ INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, YT, G,
1506 COMPLEX*16 ZERO, HALF, ONE
1507 PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
1508 $ half = ( 0.5d0, 0.0d0 ),
1509 $ one = ( 1.0d0, 0.0d0 ) )
1510 DOUBLE PRECISION RZERO
1511 PARAMETER ( RZERO = 0.0d0 )
1513 DOUBLE PRECISION EPS, THRESH
1514 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
1515 LOGICAL FATAL, REWI, TRACE
1518 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1519 $ as( nmax*nmax ), x( nmax ), xs
1520 $ xx( nmax*incmax ), y( nmax ),
1521 $ ys( nmax*incmax ), yt( nmax ),
1522 $ yy( nmax*incmax ), z( nmax )
1523 DOUBLE PRECISION G( NMAX )
1524 INTEGER IDIM( NIDIM ), INC( NINC )
1526 COMPLEX*16 ALPHA, ALS, TRANSL
1527 DOUBLE PRECISION ERR, ERRMAX
1528 INTEGER I, IA, IM, IN, INCX, INCXS, INCY, INCYS, IX,
1529 $ iy, j, laa, lda, ldas, lx, ly, m, ms, n, nargs,
1531 LOGICAL CONJ, NULL, RESET, SAME
1537 EXTERNAL lze, lzeres
1541 INTRINSIC abs, dconjg,
max,
min
1543 INTEGER INFOT, NOUTC
1546 COMMON /infoc/infot, noutc, ok, lerr
1548 conj = sname( 5: 5 ).EQ.
'C'
1556 DO 120 in = 1, nidim
1562 $ m =
max( n - nd, 0 )
1564 $ m =
min( n + nd, nmax )
1574 null = n.LE.0.OR.m.LE.0
1583 CALL zmake(
'GE',
' ',
' ', 1, m, x, 1, xx, abs( incx ),
1584 $ 0, m - 1, reset, transl )
1587 xx( 1 + abs( incx )*( m/2 - 1 ) ) = zero
1597 CALL zmake(
'GE',
' ',
' ', 1, n, y, 1, yy,
1598 $ abs( incy ), 0, n - 1, reset, transl )
1601 yy( 1 + abs( incy )*( n/2 - 1 ) ) = zero
1610 CALL zmake( sname( 2: 3 ),
' ',
' ', m, n, a, nmax,
1611 $ aa, lda, m - 1, n - 1, reset, transl )
1636 $
WRITE( ntra, fmt = 9994 )nc, sname, m, n,
1637 $ alpha, incx, incy, lda
1641 CALL zgerc( m, n, alpha, xx, incx, yy, incy, aa,
1646 CALL zgeru( m, n, alpha, xx, incx, yy, incy, aa,
1653 WRITE( nout, fmt = 9993 )
1660 isame( 1 ) = ms.EQ.m
1661 isame( 2 ) = ns.EQ.n
1662 isame( 3 ) = als.EQ.alpha
1663 isame( 4 ) = lze( xs, xx, lx )
1664 isame( 5 ) = incxs.EQ.incx
1665 isame( 6 ) = lze( ys, yy, ly )
1666 isame( 7 ) = incys.EQ.incy
1668 isame( 8 ) = lze( as, aa, laa )
1670 isame( 8 ) = lzeres(
'GE',
' ', m, n, as, aa,
1673 isame( 9 ) = ldas.EQ.lda
1679 same = same.AND.isame( i )
1680 IF( .NOT.isame( i ) )
1681 $
WRITE( nout, fmt = 9998 )i
1698 z( i ) = x( m - i + 1 )
1705 w( 1 ) = y( n - j + 1 )
1708 $ w( 1 ) = dconjg( w( 1 ) )
1709 CALL zmvch(
'N', m, 1, alpha, z, nmax, w, 1,
1710 $ one, a( 1, j ), 1, yt, g,
1711 $ aa( 1 + ( j - 1 )*lda ), eps,
1712 $ err, fatal, nout, .true. )
1713 errmax =
max( errmax, err )
1735 IF( errmax.LT.thresh )
THEN
1736 WRITE( nout, fmt = 9999 )sname, nc
1738 WRITE( nout, fmt = 9997 )sname, nc, errmax
1743 WRITE( nout, fmt = 9995 )j
1746 WRITE( nout, fmt = 9996 )sname
1752 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1754 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1755 $
'ANGED INCORRECTLY *******' )
1756 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1757 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1758 $
' - SUSPECT *******' )
1759 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1760 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
1761 9994
FORMAT( 1x, i6,
': ', a6,
'(', 2( i3,
',' ),
'(', f4.1,
',', f4.1,
1762 $
'), X,', i2,
', Y,', i2,
', A,', i3,
') ',
1764 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
1770 SUBROUTINE zchk5( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1771 $ FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, NMAX,
1772 $ INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, YT, G,
1784 COMPLEX*16 ZERO, HALF, ONE
1785 PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
1786 $ half = ( 0.5d0, 0.0d0 ),
1787 $ one = ( 1.0d0, 0.0d0 ) )
1788 DOUBLE PRECISION RZERO
1789 PARAMETER ( RZERO = 0.0d0 )
1791 DOUBLE PRECISION EPS, THRESH
1792 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
1793 LOGICAL FATAL, REWI, TRACE
1796 COMPLEX*16 A( , NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1797 $ as( nmax*nmax ), x( nmax ), xs( nmax*incmax ),
1798 $ xx( nmax*incmax ), y( nmax ),
1799 $ ys( nmax*incmax ), yt( nmax ),
1800 $ yy( nmax*incmax ), z( nmax )
1801 DOUBLE PRECISION ( NMAX )
1802 INTEGER IDIM( NIDIM ), INC( NINC )
1804 COMPLEX*16 ALPHA, TRANSL
1805 DOUBLE PRECISION ERR, ERRMAX, RALPHA, RALS
1806 INTEGER I, IA, IC, IN, INCX, INCXS, IX, J, JA, JJ, LAA,
1807 $ LDA, LDAS, LJ, LX, N, NARGS, NC, NS
1808 LOGICAL FULL, NULL, PACKED, RESET, SAME, UPPER
1809 CHARACTER*1 UPLO, UPLOS
1816 EXTERNAL LZE, LZERES
1822 INTEGER INFOT, NOUTC
1825 COMMON /infoc/infot, noutc, ok, lerr
1829 full = sname( 3: 3 ).EQ.
'E'
1830 packed = sname( 3: 3 ).EQ.
'P'
1834 ELSE IF( packed )
THEN
1842 DO 100 in = 1, nidim
1852 laa = ( n*( n + 1 ) )/2
1858 uplo = ich( ic: ic )
1868 CALL zmake(
'GE',
' ',
' ', 1, n, x, 1, xx, abs( incx ),
1869 $ 0, n - 1, reset, transl )
1872 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
1876 ralpha = dble( alf( ia ) )
1877 alpha = dcmplx( ralpha, rzero )
1878 null = n.LE.0.OR.ralpha.EQ.rzero
1883 CALL zmake( sname( 2: 3 ), uplo,
' ', n, n, a, nmax,
1884 $ aa, lda, n - 1, n - 1, reset, transl )
1906 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo, n,
1910 CALL zher( uplo, n, ralpha, xx, incx, aa, lda )
1911 ELSE IF( packed )
THEN
1913 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo, n,
1917 CALL zhpr( uplo, n, ralpha, xx, incx, aa )
1923 WRITE( nout, fmt = 9992 )
1930 isame( 1 ) = uplo.EQ.uplos
1931 isame( 2 ) = ns.EQ.n
1932 isame( 3 ) = rals.EQ.ralpha
1933 isame( 4 ) = lze( xs, xx, lx )
1934 isame( 5 ) = incxs.EQ.incx
1936 isame( 6 ) = lze( as, aa, laa )
1938 isame( 6 ) = lzeres( sname( 2: 3 ), uplo, n, n, as,
1941 IF( .NOT.packed )
THEN
1942 isame( 7 ) = ldas.EQ.lda
1949 same = same.AND.isame( i )
1950 IF( .NOT.isame( i ) )
1951 $
WRITE( nout, fmt = 9998 )i
1968 z( i ) = x( n - i + 1 )
1973 w( 1 ) = dconjg( z( j ) )
1981 CALL zmvch(
'N', lj, 1, alpha, z( jj ), lj, w,
1982 $ 1, one, a( jj, j ), 1, yt, g,
1983 $ aa( ja ), eps, err, fatal, nout,
1994 errmax =
max( errmax, err )
2015 IF( errmax.LT.thresh )
THEN
2016 WRITE( nout, fmt = 9999 )sname, nc
2018 WRITE( nout, fmt = 9997 )sname, nc, errmax
2023 WRITE( nout, fmt = 9995 )j
2026 WRITE( nout, fmt = 9996 )sname
2028 WRITE( nout, fmt = 9993 )nc, sname, uplo, n, ralpha, incx, lda
2029 ELSE IF( packed )
THEN
2030 WRITE( nout, fmt = 9994 )nc, sname, uplo, n, ralpha, incx
2036 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
2038 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
2039 $
'ANGED INCORRECTLY *******' )
2040 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
2041 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
2042 $
' - SUSPECT *******' )
2043 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
2044 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
2045 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2047 9993
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2048 $ i2,
', A,', i3,
') .' )
2049 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
2055 SUBROUTINE zchk6( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
2056 $ FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, NMAX,
2057 $ INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, YT, G,
2069 COMPLEX*16 ZERO, HALF, ONE
2070 PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
2071 $ half = ( 0.5d0, 0.0d0 ),
2072 $ one = ( 1.0d0, 0.0d0 ) )
2073 DOUBLE PRECISION RZERO
2074 PARAMETER ( RZERO = 0.0d0 )
2076 DOUBLE PRECISION EPS, THRESH
2077 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
2078 LOGICAL FATAL, REWI, TRACE
2081 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
2082 $ as( nmax*nmax ), x( nmax ), xs( nmax*incmax ),
2083 $ xx( nmax*incmax ), y( nmax ),
2084 $ ys( nmax*incmax ), yt( nmax ),
2085 $ yy( nmax*incmax ), z( nmax, 2 )
2086 DOUBLE PRECISION G( NMAX )
2087 INTEGER IDIM( NIDIM ), INC( NINC )
2089 COMPLEX*16 ALPHA, ALS, TRANSL
2090 DOUBLE PRECISION ERR, ERRMAX
2091 INTEGER I, IA, IC, IN, INCX, INCXS, INCY, INCYS, IX,
2092 $ IY, J, JA, JJ, LAA, LDA, LDAS, LJ, LX, LY, N,
2094 LOGICAL FULL, NULL, PACKED, RESET, SAME, UPPER
2095 CHARACTER*1 UPLO, UPLOS
2102 EXTERNAL lze, lzeres
2106 INTRINSIC abs, dconjg,
max
2108 INTEGER INFOT, NOUTC
2111 COMMON /infoc/infot, noutc, ok, lerr
2115 full = sname( 3: 3 ).EQ.
'E'
2116 packed = sname( 3: 3 ).EQ.
'P'
2120 ELSE IF( packed )
THEN
2128 DO 140 in = 1, nidim
2138 laa = ( n*( n + 1 ) )/2
2144 uplo = ich( ic: ic )
2154 CALL zmake(
'GE',
' ',
' ', 1, n, x, 1, xx, abs( incx ),
2155 $ 0, n - 1, reset, transl )
2158 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
2168 CALL zmake(
'GE',
' ',
' ', 1, n, y, 1, yy,
2169 $ abs( incy ), 0, n - 1, reset, transl )
2172 yy( 1 + abs( incy )*( n/2 - 1 ) ) = zero
2177 null = n.LE.0.OR.alpha.EQ.zero
2182 CALL zmake( sname( 2: 3 ), uplo,
' ', n, n, a,
2183 $ nmax, aa, lda, n - 1, n - 1, reset,
2210 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo, n,
2211 $ alpha, incx, incy, lda
2214 CALL zher2( uplo, n, alpha, xx, incx, yy, incy,
2216 ELSE IF( packed )
THEN
2218 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo, n,
2222 CALL zhpr2( uplo, n, alpha, xx, incx, yy, incy,
2229 WRITE( nout, fmt = 9992 )
2236 isame( 1 ) = uplo.EQ.uplos
2237 isame( 2 ) = ns.EQ.n
2238 isame( 3 ) = als.EQ.alpha
2239 isame( 4 ) = lze( xs, xx, lx )
2240 isame( 5 ) = incxs.EQ.incx
2241 isame( 6 ) = lze( ys, yy, ly )
2242 isame( 7 ) = incys.EQ.incy
2244 isame( 8 ) = lze( as, aa, laa )
2246 isame( 8 ) = lzeres( sname( 2: 3 ), uplo, n, n,
2249 IF( .NOT.packed )
THEN
2250 isame( 9 ) = ldas.EQ.lda
2257 same = same.AND.isame( i )
2258 IF( .NOT.isame( i ) )
2259 $
WRITE( nout, fmt = 9998 )i
2276 z( i, 1 ) = x( n - i + 1 )
2285 z( i, 2 ) = y( n - i + 1 )
2290 w( 1 ) = alpha*dconjg( z( j, 2 ) )
2291 w( 2 ) = dconjg( alpha )*dconjg( z( j, 1 ) )
2299 CALL zmvch(
'N', lj, 2, one, z( jj, 1 ),
2300 $ nmax, w, 1, one, a( jj, j ), 1,
2301 $ yt, g, aa( ja ), eps, err, fatal,
2312 errmax =
max( errmax, err )
2335 IF( errmax.LT.thresh )
THEN
2336 WRITE( nout, fmt = 9999 )sname, nc
2338 WRITE( nout, fmt = 9997 )sname, nc, errmax
2343 WRITE( nout, fmt = 9995 )j
2346 WRITE( nout, fmt = 9996 )sname
2348 WRITE( nout, fmt = 9993 )nc, sname, uplo, n, alpha, incx,
2350 ELSE IF( packed )
THEN
2351 WRITE( nout, fmt = 9994 )nc, sname, uplo, n, alpha, incx, incy
2357 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
2359 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
2360 $
'ANGED INCORRECTLY *******' )
2361 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
2362 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
2363 $
' - SUSPECT *******' )
2364 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
2365 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
2366 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',(', f4.1,
',',
2367 $ f4.1,
'), X,', i2,
', Y,', i2,
', AP) ',
2369 9993
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',(', f4.1,
',',
2370 $ f4.1,
'), X,', i2,
', Y,', i2,
', A,', i3,
') ',
2372 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
2394 INTEGER INFOT, NOUTC
2397 COMPLEX*16 ALPHA, BETA
2398 DOUBLE PRECISION RALPHA
2400 COMPLEX*16 A( 1, 1 ), X( 1 ), Y( 1 )
2402 EXTERNAL CHKXER, ZGBMV, ZGEMV, ZGERC, ZGERU, ZHBMV,
2406 COMMON /infoc/infot, noutc, ok, lerr
2414 GO TO ( 10, 20, 30, 40, 50, 60, 70, 80,
2415 $ 90, 100, 110, 120, 130, 140, 150, 160,
2418 CALL zgemv(
'/', 0, 0, alpha, a, 1, x, 1, beta, y, 1 )
2419 CALL chkxer( srnamt, infot, nout, lerr, ok )
2421 CALL zgemv(
'N', -1, 0, alpha, a, 1, x, 1, beta, y, 1 )
2422 CALL chkxer( srnamt, infot, nout, lerr, ok )
2424 CALL zgemv(
'N', 0, -1, alpha, a, 1, x, 1, beta, y, 1 )
2425 CALL chkxer( srnamt, infot, nout, lerr, ok )
2427 CALL zgemv(
'N', 2, 0, alpha, a, 1, x, 1, beta, y, 1 )
2428 CALL chkxer( srnamt, infot, nout, lerr, ok )
2430 CALL zgemv(
'N', 0, 0, alpha, a, 1, x, 0, beta, y, 1 )
2431 CALL chkxer( srnamt, infot, nout, lerr, ok )
2433 CALL zgemv(
'N', 0, 0, alpha, a, 1, x, 1, beta, y, 0 )
2434 CALL chkxer( srnamt, infot, nout, lerr, ok )
2437 CALL zgbmv(
'/', 0, 0, 0, 0, alpha, a, 1, x, 1, beta, y, 1 )
2438 CALL chkxer( srnamt, infot, nout, lerr, ok )
2440 CALL zgbmv(
'N', -1, 0, 0, 0, alpha, a, 1, x, 1, beta, y, 1 )
2441 CALL chkxer( srnamt, infot, nout, lerr, ok )
2443 CALL zgbmv(
'N', 0, -1, 0, 0, alpha, a, 1, x, 1, beta, y, 1 )
2444 CALL chkxer( srnamt, infot, nout, lerr, ok )
2446 CALL zgbmv( 'n
', 0, 0, -1, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2447 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2449 CALL ZGBMV( 'n
', 2, 0, 0, -1, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2450 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2452 CALL ZGBMV( 'n
', 0, 0, 1, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2453 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2455 CALL ZGBMV( 'n
', 0, 0, 0, 0, ALPHA, A, 1, X, 0, BETA, Y, 1 )
2456 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2458 CALL ZGBMV( 'n
', 0, 0, 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 0 )
2459 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2462 CALL ZHEMV( '/
', 0, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2463 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2465 CALL ZHEMV( 'u
', -1, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2466 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2468 CALL ZHEMV( 'u
', 2, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2469 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2471 CALL ZHEMV( 'u
', 0, ALPHA, A, 1, X, 0, BETA, Y, 1 )
2472 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2474 CALL ZHEMV( 'u
', 0, ALPHA, A, 1, X, 1, BETA, Y, 0 )
2475 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2478 CALL ZHBMV( '/
', 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2479 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2481 CALL ZHBMV( 'u
', -1, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2482 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2484 CALL ZHBMV( 'u
', 0, -1, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2485 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2487 CALL ZHBMV( 'u
', 0, 1, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2488 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2490 CALL ZHBMV( 'u
', 0, 0, ALPHA, A, 1, X, 0, BETA, Y, 1 )
2491 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2493 CALL ZHBMV( 'u
', 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 0 )
2494 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2497 CALL ZHPMV( '/
', 0, ALPHA, A, X, 1, BETA, Y, 1 )
2498 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2500 CALL ZHPMV( 'u
', -1, ALPHA, A, X, 1, BETA, Y, 1 )
2501 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2503 CALL ZHPMV( 'u
', 0, ALPHA, A, X, 0, BETA, Y, 1 )
2504 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2506 CALL ZHPMV( 'u
', 0, ALPHA, A, X, 1, BETA, Y, 0 )
2507 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2510 CALL ZTRMV( '/
', 'n
', 'n
', 0, A, 1, X, 1 )
2511 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2513 CALL ZTRMV( 'u
', '/
', 'n
', 0, A, 1, X, 1 )
2514 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2516 CALL ZTRMV( 'u
', 'n
', '/
', 0, A, 1, X, 1 )
2517 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2519 CALL ZTRMV( 'u
', 'n
', 'n
', -1, A, 1, X, 1 )
2520 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2522 CALL ZTRMV( 'u
', 'n
', 'n
', 2, A, 1, X, 1 )
2523 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2525 CALL ZTRMV( 'u
', 'n
', 'n
', 0, A, 1, X, 0 )
2526 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2529 CALL ZTBMV( '/
', 'n
', 'n
', 0, 0, A, 1, X, 1 )
2530 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2532 CALL ZTBMV( 'u
', '/
', 'n
', 0, 0, A, 1, X, 1 )
2533 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2535 CALL ZTBMV( 'u
', 'n
', '/
', 0, 0, A, 1, X, 1 )
2536 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2538 CALL ZTBMV( 'u
', 'n
', 'n
', -1, 0, A, 1, X, 1 )
2539 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2541 CALL ZTBMV( 'u
', 'n
', 'n
', 0, -1, A, 1, X, 1 )
2542 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2544 CALL ZTBMV( 'u
', 'n
', 'n
', 0, 1, A, 1, X, 1 )
2545 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2547 CALL ZTBMV( 'u
', 'n
', 'n
', 0, 0, A, 1, X, 0 )
2548 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2551 CALL ZTPMV( '/
', 'n
', 'n
', 0, A, X, 1 )
2552 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2554 CALL ZTPMV( 'u
', '/
', 'n
', 0, A, X, 1 )
2555 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2557 CALL ZTPMV( 'u
', 'n
', '/
', 0, A, X, 1 )
2558 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2560 CALL ZTPMV( 'u
', 'n
', 'n
', -1, A, X, 1 )
2561 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2563 CALL ZTPMV( 'u
', 'n
', 'n
', 0, A, X, 0 )
2564 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2567 CALL ZTRSV( '/
', 'n
', 'n
', 0, A, 1, X, 1 )
2568 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2570 CALL ZTRSV( 'u
', '/
', 'n
', 0, A, 1, X, 1 )
2571 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2573 CALL ZTRSV( 'u
', 'n
', '/
', 0, A, 1, X, 1 )
2574 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2576 CALL ZTRSV( 'u
', 'n
', 'n
', -1, A, 1, X, 1 )
2577 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2579 CALL ZTRSV( 'u
', 'n
', 'n
', 2, A, 1, X, 1 )
2580 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2582 CALL ZTRSV( 'u
', 'n
', 'n
', 0, A, 1, X, 0 )
2583 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2586 CALL ZTBSV( '/
', 'n
', 'n
', 0, 0, A, 1, X, 1 )
2587 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2589 CALL ZTBSV( 'u
', '/
', 'n
', 0, 0, A, 1, X, 1 )
2590 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2592 CALL ZTBSV( 'u
', 'n
', '/
', 0, 0, A, 1, X, 1 )
2593 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2595 CALL ZTBSV( 'u
', 'n
', 'n
', -1, 0, A, 1, X, 1 )
2596 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2598 CALL ZTBSV( 'u
', 'n
', 'n
', 0, -1, A, 1, X, 1 )
2599 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2601 CALL ZTBSV( 'u
', 'n
', 'n
', 0, 1, A, 1, X, 1 )
2602 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2604 CALL ZTBSV( 'u
', 'n
', 'n
', 0, 0, A, 1, X, 0 )
2605 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2608 CALL ZTPSV( '/
', 'n
', 'n
', 0, A, X, 1 )
2609 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2611 CALL ZTPSV( 'u
', '/
', 'n
', 0, A, X, 1 )
2612 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2614 CALL ZTPSV( 'u
', 'n
', '/
', 0, A, X, 1 )
2615 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2617 CALL ZTPSV( 'u
', 'n
', 'n
', -1, A, X, 1 )
2618 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2620 CALL ZTPSV( 'u
', 'n
', 'n
', 0, A, X, 0 )
2621 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2624 CALL ZGERC( -1, 0, ALPHA, X, 1, Y, 1, A, 1 )
2625 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2627 CALL ZGERC( 0, -1, ALPHA, X, 1, Y, 1, A, 1 )
2628 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2630 CALL ZGERC( 0, 0, ALPHA, X, 0, Y, 1, A, 1 )
2631 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2633 CALL ZGERC( 0, 0, ALPHA, X, 1, Y, 0, A, 1 )
2634 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2636 CALL ZGERC( 2, 0, ALPHA, X, 1, Y, 1, A, 1 )
2637 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2640 CALL ZGERU( -1, 0, ALPHA, X, 1, Y, 1, A, 1 )
2641 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2643 CALL ZGERU( 0, -1, ALPHA, X, 1, Y, 1, A, 1 )
2644 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2646 CALL ZGERU( 0, 0, ALPHA, X, 0, Y, 1, A, 1 )
2647 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2649 CALL ZGERU( 0, 0, ALPHA, X, 1, Y, 0, A, 1 )
2650 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2652 CALL ZGERU( 2, 0, ALPHA, X, 1, Y, 1, A, 1 )
2653 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2656 CALL ZHER( '/
', 0, RALPHA, X, 1, A, 1 )
2657 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2659 CALL ZHER( 'u
', -1, RALPHA, X, 1, A, 1 )
2660 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2662 CALL ZHER( 'u
', 0, RALPHA, X, 0, A, 1 )
2663 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2665 CALL ZHER( 'u
', 2, RALPHA, X, 1, A, 1 )
2666 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2669 CALL ZHPR( '/
', 0, RALPHA, X, 1, A )
2670 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2672 CALL ZHPR( 'u
', -1, RALPHA, X, 1, A )
2673 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2675 CALL ZHPR( 'u
', 0, RALPHA, X, 0, A )
2676 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2679 CALL ZHER2( '/
', 0, ALPHA, X, 1, Y, 1, A, 1 )
2680 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2682 CALL ZHER2( 'u
', -1, ALPHA, X, 1, Y, 1, A, 1 )
2683 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2685 CALL ZHER2( 'u
', 0, ALPHA, X, 0, Y, 1, A, 1 )
2686 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2688 CALL ZHER2( 'u
', 0, ALPHA, X, 1, Y, 0, A, 1 )
2689 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2691 CALL ZHER2( 'u
', 2, ALPHA, X, 1, Y, 1, A, 1 )
2692 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2695 CALL ZHPR2( '/
', 0, ALPHA, X, 1, Y, 1, A )
2696 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2698 CALL ZHPR2( 'u
', -1, ALPHA, X, 1, Y, 1, A )
2699 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2701 CALL ZHPR2( 'u
', 0, ALPHA, X, 0, Y, 1, A )
2702 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2704 CALL ZHPR2( 'u
', 0, ALPHA, X, 1, Y, 0, A )
2705 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2708 WRITE( NOUT, FMT = 9999 )SRNAMT
2710 WRITE( NOUT, FMT = 9998 )SRNAMT
2714 9999 FORMAT( ' ', A6, ' passed
the tests of error-exits
' )
2715 9998 FORMAT( ' *******
', A6, ' failed
the tests of error-exits *****
',
2721 SUBROUTINE ZMAKE( TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL,
2722 $ KU, RESET, TRANSL )
2738 COMPLEX*16 ZERO, ONE
2739 PARAMETER ( ZERO = ( 0.0D0, 0.0D0 ),
2740 $ ONE = ( 1.0D0, 0.0D0 ) )
2742 PARAMETER ( ROGUE = ( -1.0D10, 1.0D10 ) )
2743 DOUBLE PRECISION RZERO
2744 PARAMETER ( RZERO = 0.0D0 )
2745 DOUBLE PRECISION RROGUE
2746 PARAMETER ( RROGUE = -1.0D10 )
2749 INTEGER KL, KU, LDA, M, N, NMAX
2751 CHARACTER*1 DIAG, UPLO
2754 COMPLEX*16 A( NMAX, * ), AA( * )
2756 INTEGER I, I1, I2, I3, IBEG, IEND, IOFF, J, JJ, KK
2757 LOGICAL GEN, LOWER, SYM, TRI, UNIT, UPPER
2762 INTRINSIC DBLE, DCMPLX, DCONJG, MAX, MIN
2764.EQ.
GEN = TYPE( 1: 1 )'g
'
2765.EQ.
SYM = TYPE( 1: 1 )'h
'
2766.EQ.
TRI = TYPE( 1: 1 )'t
'
2767.OR..AND..EQ.
UPPER = ( SYMTRI )UPLO'u
'
2768.OR..AND..EQ.
LOWER = ( SYMTRI )UPLO'l
'
2769.AND..EQ.
UNIT = TRIDIAG'u
'
2775.OR..AND..LE..OR..AND..GE.
IF( GEN( UPPERIJ )( LOWERIJ ) )
2777.LE..AND..LE..OR.
IF( ( IJJ - IKU )
2778.GE..AND..LE.
$ ( IJI - JKL ) )THEN
2779 A( I, J ) = ZBEG( RESET ) + TRANSL
2785 A( J, I ) = DCONJG( A( I, J ) )
2793 $ A( J, J ) = DCMPLX( DBLE( A( J, J ) ), RZERO )
2795 $ A( J, J ) = A( J, J ) + ONE
2802.EQ.
IF( TYPE'ge
' )THEN
2805 AA( I + ( J - 1 )*LDA ) = A( I, J )
2807 DO 40 I = M + 1, LDA
2808 AA( I + ( J - 1 )*LDA ) = ROGUE
2811.EQ.
ELSE IF( TYPE'gb
' )THEN
2813 DO 60 I1 = 1, KU + 1 - J
2814 AA( I1 + ( J - 1 )*LDA ) = ROGUE
2816 DO 70 I2 = I1, MIN( KL + KU + 1, KU + 1 + M - J )
2817 AA( I2 + ( J - 1 )*LDA ) = A( I2 + J - KU - 1, J )
2820 AA( I3 + ( J - 1 )*LDA ) = ROGUE
2823.EQ.
ELSE IF( TYPE'he.OR..EQ.
'TYPE'tr
' )THEN
2840 DO 100 I = 1, IBEG - 1
2841 AA( I + ( J - 1 )*LDA ) = ROGUE
2843 DO 110 I = IBEG, IEND
2844 AA( I + ( J - 1 )*LDA ) = A( I, J )
2846 DO 120 I = IEND + 1, LDA
2847 AA( I + ( J - 1 )*LDA ) = ROGUE
2850 JJ = J + ( J - 1 )*LDA
2851 AA( JJ ) = DCMPLX( DBLE( AA( JJ ) ), RROGUE )
2854.EQ.
ELSE IF( TYPE'hb.OR..EQ.
'TYPE'tb
' )THEN
2858 IBEG = MAX( 1, KL + 2 - J )
2871 IEND = MIN( KL + 1, 1 + M - J )
2873 DO 140 I = 1, IBEG - 1
2874 AA( I + ( J - 1 )*LDA ) = ROGUE
2876 DO 150 I = IBEG, IEND
2877 AA( I + ( J - 1 )*LDA ) = A( I + J - KK, J )
2879 DO 160 I = IEND + 1, LDA
2880 AA( I + ( J - 1 )*LDA ) = ROGUE
2883 JJ = KK + ( J - 1 )*LDA
2884 AA( JJ ) = DCMPLX( DBLE( AA( JJ ) ), RROGUE )
2887.EQ.
ELSE IF( TYPE'hp.OR..EQ.
'TYPE'tp
' )THEN
2897 DO 180 I = IBEG, IEND
2899 AA( IOFF ) = A( I, J )
2902 $ AA( IOFF ) = ROGUE
2904 $ AA( IOFF ) = DCMPLX( DBLE( AA( IOFF ) ), RROGUE )
2914 SUBROUTINE ZMVCH( TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y,
2915 $ INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV )
2927 PARAMETER ( ZERO = ( 0.0D0, 0.0D0 ) )
2928 DOUBLE PRECISION RZERO, RONE
2929 PARAMETER ( RZERO = 0.0D0, RONE = 1.0D0 )
2931 COMPLEX*16 ALPHA, BETA
2932 DOUBLE PRECISION EPS, ERR
2933 INTEGER INCX, INCY, M, N, NMAX, NOUT
2937 COMPLEX*16 A( NMAX, * ), X( * ), Y( * ), YT( * ), YY( * )
2938 DOUBLE PRECISION G( * )
2941 DOUBLE PRECISION ERRI
2942 INTEGER I, INCXL, INCYL, IY, J, JX, KX, KY, ML, NL
2945 INTRINSIC ABS, DBLE, DCONJG, DIMAG, MAX, SQRT
2947 DOUBLE PRECISION ABS1
2949 ABS1( C ) = ABS( DBLE( C ) ) + ABS( DIMAG( C ) )
2952.EQ.
CTRAN = TRANS'c
'
2953.OR.
IF( TRANCTRAN )THEN
2985 YT( IY ) = YT( IY ) + A( J, I )*X( JX )
2986 G( IY ) = G( IY ) + ABS1( A( J, I ) )*ABS1( X( JX ) )
2989 ELSE IF( CTRAN )THEN
2991 YT( IY ) = YT( IY ) + DCONJG( A( J, I ) )*X( JX )
2992 G( IY ) = G( IY ) + ABS1( A( J, I ) )*ABS1( X( JX ) )
2997 YT( IY ) = YT( IY ) + A( I, J )*X( JX )
2998 G( IY ) = G( IY ) + ABS1( A( I, J ) )*ABS1( X( JX ) )
3002 YT( IY ) = ALPHA*YT( IY ) + BETA*Y( IY )
3003 G( IY ) = ABS1( ALPHA )*G( IY ) + ABS1( BETA )*ABS1( Y( IY ) )
3011 ERRI = ABS( YT( I ) - YY( 1 + ( I - 1 )*ABS( INCY ) ) )/EPS
3012.NE.
IF( G( I )RZERO )
3013 $ ERRI = ERRI/G( I )
3014 ERR = MAX( ERR, ERRI )
3015.GE.
IF( ERR*SQRT( EPS )RONE )
3024 WRITE( NOUT, FMT = 9999 )
3027 WRITE( NOUT, FMT = 9998 )I, YT( I ),
3028 $ YY( 1 + ( I - 1 )*ABS( INCY ) )
3030 WRITE( NOUT, FMT = 9998 )I,
3031 $ YY( 1 + ( I - 1 )*ABS( INCY ) ), YT( I )
3038 9999 FORMAT( ' *******
fatal error - computed result is less than hal
',
3039 $ 'f accurate *******
', /' expected re
',
3040 $ 'sult computed result
' )
3041 9998 FORMAT( 1X, I7, 2( ' (
', G15.6, ',
', G15.6, ')
' ) )
3046 LOGICAL FUNCTION LZE( RI, RJ, LR )
3059 COMPLEX*16 RI( * ), RJ( * )
3064.NE.
IF( RI( I )RJ( I ) )
3076 LOGICAL FUNCTION LZERES( TYPE, UPLO, M, N, AA, AS, LDA )
3093 COMPLEX*16 AA( LDA, * ), AS( LDA, * )
3095 INTEGER I, IBEG, IEND, J
3099.EQ.
IF( TYPE'ge
' )THEN
3101 DO 10 I = M + 1, LDA
3102.NE.
IF( AA( I, J )AS( I, J ) )
3106.EQ.
ELSE IF( TYPE'he
' )THEN
3115 DO 30 I = 1, IBEG - 1
3116.NE.
IF( AA( I, J )AS( I, J ) )
3119 DO 40 I = IEND + 1, LDA
3120.NE.
IF( AA( I, J )AS( I, J ) )
3135 COMPLEX*16 FUNCTION ZBEG( RESET )
3149 INTEGER I, IC, J, MI, MJ
3151 SAVE I, IC, J, MI, MJ
3175 I = I - 1000*( I/1000 )
3176 J = J - 1000*( J/1000 )
3181 ZBEG = DCMPLX( ( I - 500 )/1001.0D0, ( J - 500 )/1001.0D0 )
3187 DOUBLE PRECISION FUNCTION DDIFF( X, Y )
3195 DOUBLE PRECISION X, Y
3203 SUBROUTINE CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
3219 WRITE( NOUT, FMT = 9999 )INFOT, SRNAMT
3225 9999 FORMAT( ' ***** illegal
VALUE of
PARAMETER number
', I2, ' not d
',
3226 $ 'etected by
', A6, ' *****
' )
3231 SUBROUTINE XERBLA( SRNAME, INFO )
3256 COMMON /INFOC/INFOT, NOUT, OK, LERR
3257 COMMON /SRNAMC/SRNAMT
3260.NE.
IF( INFOINFOT )THEN
3261.NE.
IF( INFOT0 )THEN
3262 WRITE( NOUT, FMT = 9999 )INFO, INFOT
3264 WRITE( NOUT, FMT = 9997 )INFO
3268.NE.
IF( SRNAMESRNAMT )THEN
3269 WRITE( NOUT, FMT = 9998 )SRNAME, SRNAMT
3274 9999 FORMAT( ' *******
xerbla was called with info =
', I6, ' instead
',
3275 $ ' of
', I2, ' *******
' )
3276 9998 FORMAT( ' *******
xerbla was called with srname =
', A6, ' inste
',
3277 $ 'ad of
', A6, ' *******
' )
3278 9997 FORMAT( ' *******
xerbla was called with info =
', I6,
end diagonal values have been computed in the(sparse) matrix id.SOL
subroutine zhpr(uplo, n, alpha, x, incx, ap)
ZHPR
subroutine ztbsv(uplo, trans, diag, n, k, a, lda, x, incx)
ZTBSV
subroutine ztrmv(uplo, trans, diag, n, a, lda, x, incx)
ZTRMV
subroutine zgbmv(trans, m, n, kl, ku, alpha, a, lda, x, incx, beta, y, incy)
ZGBMV
subroutine zher2(uplo, n, alpha, x, incx, y, incy, a, lda)
ZHER2
subroutine ztpsv(uplo, trans, diag, n, ap, x, incx)
ZTPSV
subroutine zgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
ZGEMV
subroutine zhemv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
ZHEMV
subroutine zhpr2(uplo, n, alpha, x, incx, y, incy, ap)
ZHPR2
subroutine zgeru(m, n, alpha, x, incx, y, incy, a, lda)
ZGERU
subroutine zgerc(m, n, alpha, x, incx, y, incy, a, lda)
ZGERC
subroutine zhpmv(uplo, n, alpha, ap, x, incx, beta, y, incy)
ZHPMV
subroutine ztpmv(uplo, trans, diag, n, ap, x, incx)
ZTPMV
subroutine ztrsv(uplo, trans, diag, n, a, lda, x, incx)
ZTRSV
subroutine ztbmv(uplo, trans, diag, n, k, a, lda, x, incx)
ZTBMV
subroutine zher(uplo, n, alpha, x, incx, a, lda)
ZHER
for(i8=*sizetab-1;i8 >=0;i8--)
character *2 function nl()
logical function lze(ri, rj, lr)
subroutine zchk2(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)
subroutine zchk1(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)
subroutine xerbla(srname, info)
subroutine zmvch(trans, m, n, alpha, a, nmax, x, incx, beta, y, incy, yt, g, yy, eps, err, fatal, nout, mv)
subroutine zchke(isnum, srnamt, nout)
subroutine zchk3(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)
double precision function ddiff(x, y)
subroutine zmake(type, uplo, diag, m, n, a, nmax, aa, lda, kl, ku, reset, transl)
subroutine zchk6(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)
subroutine zchk5(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)
subroutine zchk4(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)