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 eps, 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
153 INTRINSIC abs, max, min
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
198 IF( nidim.LT.1.OR.nidim.GT.nidmax )
THEN
199 WRITE( nout, fmt = 9997 )
'N', nidmax
202 READ( nin, fmt = * )( idim( i ), i = 1, nidim )
204 IF( idim( i ).LT.0.OR.idim( i ).GT.nmax )
THEN
205 WRITE( nout, fmt = 9996 )nmax
210 READ( nin, fmt = * )nkb
211 IF( nkb.LT.1.OR.nkb.GT.nkbmax )
THEN
212 WRITE( nout, fmt = 9997 )
'K', nkbmax
215 READ( nin, fmt = * )( kb( i ), i = 1, nkb )
217 IF( kb( i ).LT.0 )
THEN
218 WRITE( nout, fmt = 9995 )
223 READ( nin, fmt = * )ninc
224 IF( ninc.LT.1.OR.ninc.GT.ninmax )
THEN
225 WRITE( nout, fmt = 9997 )
'INCX AND INCY', ninmax
228 READ( nin, fmt = * )( inc( i ), i = 1, ninc )
230 IF( inc( i ).EQ.0.OR.abs( inc( i ) ).GT.incmax )
THEN
231 WRITE( nout, fmt = 9994 )incmax
236 READ( nin, fmt = * )nalf
237 IF( nalf.LT.1.OR.nalf.GT.nalmax )
THEN
238 WRITE( nout, fmt = 9997 )
'ALPHA', nalmax
241 READ( nin, fmt = * )( alf( i ), i = 1, nalf )
243 READ( nin, fmt = * )nbet
244 IF( nbet.LT.1.OR.nbet.GT.nbemax )
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 IF( .NOT.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 IF( snamet.EQ.snames( 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 IF( .NOT.same.OR.err.NE.rzero )
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 IF( .NOT.same.OR.err.NE.rzero )
THEN
318 WRITE( nout, fmt = 9985 )trans, same, err
324 DO 210 isnum = 1, nsubs
325 WRITE( nout, fmt = * )
326 IF( .NOT.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 200
IF( fatal.AND.sfatal )
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( NMAX )
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, INCXS, 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
486 INTRINSIC abs, max, min
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
836 COMMON /infoc/infot, noutc, ok, lerr
840 full = sname( 3: 3 ).EQ.
'E'
841 banded = sname( 3: 3 ).EQ.
'B'
842 packed = sname( 3: 3 ).EQ.
'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 isame( 1 ) = uplo.EQ.uplos
993 isame( 3 ) = als.EQ.alpha
994 isame( 4 ) = lze( as, aa, laa )
995 isame( 5 ) = ldas.EQ.lda
996 isame( 6 ) = lze( xs, xx, lx )
997 isame( 7 ) = incxs.EQ.incx
998 isame( 8 ) = bls.EQ.beta
1000 isame( 9 ) = lze( ys, yy, ly )
1002 isame( 9 ) = lzeres(
'GE',
' ', 1, n,
1003 $ ys, yy, abs( incy ) )
1005 isame( 10 ) = incys.EQ.incy
1006 ELSE IF( banded )
THEN
1007 isame( 3 ) = ks.EQ.k
1008 isame( 4 ) = als.EQ.alpha
1009 isame( 5 ) = lze( as, aa, laa )
1010 isame( 6 ) = ldas.EQ.lda
1011 isame( 7 ) = lze( xs, xx, lx )
1012 isame( 8 ) = incxs.EQ.incx
1013 isame( 9 ) = bls.EQ.beta
1015 isame( 10 ) = lze( ys, yy, ly )
1017 isame( 10 ) = lzeres(
'GE',
' ', 1, n,
1018 $ ys, yy, abs( incy ) )
1020 isame( 11 ) = incys.EQ.incy
1021 ELSE IF( packed )
THEN
1022 isame( 3 ) = als.EQ.alpha
1023 isame( 4 ) = lze( as, aa, laa )
1024 isame( 5 ) = lze( xs, xx, lx )
1025 isame( 6 ) = incxs.EQ.incx
1026 isame( 7 ) = bls.EQ.beta
1028 isame( 8 ) = lze( ys, yy, ly )
1030 isame( 8 ) = lzeres(
'GE',
' ', 1, n,
1031 $ ys, yy, abs( incy ) )
1033 isame( 9 ) = incys.EQ.incy
1041 same = same.AND.isame( i )
1042 IF( .NOT.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 IF( errmax.LT.thresh )
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
1180 INTEGER INFOT, NOUTC
1183 COMMON /infoc/infot, noutc, ok, lerr
1185 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/
1187 full = sname( 3: 3 ).EQ.
'R'
1188 banded = sname( 3: 3 ).EQ.
'B'
1189 packed = sname( 3: 3 ).EQ.
'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 IF( sname( 4: 5 ).EQ.
'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 ELSE IF( sname( 4: 5 ).EQ.
'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 isame( 1 ) = uplo.EQ.uplos
1354 isame( 2 ) = trans.EQ.transs
1355 isame( 3 ) = diag.EQ.diags
1356 isame( 4 ) = ns.EQ.n
1358 isame( 5 ) = lze( as, aa, laa )
1359 isame( 6 ) = ldas.EQ.lda
1361 isame( 7 ) = lze( xs, xx, lx )
1363 isame( 7 ) = lzeres(
'GE',
' ', 1, n, xs,
1366 isame( 8 ) = incxs.EQ.incx
1367 ELSE IF( banded )
THEN
1368 isame( 5 ) = ks.EQ.k
1369 isame( 6 ) = lze( as, aa, laa )
1370 isame( 7 ) = ldas.EQ.lda
1372 isame( 8 ) = lze( xs, xx, lx )
1374 isame( 8 ) = lzeres(
'GE',
' ', 1, n, xs,
1377 isame( 9 ) = incxs.EQ.incx
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 isame( 7 ) = incxs.EQ.incx
1394 same = same.AND.isame( i )
1395 IF( .NOT.isame( i ) )
1396 $
WRITE( nout, fmt = 9998 )i
1404 IF( sname( 4: 5 ).EQ.
'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 ELSE IF( sname( 4: 5 ).EQ.
'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 IF( errmax.LT.thresh )
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( NMAX*INCMAX ),
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
1747 WRITE( nout, fmt = 9994 )nc, sname, m, n, alpha, incx, incy, lda
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, 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 G( 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
1820 INTRINSIC abs, dble, dcmplx, dconjg, max
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,
2403 $ ZHEMV, ZHER, ZHER2, ZHPMV, ZHPR, ZHPR2, ZTBMV,
2404 $ ZTBSV, ZTPMV, ZTPSV, ZTRMV, ZTRSV
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 gen =
TYPE( 1: 1 ).EQ.
'G'
2765 SYM = type( 1: 1 ).EQ.
'H'
2766 tri =
TYPE( 1: 1 ).EQ.
'T'
2767 upper = ( sym.OR.tri ).AND.uplo.EQ.
'U'
2768 lower = ( sym.OR.tri ).AND.uplo.EQ.
'L'
2769 unit = tri.AND.diag.EQ.
'U'
2775 IF( gen.OR.( upper.AND.i.LE.j ).OR.( lower.AND.i.GE.j ) )
2777 IF( ( i.LE.j.AND.j - i.LE.ku ).OR.
2778 $ ( i.GE.j.AND.i - j.LE.kl ) )
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 IF( type.EQ.
'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 ELSE IF( type.EQ.
'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 ELSE IF( type.EQ.
'HE'.OR.type.EQ.
'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 ELSE IF( type.EQ.
'HB'.OR.type.EQ.
'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 ELSE IF( type.EQ.
'HP'.OR.type.EQ.
'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 ctran = trans.EQ.
'C'
2953 IF( tran.OR.ctran )
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 IF( g( i ).NE.rzero )
3013 $ erri = erri/g( i )
3014 err = max( err, erri )
3015 IF( err*sqrt( eps ).GE.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 IF( ri( i ).NE.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 IF( type.EQ.
'GE' )
THEN
3101 DO 10 i = m + 1, lda
3102 IF( aa( i, j ).NE.as( i, j ) )
3106 ELSE IF( type.EQ.
'HE' )
THEN
3115 DO 30 i = 1, ibeg - 1
3116 IF( aa( i, j ).NE.as( i, j ) )
3119 DO 40 i = iend + 1, lda
3120 IF( aa( i, j ).NE.as( i, j ) )
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 )
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,
' *****' )
3256 COMMON /INFOC/INFOT, NOUT, OK, LERR
3257 COMMON /SRNAMC/SRNAMT
3260 IF( info.NE.infot )
THEN
3261 IF( infot.NE.0 )
THEN
3262 WRITE( nout, fmt = 9999 )info, infot
3264 WRITE( nout, fmt = 9997 )info
3268 IF( srname.NE.srnamt )
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,
subroutine chkxer(SRNAMT, INFOT, NOUT, LERR, OK)
double precision function ddiff(X, Y)
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zhemv(UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZHEMV
subroutine ztbsv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
ZTBSV
subroutine ztbmv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
ZTBMV
subroutine zhpr(UPLO, N, ALPHA, X, INCX, AP)
ZHPR
subroutine zhpr2(UPLO, N, ALPHA, X, INCX, Y, INCY, AP)
ZHPR2
subroutine ztrmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
ZTRMV
subroutine zhbmv(UPLO, N, K, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZHBMV
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 ztpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
ZTPSV
subroutine ztrsv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
ZTRSV
subroutine zgbmv(TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZGBMV
subroutine zher(UPLO, N, ALPHA, X, INCX, A, LDA)
ZHER
subroutine zher2(UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA)
ZHER2
subroutine zhpmv(UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY)
ZHPMV
subroutine ztpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
ZTPMV
subroutine zgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZGEMV
subroutine zmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
complex *16 function zbeg(RESET)
logical function lzeres(TYPE, UPLO, M, N, AA, AS, LDA)
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 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)
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)
subroutine zmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
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)
logical function lze(RI, RJ, LR)
subroutine zchke(ISNUM, SRNAMT, NOUT)