117 parameter( nsubs = 17 )
119 parameter( zero = ( 0.0d0, 0.0d0 ),
120 $ one = ( 1.0d0, 0.0d0 ) )
121 DOUBLE PRECISION rzero
122 parameter( rzero = 0.0d0 )
124 parameter( nmax = 65, incmax = 2 )
125 INTEGER ninmax, nidmax, nkbmax, nalmax, nbemax
126 parameter( ninmax = 7, nidmax = 9, nkbmax = 7,
127 $ nalmax = 7, nbemax = 7 )
129 DOUBLE PRECISION eps, err, thresh
130 INTEGER i, isnum, j, n, nalf, nbet, nidim, ninc, nkb,
132 LOGICAL fatal, ltestt, rewi, same, sfatal, trace,
136 CHARACTER*32 snaps, summry
138 COMPLEX*16 a( nmax, nmax ), aa( nmax*nmax ),
139 $ alf( nalmax ), as( nmax*nmax ), bet( nbemax ),
140 $ x( nmax ), xs( nmax*incmax ),
141 $ xx( nmax*incmax ), y( nmax ),
142 $ ys( nmax*incmax ), yt( nmax ),
143 $ yy( nmax*incmax ), z( 2*nmax )
144 DOUBLE PRECISION g( nmax )
145 INTEGER idim( nidmax ), inc( ninmax ), kb( nkbmax )
146 LOGICAL ltest( nsubs )
147 CHARACTER*6 snames( nsubs )
149 DOUBLE PRECISION ddiff
156 INTRINSIC abs, max, min
162 COMMON /infoc/infot, noutc, ok, lerr
163 COMMON /srnamc/srnamt
165 DATA snames/
'ZGEMV ',
'ZGBMV ',
'ZHEMV ',
'ZHBMV ',
166 $
'ZHPMV ',
'ZTRMV ',
'ZTBMV ',
'ZTPMV ',
167 $
'ZTRSV ',
'ZTBSV ',
'ZTPSV ',
'ZGERC ',
168 $
'ZGERU ',
'ZHER ',
'ZHPR ',
'ZHER2 ',
174 READ( nin, fmt = * )summry
175 READ( nin, fmt = * )nout
176 OPEN( nout, file = summry, status =
'UNKNOWN' )
181 READ( nin, fmt = * )snaps
182 READ( nin, fmt = * )ntra
185 OPEN( ntra, file = snaps, status =
'UNKNOWN' )
188 READ( nin, fmt = * )rewi
189 rewi = rewi.AND.trace
191 READ( nin, fmt = * )sfatal
193 READ( nin, fmt = * )tsterr
195 READ( nin, fmt = * )thresh
200 READ( nin, fmt = * )nidim
201 IF( nidim.LT.1.OR.nidim.GT.nidmax )
THEN
202 WRITE( nout, fmt = 9997 )
'N', nidmax
205 READ( nin, fmt = * )( idim( i ), i = 1, nidim )
207 IF( idim( i ).LT.0.OR.idim( i ).GT.nmax )
THEN
208 WRITE( nout, fmt = 9996 )nmax
213 READ( nin, fmt = * )nkb
214 IF( nkb.LT.1.OR.nkb.GT.nkbmax )
THEN
215 WRITE( nout, fmt = 9997 )
'K', nkbmax
218 READ( nin, fmt = * )( kb( i ), i = 1, nkb )
220 IF( kb( i ).LT.0 )
THEN
221 WRITE( nout, fmt = 9995 )
226 READ( nin, fmt = * )ninc
227 IF( ninc.LT.1.OR.ninc.GT.ninmax )
THEN
228 WRITE( nout, fmt = 9997 )
'INCX AND INCY', ninmax
231 READ( nin, fmt = * )( inc( i ), i = 1, ninc )
233 IF( inc( i ).EQ.0.OR.abs( inc( i ) ).GT.incmax )
THEN
234 WRITE( nout, fmt = 9994 )incmax
239 READ( nin, fmt = * )nalf
240 IF( nalf.LT.1.OR.nalf.GT.nalmax )
THEN
241 WRITE( nout, fmt = 9997 )
'ALPHA', nalmax
244 READ( nin, fmt = * )( alf( i ), i = 1, nalf )
246 READ( nin, fmt = * )nbet
247 IF( nbet.LT.1.OR.nbet.GT.nbemax )
THEN
248 WRITE( nout, fmt = 9997 )
'BETA', nbemax
251 READ( nin, fmt = * )( bet( i ), i = 1, nbet )
255 WRITE( nout, fmt = 9993 )
256 WRITE( nout, fmt = 9992 )( idim( i ), i = 1, nidim )
257 WRITE( nout, fmt = 9991 )( kb( i ), i = 1, nkb )
258 WRITE( nout, fmt = 9990 )( inc( i ), i = 1, ninc )
259 WRITE( nout, fmt = 9989 )( alf( i ), i = 1, nalf )
260 WRITE( nout, fmt = 9988 )( bet( i ), i = 1, nbet )
261 IF( .NOT.tsterr )
THEN
262 WRITE( nout, fmt = * )
263 WRITE( nout, fmt = 9980 )
265 WRITE( nout, fmt = * )
266 WRITE( nout, fmt = 9999 )thresh
267 WRITE( nout, fmt = * )
275 50
READ( nin, fmt = 9984,
END = 80 )SNAMET, ltestt
277 IF( snamet.EQ.snames( i ) )
280 WRITE( nout, fmt = 9986 )snamet
282 70 ltest( i ) = ltestt
291 WRITE( nout, fmt = 9998 )eps
298 a( i, j ) = max( i - j + 1, 0 )
304 yy( j ) = j*( ( j + 1 )*j )/2 - ( ( j + 1 )*j*( j - 1 ) )/3
309 CALL zmvch( trans, n, n, one, a, nmax, x, 1, zero, y, 1, yt, g,
310 $ yy, eps, err, fatal, nout, .true. )
311 same =
lze( yy, yt, n )
312 IF( .NOT.same.OR.err.NE.rzero )
THEN
313 WRITE( nout, fmt = 9985 )trans, same, err
317 CALL zmvch( trans, n, n, one, a, nmax, x, -1, zero, y, -1, yt, g,
318 $ yy, eps, err, fatal, nout, .true. )
319 same =
lze( yy, yt, n )
320 IF( .NOT.same.OR.err.NE.rzero )
THEN
321 WRITE( nout, fmt = 9985 )trans, same, err
327 DO 210 isnum = 1, nsubs
328 WRITE( nout, fmt = * )
329 IF( .NOT.ltest( isnum ) )
THEN
331 WRITE( nout, fmt = 9983 )snames( isnum )
333 srnamt = snames( isnum )
336 CALL zchke( isnum, snames( isnum ), nout )
337 WRITE( nout, fmt = * )
343 GO TO ( 140, 140, 150, 150, 150, 160, 160,
344 $ 160, 160, 160, 160, 170, 170, 180,
345 $ 180, 190, 190 )isnum
347 140
CALL zchk1( snames( isnum ), eps, thresh, nout, ntra, trace,
348 $ rewi, fatal, nidim, idim, nkb, kb, nalf, alf,
349 $ nbet, bet, ninc, inc, nmax, incmax, a, aa, as,
350 $ x, xx, xs, y, yy, ys, yt, g )
353 150
CALL zchk2( snames( isnum ), eps, thresh, nout, ntra, trace,
354 $ rewi, fatal, nidim, idim, nkb, kb, nalf, alf,
355 $ nbet, bet, ninc, inc, nmax, incmax, a, aa, as,
356 $ x, xx, xs, y, yy, ys, yt, g )
360 160
CALL zchk3( snames( isnum ), eps, thresh, nout, ntra, trace,
361 $ rewi, fatal, nidim, idim, nkb, kb, ninc, inc,
362 $ nmax, incmax, a, aa, as, y, yy, ys, yt, g, z )
365 170
CALL zchk4( snames( isnum ), eps, thresh, nout, ntra, trace,
366 $ rewi, fatal, nidim, idim, nalf, alf, ninc, inc,
367 $ nmax, incmax, a, aa, as, x, xx, xs, y, yy, ys,
371 180
CALL zchk5( snames( isnum ), eps, thresh, nout, ntra, trace,
372 $ rewi, fatal, nidim, idim, nalf, alf, ninc, inc,
373 $ nmax, incmax, a, aa, as, x, xx, xs, y, yy, ys,
377 190
CALL zchk6( snames( isnum ), eps, thresh, nout, ntra, trace,
378 $ rewi, fatal, nidim, idim, nalf, alf, ninc, inc,
379 $ nmax, incmax, a, aa, as, x, xx, xs, y, yy, ys,
382 200
IF( fatal.AND.sfatal )
386 WRITE( nout, fmt = 9982 )
390 WRITE( nout, fmt = 9981 )
394 WRITE( nout, fmt = 9987 )
402 9999
FORMAT(
' ROUTINES PASS COMPUTATIONAL TESTS IF TEST RATIO IS LES',
404 9998
FORMAT(
' RELATIVE MACHINE PRECISION IS TAKEN TO BE', 1p, d9.1 )
405 9997
FORMAT(
' NUMBER OF VALUES OF ', a,
' IS LESS THAN 1 OR GREATER ',
407 9996
FORMAT(
' VALUE OF N IS LESS THAN 0 OR GREATER THAN ', i2 )
408 9995
FORMAT(
' VALUE OF K IS LESS THAN 0' )
409 9994
FORMAT(
' ABSOLUTE VALUE OF INCX OR INCY IS 0 OR GREATER THAN ',
411 9993
FORMAT(
' TESTS OF THE COMPLEX*16 LEVEL 2 BLAS', //
' THE F',
412 $
'OLLOWING PARAMETER VALUES WILL BE USED:' )
413 9992
FORMAT(
' FOR N ', 9i6 )
414 9991
FORMAT(
' FOR K ', 7i6 )
415 9990
FORMAT(
' FOR INCX AND INCY ', 7i6 )
416 9989
FORMAT(
' FOR ALPHA ',
417 $ 7(
'(', f4.1,
',', f4.1,
') ', : ) )
418 9988
FORMAT(
' FOR BETA ',
419 $ 7(
'(', f4.1,
',', f4.1,
') ', : ) )
420 9987
FORMAT(
' AMEND DATA FILE OR INCREASE ARRAY SIZES IN PROGRAM',
421 $ /
' ******* TESTS ABANDONED *******' )
422 9986
FORMAT(
' SUBPROGRAM NAME ', a6,
' NOT RECOGNIZED', /
' ******* T',
423 $
'ESTS ABANDONED *******' )
424 9985
FORMAT(
' ERROR IN ZMVCH - IN-LINE DOT PRODUCTS ARE BEING EVALU',
425 $
'ATED WRONGLY.', /
' ZMVCH WAS CALLED WITH TRANS = ', a1,
426 $
' AND RETURNED SAME = ', l1,
' AND ERR = ', f12.3,
'.', /
427 $
' THIS MAY BE DUE TO FAULTS IN THE ARITHMETIC OR THE COMPILER.'
428 $ , /
' ******* TESTS ABANDONED *******' )
429 9984
FORMAT( a6, l2 )
430 9983
FORMAT( 1x, a6,
' WAS NOT TESTED' )
431 9982
FORMAT( /
' END OF TESTS' )
432 9981
FORMAT( /
' ******* FATAL ERROR - TESTS ABANDONED *******' )
433 9980
FORMAT(
' ERROR-EXITS WILL NOT BE TESTED' )
438 SUBROUTINE zchk1( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
439 $ FATAL, NIDIM, IDIM, NKB, KB, NALF, ALF, NBET,
440 $ BET, NINC, INC, NMAX, INCMAX, A, AA, AS, X, XX,
441 $ XS, Y, YY, YS, YT, G )
452 COMPLEX*16 ZERO, HALF
453 PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
454 $ half = ( 0.5d0, 0.0d0 ) )
455 DOUBLE PRECISION RZERO
456 parameter( rzero = 0.0d0 )
458 DOUBLE PRECISION EPS, THRESH
459 INTEGER INCMAX, NALF, NBET, NIDIM, NINC, NKB, NMAX,
461 LOGICAL FATAL, REWI, TRACE
464 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
465 $ as( nmax*nmax ), bet( nbet ), x( nmax ),
466 $ xs( nmax*incmax ), xx( nmax*incmax ),
467 $ y( nmax ), ys( nmax*incmax ), yt( nmax ),
469 DOUBLE PRECISION G( NMAX )
470 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
472 COMPLEX*16 ALPHA, ALS, BETA, BLS, TRANSL
473 DOUBLE PRECISION ERR, ERRMAX
474 INTEGER I, IA, IB, IC, IKU, IM, IN, INCX, INCXS, INCY,
475 $ incys, ix, iy, kl, kls, ku, kus, laa, lda,
476 $ ldas, lx, ly, m, ml, ms, n, nargs, nc, nd, nk,
478 LOGICAL BANDED, FULL, NULL, RESET, SAME, TRAN
479 CHARACTER*1 TRANS, TRANSS
489 INTRINSIC abs, max, min
494 COMMON /infoc/infot, noutc, ok, lerr
498 full = sname( 3: 3 ).EQ.
'E'
499 banded = sname( 3: 3 ).EQ.
'B'
503 ELSE IF( banded )
THEN
517 $ m = max( n - nd, 0 )
519 $ m = min( n + nd, nmax )
529 kl = max( ku - 1, 0 )
546 null = n.LE.0.OR.m.LE.0
551 CALL zmake( sname( 2: 3 ),
' ',
' ', m, n, a, nmax, aa,
552 $ lda, kl, ku, reset, transl )
555 trans = ich( ic: ic )
556 tran = trans.EQ.
'T'.OR.trans.EQ.
'C'
573 CALL zmake(
'GE',
' ',
' ', 1, nl, x, 1, xx,
574 $ abs( incx ), 0, nl - 1, reset, transl )
577 xx( 1 + abs( incx )*( nl/2 - 1 ) ) = zero
593 CALL zmake(
'GE',
' ',
' ', 1, ml, y, 1,
594 $ yy, abs( incy ), 0, ml - 1,
626 $
WRITE( ntra, fmt = 9994 )nc, sname,
627 $ trans, m, n, alpha, lda, incx, beta,
631 CALL zgemv( trans, m, n, alpha, aa,
632 $ lda, xx, incx, beta, yy,
634 ELSE IF( banded )
THEN
636 $
WRITE( ntra, fmt = 9995 )nc, sname,
637 $ trans, m, n, kl, ku, alpha, lda,
641 CALL zgbmv( trans, m, n, kl, ku, alpha,
642 $ aa, lda, xx, incx, beta,
649 WRITE( nout, fmt = 9993 )
656 isame( 1 ) = trans.EQ.transs
660 isame( 4 ) = als.EQ.alpha
661 isame( 5 ) = lze( as, aa, laa )
662 isame( 6 ) = ldas.EQ.lda
663 isame( 7 ) = lze( xs, xx, lx )
664 isame( 8 ) = incxs.EQ.incx
665 isame( 9 ) = bls.EQ.beta
667 isame( 10 ) = lze( ys, yy, ly )
669 isame( 10 ) = lzeres(
'GE',
' ', 1,
673 isame( 11 ) = incys.EQ.incy
674 ELSE IF( banded )
THEN
675 isame( 4 ) = kls.EQ.kl
676 isame( 5 ) = kus.EQ.ku
677 isame( 6 ) = als.EQ.alpha
678 isame( 7 ) = lze( as, aa, laa )
679 isame( 8 ) = ldas.EQ.lda
680 isame( 9 ) = lze( xs, xx, lx )
681 isame( 10 ) = incxs.EQ.incx
682 isame( 11 ) = bls.EQ.beta
684 isame( 12 ) = lze( ys, yy, ly )
686 isame( 12 ) = lzeres(
'GE',
' ', 1,
690 isame( 13 ) = incys.EQ.incy
698 same = same.AND.isame( i )
699 IF( .NOT.isame( i ) )
700 $
WRITE( nout, fmt = 9998 )i
711 CALL zmvch( trans, m, n, alpha, a,
712 $ nmax, x, incx, beta, y,
713 $ incy, yt, g, yy, eps, err,
714 $ fatal, nout, .true. )
715 errmax = max( errmax, err )
744 IF( errmax.LT.thresh )
THEN
745 WRITE( nout, fmt = 9999 )sname, nc
747 WRITE( nout, fmt = 9997 )sname, nc, errmax
752 WRITE( nout, fmt = 9996 )sname
754 WRITE( nout, fmt = 9994 )nc, sname, trans, m, n, alpha, lda,
756 ELSE IF( banded )
THEN
757 WRITE( nout, fmt = 9995 )nc, sname, trans, m, n, kl, ku,
758 $ alpha, lda, incx, beta, incy
764 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
766 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
767 $
'ANGED INCORRECTLY *******' )
768 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
769 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
770 $
' - SUSPECT *******' )
771 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
772 9995
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 4( i3,
',' ),
'(',
773 $ f4.1,
',', f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',',
774 $ f4.1,
'), Y,', i2,
') .' )
775 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 2( i3,
',' ),
'(',
776 $ f4.1,
',', f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',',
777 $ f4.1,
'), Y,', i2,
') .' )
778 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
784 SUBROUTINE zchk2( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
785 $ FATAL, NIDIM, IDIM, NKB, KB, NALF, ALF, NBET,
786 $ BET, NINC, INC, NMAX, INCMAX, A, AA, AS, X, XX,
787 $ XS, Y, YY, YS, YT, G )
798 COMPLEX*16 ZERO, HALF
799 PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
800 $ half = ( 0.5d0, 0.0d0 ) )
801 DOUBLE PRECISION RZERO
802 PARAMETER ( RZERO = 0.0d0 )
804 DOUBLE PRECISION EPS, THRESH
805 INTEGER INCMAX, NALF, NBET, NIDIM, NINC, NKB, NMAX,
807 LOGICAL FATAL, REWI, TRACE
810 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
811 $ as( nmax*nmax ), bet( nbet ), x( nmax ),
812 $ xs( nmax*incmax ), xx( nmax*incmax ),
813 $ y( nmax ), ys( nmax*incmax ), yt( nmax ),
815 DOUBLE PRECISION G( NMAX )
816 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
818 COMPLEX*16 ALPHA, ALS, BETA, BLS, TRANSL
819 DOUBLE PRECISION ERR, ERRMAX
820 INTEGER I, IA, IB, IC, IK, IN, INCX, INCXS, INCY,
821 $ incys, ix, iy, k, ks, laa, lda, ldas, lx, ly,
822 $ n, nargs, nc, nk, ns
823 LOGICAL BANDED, FULL, NULL, PACKED, RESET, SAME
824 CHARACTER*1 UPLO, UPLOS
839 COMMON /infoc/infot, noutc, ok, lerr
843 full = sname( 3: 3 ).EQ.
'E'
844 banded = sname( 3: 3 ).EQ.
'B'
845 packed = sname( 3: 3 ).EQ.
'P'
849 ELSE IF( banded )
THEN
851 ELSE IF( packed )
THEN
885 laa = ( n*( n + 1 ) )/2
897 CALL zmake( sname( 2: 3 ), uplo,
' ', n, n, a, nmax, aa,
898 $ lda, k, k, reset, transl )
907 CALL zmake(
'GE',
' ',
' ', 1, n, x, 1, xx,
908 $ abs( incx ), 0, n - 1, reset, transl )
911 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
927 CALL zmake(
'GE',
' ',
' ', 1, n, y, 1, yy,
928 $ abs( incy ), 0, n - 1, reset,
958 $
WRITE( ntra, fmt = 9993 )nc, sname,
959 $ uplo, n, alpha, lda, incx, beta, incy
962 CALL zhemv( uplo, n, alpha, aa, lda, xx,
963 $ incx, beta, yy, incy )
964 ELSE IF( banded )
THEN
966 $
WRITE( ntra, fmt = 9994 )nc, sname,
967 $ uplo, n, k, alpha, lda, incx, beta,
971 CALL zhbmv( uplo, n, k, alpha, aa, lda,
972 $ xx, incx, beta, yy, incy )
973 ELSE IF( packed )
THEN
975 $
WRITE( ntra, fmt = 9995 )nc, sname,
976 $ uplo, n, alpha, incx, beta, incy
979 CALL zhpmv( uplo, n, alpha, aa, xx, incx,
986 WRITE( nout, fmt = 9992 )
993 isame( 1 ) = uplo.EQ.uplos
996 isame( 3 ) = als.EQ.alpha
997 isame( 4 ) = lze( as, aa, laa )
998 isame( 5 ) = ldas.EQ.lda
999 isame( 6 ) = lze( xs, xx, lx )
1000 isame( 7 ) = incxs.EQ.incx
1001 isame( 8 ) = bls.EQ.beta
1003 isame( 9 ) = lze( ys, yy, ly )
1005 isame( 9 ) = lzeres(
'GE',
' ', 1, n,
1006 $ ys, yy, abs( incy ) )
1008 isame( 10 ) = incys.EQ.incy
1009 ELSE IF( banded )
THEN
1010 isame( 3 ) = ks.EQ.k
1011 isame( 4 ) = als.EQ.alpha
1012 isame( 5 ) = lze( as, aa, laa )
1013 isame( 6 ) = ldas.EQ.lda
1014 isame( 7 ) = lze( xs, xx, lx )
1015 isame( 8 ) = incxs.EQ.incx
1016 isame( 9 ) = bls.EQ.beta
1018 isame( 10 ) = lze( ys, yy, ly )
1020 isame( 10 ) = lzeres(
'GE',
' ', 1, n,
1021 $ ys, yy, abs( incy ) )
1023 isame( 11 ) = incys.EQ.incy
1024 ELSE IF( packed )
THEN
1025 isame( 3 ) = als.EQ.alpha
1026 isame( 4 ) = lze( as, aa, laa )
1027 isame( 5 ) = lze( xs, xx, lx )
1028 isame( 6 ) = incxs.EQ.incx
1029 isame( 7 ) = bls.EQ.beta
1031 isame( 8 ) = lze( ys, yy, ly )
1033 isame( 8 ) = lzeres(
'GE',
' ', 1, n,
1034 $ ys, yy, abs( incy ) )
1036 isame( 9 ) = incys.EQ.incy
1044 same = same.AND.isame( i )
1045 IF( .NOT.isame( i ) )
1046 $
WRITE( nout, fmt = 9998 )i
1057 CALL zmvch(
'N', n, n, alpha, a, nmax, x,
1058 $ incx, beta, y, incy, yt, g,
1059 $ yy, eps, err, fatal, nout,
1061 errmax = max( errmax, err )
1087 IF( errmax.LT.thresh )
THEN
1088 WRITE( nout, fmt = 9999 )sname, nc
1090 WRITE( nout, fmt = 9997 )sname, nc, errmax
1095 WRITE( nout, fmt = 9996 )sname
1097 WRITE( nout, fmt = 9993 )nc, sname, uplo, n, alpha, lda, incx,
1099 ELSE IF( banded )
THEN
1100 WRITE( nout, fmt = 9994 )nc, sname, uplo, n, k, alpha, lda,
1102 ELSE IF( packed )
THEN
1103 WRITE( nout, fmt = 9995 )nc, sname, uplo, n, alpha, incx,
1110 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1112 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1113 $
'ANGED INCORRECTLY *******' )
1114 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1115 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1116 $
' - SUSPECT *******' )
1117 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1118 9995
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',(', f4.1,
',',
1119 $ f4.1,
'), AP, X,', i2,
',(', f4.1,
',', f4.1,
'), Y,', i2,
1121 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 2( i3,
',' ),
'(',
1122 $ f4.1,
',', f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',',
1123 $ f4.1,
'), Y,', i2,
') .' )
1124 9993
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',(', f4.1,
',',
1125 $ f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',', f4.1,
'), ',
1127 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
1133 SUBROUTINE zchk3( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1134 $ FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, NMAX,
1135 $ INCMAX, A, AA, AS, X, XX, XS, XT, G, Z )
1146 COMPLEX*16 ZERO, HALF, ONE
1147 PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
1148 $ half = ( 0.5d0, 0.0d0 ),
1149 $ one = ( 1.0d0, 0.0d0 ) )
1150 DOUBLE PRECISION RZERO
1151 PARAMETER ( RZERO = 0.0d0 )
1153 DOUBLE PRECISION EPS, THRESH
1154 INTEGER INCMAX, NIDIM, NINC, NKB, NMAX, NOUT, NTRA
1155 LOGICAL FATAL, REWI, TRACE
1158 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ),
1159 $ as( nmax*nmax ), x( nmax ), xs( nmax*incmax ),
1160 $ xt( nmax ), xx( nmax*incmax ), z( nmax )
1161 DOUBLE PRECISION G( NMAX )
1162 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
1165 DOUBLE PRECISION ERR, ERRMAX
1166 INTEGER I, ICD, ICT, ICU, IK, IN, INCX, INCXS, IX, K,
1167 $ KS, LAA, LDA, LDAS, LX, N, NARGS, NC, NK, NS
1168 LOGICAL BANDED, FULL, NULL, PACKED, RESET, SAME
1169 CHARACTER*1 DIAG, DIAGS, TRANS, TRANSS, UPLO, UPLOS
1170 CHARACTER*2 ICHD, ICHU
1176 EXTERNAL lze, lzeres
1183 INTEGER INFOT, NOUTC
1186 COMMON /infoc/infot, noutc, ok, lerr
1188 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/
1190 full = sname( 3: 3 ).EQ.
'R'
1191 banded = sname( 3: 3 ).EQ.
'B'
1192 packed = sname( 3: 3 ).EQ.
'P'
1196 ELSE IF( banded )
THEN
1198 ELSE IF( packed )
THEN
1210 DO 110 in = 1, nidim
1236 laa = ( n*( n + 1 ) )/2
1243 uplo = ichu( icu: icu )
1246 trans = icht( ict: ict )
1249 diag = ichd( icd: icd )
1254 CALL zmake( sname( 2: 3 ), uplo, diag, n, n, a,
1255 $ nmax, aa, lda, k, k, reset, transl )
1264 CALL zmake(
'GE',
' ',
' ', 1, n, x, 1, xx,
1265 $ abs( incx ), 0, n - 1, reset,
1269 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
1292 IF( sname( 4: 5 ).EQ.
'MV' )
THEN
1295 $
WRITE( ntra, fmt = 9993 )nc, sname,
1296 $ uplo, trans, diag, n, lda, incx
1299 CALL ztrmv( uplo, trans, diag, n, aa, lda,
1301 ELSE IF( banded )
THEN
1303 $
WRITE( ntra, fmt = 9994 )nc, sname,
1304 $ uplo, trans, diag, n, k, lda, incx
1307 CALL ztbmv( uplo, trans, diag, n, k, aa,
1309 ELSE IF( packed )
THEN
1311 $
WRITE( ntra, fmt = 9995 )nc, sname,
1312 $ uplo, trans, diag, n, incx
1315 CALL ztpmv( uplo, trans, diag, n, aa, xx,
1318 ELSE IF( sname( 4: 5 ).EQ.
'SV' )
THEN
1321 $
WRITE( ntra, fmt = 9993 )nc, sname,
1322 $ uplo, trans, diag, n, lda, incx
1325 CALL ztrsv( uplo, trans, diag, n, aa, lda,
1327 ELSE IF( banded )
THEN
1329 $
WRITE( ntra, fmt = 9994 )nc, sname,
1330 $ uplo, trans, diag, n, k, lda, incx
1333 CALL ztbsv( uplo, trans, diag, n, k, aa,
1335 ELSE IF( packed )
THEN
1337 $
WRITE( ntra, fmt = 9995 )nc, sname,
1338 $ uplo, trans, diag, n, incx
1341 CALL ztpsv( uplo, trans, diag, n, aa, xx,
1349 WRITE( nout, fmt = 9992 )
1356 isame( 1 ) = uplo.EQ.uplos
1357 isame( 2 ) = trans.EQ.transs
1358 isame( 3 ) = diag.EQ.diags
1359 isame( 4 ) = ns.EQ.n
1361 isame( 5 ) = lze( as, aa, laa )
1362 isame( 6 ) = ldas.EQ.lda
1364 isame( 7 ) = lze( xs, xx, lx )
1366 isame( 7 ) = lzeres(
'GE',
' ', 1, n, xs,
1369 isame( 8 ) = incxs.EQ.incx
1370 ELSE IF( banded )
THEN
1371 isame( 5 ) = ks.EQ.k
1372 isame( 6 ) = lze( as, aa, laa )
1373 isame( 7 ) = ldas.EQ.lda
1375 isame( 8 ) = lze( xs, xx, lx )
1377 isame( 8 ) = lzeres(
'GE',
' ', 1, n, xs,
1380 isame( 9 ) = incxs.EQ.incx
1381 ELSE IF( packed )
THEN
1382 isame( 5 ) = lze( as, aa, laa )
1384 isame( 6 ) = lze( xs, xx, lx )
1386 isame( 6 ) = lzeres(
'GE',
' ', 1, n, xs,
1389 isame( 7 ) = incxs.EQ.incx
1397 same = same.AND.isame( i )
1398 IF( .NOT.isame( i ) )
1399 $
WRITE( nout, fmt = 9998 )i
1407 IF( sname( 4: 5 ).EQ.
'MV' )
THEN
1411 CALL zmvch( trans, n, n, one, a, nmax, x,
1412 $ incx, zero, z, incx, xt, g,
1413 $ xx, eps, err, fatal, nout,
1415 ELSE IF( sname( 4: 5 ).EQ.
'SV' )
THEN
1420 z( i ) = xx( 1 + ( i - 1 )*
1422 xx( 1 + ( i - 1 )*abs( incx ) )
1425 CALL zmvch( trans, n, n, one, a, nmax, z,
1426 $ incx, zero, x, incx, xt, g,
1427 $ xx, eps, err, fatal, nout,
1430 errmax = max( errmax, err )
1453 IF( errmax.LT.thresh )
THEN
1454 WRITE( nout, fmt = 9999 )sname, nc
1456 WRITE( nout, fmt = 9997 )sname, nc, errmax
1461 WRITE( nout, fmt = 9996 )sname
1463 WRITE( nout, fmt = 9993 )nc, sname, uplo, trans, diag, n, lda,
1465 ELSE IF( banded )
THEN
1466 WRITE( nout, fmt = 9994 )nc, sname, uplo, trans, diag, n, k,
1468 ELSE IF( packed )
THEN
1469 WRITE( nout, fmt = 9995 )nc, sname, uplo, trans, diag, n, incx
1475 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1477 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1478 $
'ANGED INCORRECTLY *******' )
1479 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1480 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1481 $
' - SUSPECT *******' )
1482 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1483 9995
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', AP, ',
1485 9994
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), 2( i3,
',' ),
1486 $
' A,', i3,
', X,', i2,
') .' )
1487 9993
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', A,',
1488 $ i3,
', X,', i2,
') .' )
1489 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
1495 SUBROUTINE zchk4( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1496 $ FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, NMAX,
1497 $ INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, YT, G,
1509 COMPLEX*16 ZERO, HALF, ONE
1510 PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
1511 $ half = ( 0.5d0, 0.0d0 ),
1512 $ one = ( 1.0d0, 0.0d0 ) )
1513 DOUBLE PRECISION RZERO
1514 PARAMETER ( RZERO = 0.0d0 )
1516 DOUBLE PRECISION EPS, THRESH
1517 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
1518 LOGICAL FATAL, REWI, TRACE
1521 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1522 $ AS( NMAX*NMAX ), X( NMAX ), XS( NMAX*INCMAX ),
1523 $ XX( NMAX*INCMAX ), Y( NMAX ),
1524 $ ys( nmax*incmax ), yt( nmax ),
1525 $ yy( nmax*incmax ), z( nmax )
1526 DOUBLE PRECISION G( NMAX )
1527 INTEGER IDIM( NIDIM ), INC( NINC )
1529 COMPLEX*16 ALPHA, ALS, TRANSL
1530 DOUBLE PRECISION ERR, ERRMAX
1531 INTEGER I, IA, IM, IN, INCX, INCXS, INCY, INCYS, IX,
1532 $ iy, j, laa, lda, ldas, lx, ly, m, ms, n, nargs,
1534 LOGICAL CONJ, NULL, RESET, SAME
1540 EXTERNAL lze, lzeres
1544 INTRINSIC abs, dconjg, max, min
1546 INTEGER INFOT, NOUTC
1549 COMMON /infoc/infot, noutc, ok, lerr
1551 conj = sname( 5: 5 ).EQ.
'C'
1559 DO 120 in = 1, nidim
1565 $ m = max( n - nd, 0 )
1567 $ m = min( n + nd, nmax )
1577 null = n.LE.0.OR.m.LE.0
1586 CALL zmake(
'GE',
' ',
' ', 1, m, x, 1, xx, abs( incx ),
1587 $ 0, m - 1, reset, transl )
1590 xx( 1 + abs( incx )*( m/2 - 1 ) ) = zero
1600 CALL zmake(
'GE',
' ',
' ', 1, n, y, 1, yy,
1601 $ abs( incy ), 0, n - 1, reset, transl )
1604 yy( 1 + abs( incy )*( n/2 - 1 ) ) = zero
1613 CALL zmake( sname( 2: 3 ),
' ',
' ', m, n, a, nmax,
1614 $ aa, lda, m - 1, n - 1, reset, transl )
1639 $
WRITE( ntra, fmt = 9994 )nc, sname, m, n,
1640 $ alpha, incx, incy, lda
1644 CALL zgerc( m, n, alpha, xx, incx, yy, incy, aa,
1649 CALL zgeru( m, n, alpha, xx, incx, yy, incy, aa,
1656 WRITE( nout, fmt = 9993 )
1663 isame( 1 ) = ms.EQ.m
1664 isame( 2 ) = ns.EQ.n
1665 isame( 3 ) = als.EQ.alpha
1666 isame( 4 ) = lze( xs, xx, lx )
1667 isame( 5 ) = incxs.EQ.incx
1668 isame( 6 ) = lze( ys, yy, ly )
1669 isame( 7 ) = incys.EQ.incy
1671 isame( 8 ) = lze( as, aa, laa )
1673 isame( 8 ) = lzeres(
'GE',
' ', m, n, as, aa,
1676 isame( 9 ) = ldas.EQ.lda
1682 same = same.AND.isame( i )
1683 IF( .NOT.isame( i ) )
1684 $
WRITE( nout, fmt = 9998 )i
1701 z( i ) = x( m - i + 1 )
1708 w( 1 ) = y( n - j + 1 )
1711 $ w( 1 ) = dconjg( w( 1 ) )
1712 CALL zmvch(
'N', m, 1, alpha, z, nmax, w, 1,
1713 $ one, a( 1, j ), 1, yt, g,
1714 $ aa( 1 + ( j - 1 )*lda ), eps,
1715 $ err, fatal, nout, .true. )
1716 errmax = max( errmax, err )
1738 IF( errmax.LT.thresh )
THEN
1739 WRITE( nout, fmt = 9999 )sname, nc
1741 WRITE( nout, fmt = 9997 )sname, nc, errmax
1746 WRITE( nout, fmt = 9995 )j
1749 WRITE( nout, fmt = 9996 )sname
1750 WRITE( nout, fmt = 9994 )nc, sname, m, n, alpha, incx, incy, lda
1755 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1757 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1758 $
'ANGED INCORRECTLY *******' )
1759 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1760 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1761 $
' - SUSPECT *******' )
1762 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1763 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
1764 9994
FORMAT( 1x, i6,
': ', a6,
'(', 2( i3,
',' ),
'(', f4.1,
',', f4.1,
1765 $
'), X,', i2,
', Y,', i2,
', A,', i3,
') ',
1767 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
1773 SUBROUTINE zchk5( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1774 $ FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, NMAX,
1775 $ INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, YT, G,
1787 COMPLEX*16 ZERO, HALF, ONE
1788 PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
1789 $ half = ( 0.5d0, 0.0d0 ),
1790 $ one = ( 1.0d0, 0.0d0 ) )
1791 DOUBLE PRECISION RZERO
1792 PARAMETER ( RZERO = 0.0d0 )
1794 DOUBLE PRECISION EPS, THRESH
1795 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
1796 LOGICAL FATAL, REWI, TRACE
1799 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1800 $ AS( NMAX*NMAX ), X( NMAX ), XS( NMAX*INCMAX ),
1801 $ xx( nmax*incmax ), y( nmax ),
1802 $ ys( nmax*incmax ), yt( nmax ),
1803 $ yy( nmax*incmax ), z( nmax )
1804 DOUBLE PRECISION G( NMAX )
1805 INTEGER IDIM( NIDIM ), INC( NINC )
1807 COMPLEX*16 ALPHA, TRANSL
1808 DOUBLE PRECISION ERR, ERRMAX, RALPHA, RALS
1809 INTEGER I, IA, IC, IN, INCX, INCXS, IX, J, JA, JJ, LAA,
1810 $ lda, ldas, lj, lx, n, nargs, nc, ns
1811 LOGICAL FULL, NULL, PACKED, RESET, SAME, UPPER
1812 CHARACTER*1 UPLO, UPLOS
1819 EXTERNAL lze, lzeres
1823 INTRINSIC abs, dble, dcmplx, dconjg, max
1825 INTEGER INFOT, NOUTC
1828 COMMON /infoc/infot, noutc, ok, lerr
1832 full = sname( 3: 3 ).EQ.
'E'
1833 packed = sname( 3: 3 ).EQ.
'P'
1837 ELSE IF( packed )
THEN
1845 DO 100 in = 1, nidim
1855 laa = ( n*( n + 1 ) )/2
1861 uplo = ich( ic: ic )
1871 CALL zmake(
'GE',
' ',
' ', 1, n, x, 1, xx, abs( incx ),
1872 $ 0, n - 1, reset, transl )
1875 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
1879 ralpha = dble( alf( ia ) )
1880 alpha = dcmplx( ralpha, rzero )
1881 null = n.LE.0.OR.ralpha.EQ.rzero
1886 CALL zmake( sname( 2: 3 ), uplo,
' ', n, n, a, nmax,
1887 $ aa, lda, n - 1, n - 1, reset, transl )
1909 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo, n,
1913 CALL zher( uplo, n, ralpha, xx, incx, aa, lda )
1914 ELSE IF( packed )
THEN
1916 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo, n,
1920 CALL zhpr( uplo, n, ralpha, xx, incx, aa )
1926 WRITE( nout, fmt = 9992 )
1933 isame( 1 ) = uplo.EQ.uplos
1934 isame( 2 ) = ns.EQ.n
1935 isame( 3 ) = rals.EQ.ralpha
1936 isame( 4 ) = lze( xs, xx, lx )
1937 isame( 5 ) = incxs.EQ.incx
1939 isame( 6 ) = lze( as, aa, laa )
1941 isame( 6 ) = lzeres( sname( 2: 3 ), uplo, n, n, as,
1944 IF( .NOT.packed )
THEN
1945 isame( 7 ) = ldas.EQ.lda
1952 same = same.AND.isame( i )
1953 IF( .NOT.isame( i ) )
1954 $
WRITE( nout, fmt = 9998 )i
1971 z( i ) = x( n - i + 1 )
1976 w( 1 ) = dconjg( z( j ) )
1984 CALL zmvch(
'N', lj, 1, alpha, z( jj ), lj, w,
1985 $ 1, one, a( jj, j ), 1, yt, g,
1986 $ aa( ja ), eps, err, fatal, nout,
1997 errmax = max( errmax, err )
2018 IF( errmax.LT.thresh )
THEN
2019 WRITE( nout, fmt = 9999 )sname, nc
2021 WRITE( nout, fmt = 9997 )sname, nc, errmax
2026 WRITE( nout, fmt = 9995 )j
2029 WRITE( nout, fmt = 9996 )sname
2031 WRITE( nout, fmt = 9993 )nc, sname, uplo, n, ralpha, incx, lda
2032 ELSE IF( packed )
THEN
2033 WRITE( nout, fmt = 9994 )nc, sname, uplo, n, ralpha, incx
2039 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
2041 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
2042 $
'ANGED INCORRECTLY *******' )
2043 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
2044 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
2045 $
' - SUSPECT *******' )
2046 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
2047 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
2048 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2050 9993
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2051 $ i2,
', A,', i3,
') .' )
2052 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
2058 SUBROUTINE zchk6( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
2059 $ FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, NMAX,
2060 $ INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, YT, G,
2072 COMPLEX*16 ZERO, HALF, ONE
2073 PARAMETER ( ZERO = ( 0.0d0, 0.0d0 ),
2074 $ half = ( 0.5d0, 0.0d0 ),
2075 $ one = ( 1.0d0, 0.0d0 ) )
2076 DOUBLE PRECISION RZERO
2077 PARAMETER ( RZERO = 0.0d0 )
2079 DOUBLE PRECISION EPS, THRESH
2080 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
2081 LOGICAL FATAL, REWI, TRACE
2084 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
2085 $ AS( NMAX*NMAX ), X( NMAX ), XS( NMAX*INCMAX ),
2086 $ XX( NMAX*INCMAX ), Y( NMAX ),
2087 $ YS( NMAX*INCMAX ), YT( NMAX ),
2088 $ YY( NMAX*INCMAX ), Z( NMAX, 2 )
2089 DOUBLE PRECISION G( NMAX )
2090 INTEGER IDIM( NIDIM ), INC( NINC )
2092 COMPLEX*16 ALPHA, ALS, TRANSL
2093 DOUBLE PRECISION ERR, ERRMAX
2094 INTEGER I, IA, IC, IN, INCX, INCXS, INCY, INCYS, IX,
2095 $ IY, J, JA, JJ, LAA, LDA, LDAS, LJ, LX, LY, N,
2097 LOGICAL FULL, NULL, PACKED, RESET, SAME, UPPER
2098 CHARACTER*1 UPLO, UPLOS
2105 EXTERNAL LZE, LZERES
2109 INTRINSIC abs, dconjg, max
2111 INTEGER INFOT, NOUTC
2114 COMMON /infoc/infot, noutc, ok, lerr
2118 full = sname( 3: 3 ).EQ.
'E'
2119 packed = sname( 3: 3 ).EQ.
'P'
2123 ELSE IF( packed )
THEN
2131 DO 140 in = 1, nidim
2141 laa = ( n*( n + 1 ) )/2
2147 uplo = ich( ic: ic )
2157 CALL zmake(
'GE',
' ',
' ', 1, n, x, 1, xx, abs( incx ),
2158 $ 0, n - 1, reset, transl )
2161 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
2171 CALL zmake(
'GE',
' ',
' ', 1, n, y, 1, yy,
2172 $ abs( incy ), 0, n - 1, reset, transl )
2175 yy( 1 + abs( incy )*( n/2 - 1 ) ) = zero
2180 null = n.LE.0.OR.alpha.EQ.zero
2185 CALL zmake( sname( 2: 3 ), uplo,
' ', n, n, a,
2186 $ nmax, aa, lda, n - 1, n - 1, reset,
2213 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo, n,
2214 $ alpha, incx, incy, lda
2217 CALL zher2( uplo, n, alpha, xx, incx, yy, incy,
2219 ELSE IF( packed )
THEN
2221 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo, n,
2225 CALL zhpr2( uplo, n, alpha, xx, incx, yy, incy,
2232 WRITE( nout, fmt = 9992 )
2239 isame( 1 ) = uplo.EQ.uplos
2240 isame( 2 ) = ns.EQ.n
2241 isame( 3 ) = als.EQ.alpha
2242 isame( 4 ) = lze( xs, xx, lx )
2243 isame( 5 ) = incxs.EQ.incx
2244 isame( 6 ) = lze( ys, yy, ly )
2245 isame( 7 ) = incys.EQ.incy
2247 isame( 8 ) = lze( as, aa, laa )
2249 isame( 8 ) = lzeres( sname( 2: 3 ), uplo, n, n,
2252 IF( .NOT.packed )
THEN
2253 isame( 9 ) = ldas.EQ.lda
2260 same = same.AND.isame( i )
2261 IF( .NOT.isame( i ) )
2262 $
WRITE( nout, fmt = 9998 )i
2279 z( i, 1 ) = x( n - i + 1 )
2288 z( i, 2 ) = y( n - i + 1 )
2293 w( 1 ) = alpha*dconjg( z( j, 2 ) )
2294 w( 2 ) = dconjg( alpha )*dconjg( z( j, 1 ) )
2302 CALL zmvch(
'N', lj, 2, one, z( jj, 1 ),
2303 $ nmax, w, 1, one, a( jj, j ), 1,
2304 $ yt, g, aa( ja ), eps, err, fatal,
2315 errmax = max( errmax, err )
2338 IF( errmax.LT.thresh )
THEN
2339 WRITE( nout, fmt = 9999 )sname, nc
2341 WRITE( nout, fmt = 9997 )sname, nc, errmax
2346 WRITE( nout, fmt = 9995 )j
2349 WRITE( nout, fmt = 9996 )sname
2351 WRITE( nout, fmt = 9993 )nc, sname, uplo, n, alpha, incx,
2353 ELSE IF( packed )
THEN
2354 WRITE( nout, fmt = 9994 )nc, sname, uplo, n, alpha, incx, incy
2360 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
2362 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
2363 $
'ANGED INCORRECTLY *******' )
2364 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
2365 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
2366 $
' - SUSPECT *******' )
2367 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
2368 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
2369 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',(', f4.1,
',',
2370 $ f4.1,
'), X,', i2,
', Y,', i2,
', AP) ',
2372 9993
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',(', f4.1,
',',
2373 $ f4.1,
'), X,', i2,
', Y,', i2,
', A,', i3,
') ',
2375 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
2381 SUBROUTINE zchke( ISNUM, SRNAMT, NOUT )
2397 INTEGER INFOT, NOUTC
2400 COMPLEX*16 ALPHA, BETA
2401 DOUBLE PRECISION RALPHA
2403 COMPLEX*16 A( 1, 1 ), X( 1 ), Y( 1 )
2405 EXTERNAL CHKXER, ZGBMV, ZGEMV, ZGERC, ZGERU, ZHBMV,
2406 $ ZHEMV, ZHER, ZHER2, ZHPMV, ZHPR, ZHPR2, ZTBMV,
2407 $ ZTBSV, ZTPMV, ZTPSV, ZTRMV, ZTRSV
2409 COMMON /INFOC/INFOT, NOUTC, OK, LERR
2417 GO TO ( 10, 20, 30, 40, 50, 60, 70, 80,
2418 $ 90, 100, 110, 120, 130, 140, 150, 160,
2421 CALL zgemv(
'/', 0, 0, alpha, a, 1, x, 1, beta, y, 1 )
2422 CALL chkxer( srnamt, infot, nout, lerr, ok )
2424 CALL zgemv(
'N', -1, 0, alpha, a, 1, x, 1, beta, y, 1 )
2425 CALL chkxer( srnamt, infot, nout, lerr, ok )
2427 CALL zgemv(
'N', 0, -1, alpha, a, 1, x, 1, beta, y, 1 )
2428 CALL chkxer( srnamt, infot, nout, lerr, ok )
2430 CALL zgemv(
'N', 2, 0, alpha, a, 1, x, 1, beta, y, 1 )
2431 CALL chkxer( srnamt, infot, nout, lerr, ok )
2433 CALL zgemv(
'N', 0, 0, alpha, a, 1, x, 0, beta, y, 1 )
2434 CALL chkxer( srnamt, infot, nout, lerr, ok )
2436 CALL zgemv(
'N', 0, 0, alpha, a, 1, x, 1, beta, y, 0 )
2437 CALL chkxer( srnamt, infot, nout, lerr, ok )
2440 CALL zgbmv(
'/', 0, 0, 0, 0, alpha, a, 1, x, 1, beta, y, 1 )
2441 CALL chkxer( srnamt, infot, nout, lerr, ok )
2443 CALL zgbmv(
'N', -1, 0, 0, 0, alpha, a, 1, x, 1, beta, y, 1 )
2444 CALL chkxer( srnamt, infot, nout, lerr, ok )
2446 CALL zgbmv(
'N', 0, -1, 0, 0, alpha, a, 1, x, 1, beta, y, 1 )
2447 CALL chkxer( srnamt, infot, nout, lerr, ok )
2449 CALL zgbmv(
'N', 0, 0, -1, 0, alpha, a, 1, x, 1, beta, y, 1 )
2450 CALL chkxer( srnamt, infot, nout, lerr, ok )
2452 CALL zgbmv(
'N', 2, 0, 0, -1, alpha, a, 1, x, 1, beta, y, 1 )
2453 CALL chkxer( srnamt, infot, nout, lerr, ok )
2455 CALL zgbmv(
'N', 0, 0, 1, 0, alpha, a, 1, x, 1, beta, y, 1 )
2456 CALL chkxer( srnamt, infot, nout, lerr, ok )
2458 CALL zgbmv(
'N', 0, 0, 0, 0, alpha, a, 1, x, 0, beta, y, 1 )
2459 CALL chkxer( srnamt, infot, nout, lerr, ok )
2461 CALL zgbmv(
'N', 0, 0, 0, 0, alpha, a, 1, x, 1, beta, y, 0 )
2462 CALL chkxer( srnamt, infot, nout, lerr, ok )
2465 CALL zhemv(
'/', 0, alpha, a, 1, x, 1, beta, y, 1 )
2466 CALL chkxer( srnamt, infot, nout, lerr, ok )
2468 CALL zhemv(
'U', -1, alpha, a, 1, x, 1, beta, y, 1 )
2469 CALL chkxer( srnamt, infot, nout, lerr, ok )
2471 CALL zhemv(
'U', 2, alpha, a, 1, x, 1, beta, y, 1 )
2472 CALL chkxer( srnamt, infot, nout, lerr, ok )
2474 CALL zhemv(
'U', 0, alpha, a, 1, x, 0, beta, y, 1 )
2475 CALL chkxer( srnamt, infot, nout, lerr, ok )
2477 CALL zhemv(
'U', 0, alpha, a, 1, x, 1, beta, y, 0 )
2478 CALL chkxer( srnamt, infot, nout, lerr, ok )
2481 CALL zhbmv(
'/', 0, 0, alpha, a, 1, x, 1, beta, y, 1 )
2482 CALL chkxer( srnamt, infot, nout, lerr, ok )
2484 CALL zhbmv(
'U', -1, 0, 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, 1, alpha, a, 1, x, 1, beta, y, 1 )
2491 CALL chkxer( srnamt, infot, nout, lerr, ok )
2493 CALL zhbmv(
'U', 0, 0, alpha, a, 1, x, 0, beta, y, 1 )
2494 CALL chkxer( srnamt, infot, nout, lerr, ok )
2496 CALL zhbmv(
'U', 0, 0, alpha, a, 1, x, 1, beta, y, 0 )
2497 CALL chkxer( srnamt, infot, nout, lerr, ok )
2500 CALL zhpmv(
'/', 0, alpha, a, x, 1, beta, y, 1 )
2501 CALL chkxer( srnamt, infot, nout, lerr, ok )
2503 CALL zhpmv(
'U', -1, alpha, a, x, 1, beta, y, 1 )
2504 CALL chkxer( srnamt, infot, nout, lerr, ok )
2506 CALL zhpmv(
'U', 0, alpha, a, x, 0, beta, y, 1 )
2507 CALL chkxer( srnamt, infot, nout, lerr, ok )
2509 CALL zhpmv(
'U', 0, alpha, a, x, 1, beta, y, 0 )
2510 CALL chkxer( srnamt, infot, nout, lerr, ok )
2513 CALL ztrmv(
'/',
'N',
'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',
'/', 0, a, 1, x, 1 )
2520 CALL chkxer( srnamt, infot, nout, lerr, ok )
2522 CALL ztrmv(
'U',
'N',
'N', -1, a, 1, x, 1 )
2523 CALL chkxer( srnamt, infot, nout, lerr, ok )
2525 CALL ztrmv(
'U',
'N',
'N', 2, a, 1, x, 1 )
2526 CALL chkxer( srnamt, infot, nout, lerr, ok )
2528 CALL ztrmv(
'U',
'N',
'N', 0, a, 1, x, 0 )
2529 CALL chkxer( srnamt, infot, nout, lerr, ok )
2532 CALL ztbmv(
'/',
'N',
'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',
'/', 0, 0, a, 1, x, 1 )
2539 CALL chkxer( srnamt, infot, nout, lerr, ok )
2541 CALL ztbmv(
'U',
'N',
'N', -1, 0, 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, 1, a, 1, x, 1 )
2548 CALL chkxer( srnamt, infot, nout, lerr, ok )
2550 CALL ztbmv(
'U',
'N',
'N', 0, 0, a, 1, x, 0 )
2551 CALL chkxer( srnamt, infot, nout, lerr, ok )
2554 CALL ztpmv(
'/',
'N',
'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',
'/', 0, a, x, 1 )
2561 CALL chkxer( srnamt, infot, nout, lerr, ok )
2563 CALL ztpmv(
'U',
'N',
'N', -1, a, x, 1 )
2564 CALL chkxer( srnamt, infot, nout, lerr, ok )
2566 CALL ztpmv(
'U',
'N',
'N', 0, a, x, 0 )
2567 CALL chkxer( srnamt, infot, nout, lerr, ok )
2570 CALL ztrsv(
'/',
'N',
'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',
'/', 0, a, 1, x, 1 )
2577 CALL chkxer( srnamt, infot, nout, lerr, ok )
2579 CALL ztrsv(
'U',
'N',
'N', -1, a, 1, x, 1 )
2580 CALL chkxer( srnamt, infot, nout, lerr, ok )
2582 CALL ztrsv(
'U',
'N',
'N', 2, a, 1, x, 1 )
2583 CALL chkxer( srnamt, infot, nout, lerr, ok )
2585 CALL ztrsv(
'U',
'N',
'N', 0, a, 1, x, 0 )
2586 CALL chkxer( srnamt, infot, nout, lerr, ok )
2589 CALL ztbsv(
'/',
'N',
'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',
'/', 0, 0, a, 1, x, 1 )
2596 CALL chkxer( srnamt, infot, nout, lerr, ok )
2598 CALL ztbsv(
'U',
'N',
'N', -1, 0, 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, 1, a, 1, x, 1 )
2605 CALL chkxer( srnamt, infot, nout, lerr, ok )
2607 CALL ztbsv(
'U',
'N',
'N', 0, 0, a, 1, x, 0 )
2608 CALL chkxer( srnamt, infot, nout, lerr, ok )
2611 CALL ztpsv(
'/',
'N',
'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',
'/', 0, a, x, 1 )
2618 CALL chkxer( srnamt, infot, nout, lerr, ok )
2620 CALL ztpsv(
'U',
'N',
'N', -1, a, x, 1 )
2621 CALL chkxer( srnamt, infot, nout, lerr, ok )
2623 CALL ztpsv(
'U',
'N',
'N', 0, a, x, 0 )
2624 CALL chkxer( srnamt, infot, nout, lerr, ok )
2627 CALL zgerc( -1, 0, alpha, x, 1, y, 1, a, 1 )
2628 CALL chkxer( srnamt, infot, nout, lerr, ok )
2630 CALL zgerc( 0, -1, alpha, x, 1, y, 1, a, 1 )
2631 CALL chkxer( srnamt, infot, nout, lerr, ok )
2633 CALL zgerc( 0, 0, alpha, x, 0, y, 1, a, 1 )
2634 CALL chkxer( srnamt, infot, nout, lerr, ok )
2636 CALL zgerc( 0, 0, alpha, x, 1, y, 0, a, 1 )
2637 CALL chkxer( srnamt, infot, nout, lerr, ok )
2639 CALL zgerc( 2, 0, alpha, x, 1, y, 1, a, 1 )
2640 CALL chkxer( srnamt, infot, nout, lerr, ok )
2643 CALL zgeru( -1, 0, alpha, x, 1, y, 1, a, 1 )
2644 CALL chkxer( srnamt, infot, nout, lerr, ok )
2646 CALL zgeru( 0, -1, alpha, x, 1, y, 1, a, 1 )
2647 CALL chkxer( srnamt, infot, nout, lerr, ok )
2649 CALL zgeru( 0, 0, alpha, x, 0, y, 1, a, 1 )
2650 CALL chkxer( srnamt, infot, nout, lerr, ok )
2652 CALL zgeru( 0, 0, alpha, x, 1, y, 0, a, 1 )
2653 CALL chkxer( srnamt, infot, nout, lerr, ok )
2655 CALL zgeru( 2, 0, alpha, x, 1, y, 1, a, 1 )
2656 CALL chkxer( srnamt, infot, nout, lerr, ok )
2659 CALL zher(
'/', 0, ralpha, x, 1, a, 1 )
2660 CALL chkxer( srnamt, infot, nout, lerr, ok )
2662 CALL zher(
'U', -1, ralpha, x, 1, a, 1 )
2663 CALL chkxer( srnamt, infot, nout, lerr, ok )
2665 CALL zher(
'U', 0, ralpha, x, 0, a, 1 )
2666 CALL chkxer( srnamt, infot, nout, lerr, ok )
2668 CALL zher(
'U', 2, ralpha, x, 1, a, 1 )
2669 CALL chkxer( srnamt, infot, nout, lerr, ok )
2672 CALL zhpr(
'/', 0, ralpha, x, 1, a )
2673 CALL chkxer( srnamt, infot, nout, lerr, ok )
2675 CALL zhpr(
'U', -1, ralpha, x, 1, a )
2676 CALL chkxer( srnamt, infot, nout, lerr, ok )
2678 CALL zhpr(
'U', 0, ralpha, x, 0, a )
2679 CALL chkxer( srnamt, infot, nout, lerr, ok )
2682 CALL zher2(
'/', 0, alpha, x, 1, y, 1, a, 1 )
2683 CALL chkxer( srnamt, infot, nout, lerr, ok )
2685 CALL zher2(
'U', -1, alpha, x, 1, y, 1, a, 1 )
2686 CALL chkxer( srnamt, infot, nout, lerr, ok )
2688 CALL zher2(
'U', 0, alpha, x, 0, y, 1, a, 1 )
2689 CALL chkxer( srnamt, infot, nout, lerr, ok )
2691 CALL zher2(
'U', 0, alpha, x, 1, y, 0, a, 1 )
2692 CALL chkxer( srnamt, infot, nout, lerr, ok )
2694 CALL zher2(
'U', 2, alpha, x, 1, y, 1, a, 1 )
2695 CALL chkxer( srnamt, infot, nout, lerr, ok )
2698 CALL zhpr2(
'/', 0, alpha, x, 1, y, 1, a )
2699 CALL chkxer( srnamt, infot, nout, lerr, ok )
2701 CALL zhpr2(
'U', -1, alpha, x, 1, y, 1, a )
2702 CALL chkxer( srnamt, infot, nout, lerr, ok )
2704 CALL zhpr2(
'U', 0, alpha, x, 0, y, 1, a )
2705 CALL chkxer( srnamt, infot, nout, lerr, ok )
2707 CALL zhpr2(
'U', 0, alpha, x, 1, y, 0, a )
2708 CALL chkxer( srnamt, infot, nout, lerr, ok )
2711 WRITE( nout, fmt = 9999 )srnamt
2713 WRITE( nout, fmt = 9998 )srnamt
2717 9999
FORMAT(
' ', a6,
' PASSED THE TESTS OF ERROR-EXITS' )
2718 9998
FORMAT(
' ******* ', a6,
' FAILED THE TESTS OF ERROR-EXITS *****',
2724 SUBROUTINE zmake( TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL,
2725 $ KU, RESET, TRANSL )
2741 COMPLEX*16 ZERO, ONE
2742 parameter( zero = ( 0.0d0, 0.0d0 ),
2743 $ one = ( 1.0d0, 0.0d0 ) )
2745 PARAMETER ( ROGUE = ( -1.0d10, 1.0d10 ) )
2746 DOUBLE PRECISION RZERO
2747 PARAMETER ( RZERO = 0.0d0 )
2748 DOUBLE PRECISION RROGUE
2749 PARAMETER ( RROGUE = -1.0d10 )
2752 INTEGER KL, KU, LDA, M, N, NMAX
2754 CHARACTER*1 DIAG, UPLO
2757 COMPLEX*16 A( NMAX, * ), AA( * )
2759 INTEGER I, I1, I2, I3, IBEG, IEND, IOFF, J, JJ, KK
2760 LOGICAL GEN, LOWER, SYM, TRI, UNIT, UPPER
2765 INTRINSIC dble, dcmplx, dconjg, max, min
2767 gen =
TYPE( 1: 1 ).EQ.
'G'
2768 SYM = type( 1: 1 ).EQ.
'H'
2769 tri =
TYPE( 1: 1 ).EQ.
'T'
2770 upper = ( sym.OR.tri ).AND.uplo.EQ.
'U'
2771 lower = ( sym.OR.tri ).AND.uplo.EQ.
'L'
2772 unit = tri.AND.diag.EQ.
'U'
2778 IF( gen.OR.( upper.AND.i.LE.j ).OR.( lower.AND.i.GE.j ) )
2780 IF( ( i.LE.j.AND.j - i.LE.ku ).OR.
2781 $ ( i.GE.j.AND.i - j.LE.kl ) )
THEN
2782 a( i, j ) = zbeg( reset ) + transl
2788 a( j, i ) = dconjg( a( i, j ) )
2796 $ a( j, j ) = dcmplx( dble( a( j, j ) ), rzero )
2798 $ a( j, j ) = a( j, j ) + one
2805 IF( type.EQ.
'GE' )
THEN
2808 aa( i + ( j - 1 )*lda ) = a( i, j )
2810 DO 40 i = m + 1, lda
2811 aa( i + ( j - 1 )*lda ) = rogue
2814 ELSE IF( type.EQ.
'GB' )
THEN
2816 DO 60 i1 = 1, ku + 1 - j
2817 aa( i1 + ( j - 1 )*lda ) = rogue
2819 DO 70 i2 = i1, min( kl + ku + 1, ku + 1 + m - j )
2820 aa( i2 + ( j - 1 )*lda ) = a( i2 + j - ku - 1, j )
2823 aa( i3 + ( j - 1 )*lda ) = rogue
2826 ELSE IF( type.EQ.
'HE'.OR.type.EQ.
'TR' )
THEN
2843 DO 100 i = 1, ibeg - 1
2844 aa( i + ( j - 1 )*lda ) = rogue
2846 DO 110 i = ibeg, iend
2847 aa( i + ( j - 1 )*lda ) = a( i, j )
2849 DO 120 i = iend + 1, lda
2850 aa( i + ( j - 1 )*lda ) = rogue
2853 jj = j + ( j - 1 )*lda
2854 aa( jj ) = dcmplx( dble( aa( jj ) ), rrogue )
2857 ELSE IF( type.EQ.
'HB'.OR.type.EQ.
'TB' )
THEN
2861 ibeg = max( 1, kl + 2 - j )
2874 iend = min( kl + 1, 1 + m - j )
2876 DO 140 i = 1, ibeg - 1
2877 aa( i + ( j - 1 )*lda ) = rogue
2879 DO 150 i = ibeg, iend
2880 aa( i + ( j - 1 )*lda ) = a( i + j - kk, j )
2882 DO 160 i = iend + 1, lda
2883 aa( i + ( j - 1 )*lda ) = rogue
2886 jj = kk + ( j - 1 )*lda
2887 aa( jj ) = dcmplx( dble( aa( jj ) ), rrogue )
2890 ELSE IF( type.EQ.
'HP'.OR.type.EQ.
'TP' )
THEN
2900 DO 180 i = ibeg, iend
2902 aa( ioff ) = a( i, j )
2905 $ aa( ioff ) = rogue
2907 $ aa( ioff ) = dcmplx( dble( aa( ioff ) ), rrogue )
2917 SUBROUTINE zmvch( TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y,
2918 $ INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV )
2930 parameter( zero = ( 0.0d0, 0.0d0 ) )
2931 DOUBLE PRECISION RZERO, RONE
2932 PARAMETER ( RZERO = 0.0d0, rone = 1.0d0 )
2934 COMPLEX*16 ALPHA, BETA
2935 DOUBLE PRECISION EPS, ERR
2936 INTEGER INCX, INCY, M, N, NMAX, NOUT
2940 COMPLEX*16 A( NMAX, * ), X( * ), Y( * ), YT( * ), YY( * )
2941 DOUBLE PRECISION G( * )
2944 DOUBLE PRECISION ERRI
2945 INTEGER I, INCXL, INCYL, IY, J, JX, KX, KY, ML, NL
2948 INTRINSIC abs, dble, dconjg, dimag, max, sqrt
2950 DOUBLE PRECISION ABS1
2952 abs1( c ) = abs( dble( c ) ) + abs( dimag( c ) )
2955 ctran = trans.EQ.
'C'
2956 IF( tran.OR.ctran )
THEN
2988 yt( iy ) = yt( iy ) + a( j, i )*x( jx )
2989 g( iy ) = g( iy ) + abs1( a( j, i ) )*abs1( x( jx ) )
2992 ELSE IF( ctran )
THEN
2994 yt( iy ) = yt( iy ) + dconjg( a( j, i ) )*x( jx )
2995 g( iy ) = g( iy ) + abs1( a( j, i ) )*abs1( x( jx ) )
3000 yt( iy ) = yt( iy ) + a( i, j )*x( jx )
3001 g( iy ) = g( iy ) + abs1( a( i, j ) )*abs1( x( jx ) )
3005 yt( iy ) = alpha*yt( iy ) + beta*y( iy )
3006 g( iy ) = abs1( alpha )*g( iy ) + abs1( beta )*abs1( y( iy ) )
3014 erri = abs( yt( i ) - yy( 1 + ( i - 1 )*abs( incy ) ) )/eps
3015 IF( g( i ).NE.rzero )
3016 $ erri = erri/g( i )
3017 err = max( err, erri )
3018 IF( err*sqrt( eps ).GE.rone )
3027 WRITE( nout, fmt = 9999 )
3030 WRITE( nout, fmt = 9998 )i, yt( i ),
3031 $ yy( 1 + ( i - 1 )*abs( incy ) )
3033 WRITE( nout, fmt = 9998 )i,
3034 $ yy( 1 + ( i - 1 )*abs( incy ) ), yt( i )
3041 9999
FORMAT(
' ******* FATAL ERROR - COMPUTED RESULT IS LESS THAN HAL',
3042 $
'F ACCURATE *******', /
' EXPECTED RE',
3043 $
'SULT COMPUTED RESULT' )
3044 9998
FORMAT( 1x, i7, 2(
' (', g15.6,
',', g15.6,
')' ) )
3049 LOGICAL FUNCTION lze( RI, RJ, LR )
3062 COMPLEX*16 ri( * ), rj( * )
3067 IF( ri( i ).NE.rj( i ) )
3079 LOGICAL FUNCTION lzeres( TYPE, UPLO, M, N, AA, AS, LDA )
3096 COMPLEX*16 aa( lda, * ), as( lda, * )
3098 INTEGER i, ibeg, iend, j
3102 IF( type.EQ.
'GE' )
THEN
3104 DO 10 i = m + 1, lda
3105 IF( aa( i, j ).NE.as( i, j ) )
3109 ELSE IF( type.EQ.
'HE' )
THEN
3118 DO 30 i = 1, ibeg - 1
3119 IF( aa( i, j ).NE.as( i, j ) )
3122 DO 40 i = iend + 1, lda
3123 IF( aa( i, j ).NE.as( i, j ) )
3138 COMPLEX*16 FUNCTION zbeg( RESET )
3152 INTEGER i, ic, j, mi, mj
3154 SAVE i, ic, j, mi, mj
3178 i = i - 1000*( i/1000 )
3179 j = j - 1000*( j/1000 )
3184 zbeg = dcmplx( ( i - 500 )/1001.0d0, ( j - 500 )/1001.0d0 )
3190 DOUBLE PRECISION FUNCTION ddiff( X, Y )
3198 DOUBLE PRECISION x, y
3206 SUBROUTINE chkxer( SRNAMT, INFOT, NOUT, LERR, OK )
3222 WRITE( nout, fmt = 9999 )infot, srnamt
3228 9999
FORMAT(
' ***** ILLEGAL VALUE OF PARAMETER NUMBER ', i2,
' NOT D',
3229 $
'ETECTED BY ', a6,
' *****' )
3234 SUBROUTINE xerbla( SRNAME, INFO )
3259 COMMON /INFOC/INFOT, NOUT, OK, LERR
3260 COMMON /SRNAMC/SRNAMT
3263 IF( info.NE.infot )
THEN
3264 IF( infot.NE.0 )
THEN
3265 WRITE( nout, fmt = 9999 )info, infot
3267 WRITE( nout, fmt = 9997 )info
3271 IF( srname.NE.srnamt )
THEN
3272 WRITE( nout, fmt = 9998 )srname, srnamt
3277 9999
FORMAT(
' ******* XERBLA WAS CALLED WITH INFO = ', i6,
' INSTEAD',
3278 $
' OF ', i2,
' *******' )
3279 9998
FORMAT(
' ******* XERBLA WAS CALLED WITH SRNAME = ', a6,
' INSTE',
3280 $
'AD OF ', a6,
' *******' )
3281 9997
FORMAT(
' ******* XERBLA WAS CALLED WITH INFO = ', i6,