127 parameter( nmax = 132 )
129 parameter( maxin = 12 )
131 parameter( maxrhs = 16 )
133 parameter( matmax = 30 )
135 parameter( nin = 5, nout = 6 )
137 parameter( kdmax = nmax+( nmax+1 ) / 4 )
140 LOGICAL fatal, tstchk, tstdrv, tsterr
146 INTEGER i, ic, j, k, la, lafac, lda, nb, nm, nmats, nn,
147 $ nnb, nnb2, nns, nrhs, ntypes, nrank,
148 $ vers_major, vers_minor, vers_patch
149 DOUBLE PRECISION eps, s1, s2, threq, thresh
152 LOGICAL dotype( matmax )
153 INTEGER iwork( 25*nmax ), mval( maxin ),
154 $ nbval( maxin ), nbval2( maxin ),
155 $ nsval( maxin ), nval( maxin ), nxval( maxin ),
156 $ rankval( maxin ), piv( nmax )
159 INTEGER allocatestatus
160 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE:: rwork, s
161 COMPLEX*16,
DIMENSION(:),
ALLOCATABLE :: e
162 COMPLEX*16,
DIMENSION(:,:),
ALLOCATABLE:: a, b, work
190 INTEGER iparms( 100 )
193 COMMON / infoc / infot, nunit, ok, lerr
194 COMMON / srnamc / srnamt
195 COMMON / claenv / iparms
198 DATA threq / 2.0d0 / , intstr /
'0123456789' /
202 ALLOCATE ( a( (kdmax+1) * nmax, 7 ), stat = allocatestatus)
203 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
204 ALLOCATE ( b( nmax * maxrhs, 4 ), stat = allocatestatus)
205 IF (allocatestatus /= 0 ) stop
"*** Not enough memory ***"
206 ALLOCATE ( work( nmax, nmax+maxrhs+10 ), stat = allocatestatus)
207 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
208 ALLOCATE ( e( nmax ), stat = allocatestatus )
209 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
210 ALLOCATE ( s( 2*nmax ), stat = allocatestatus)
211 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
212 ALLOCATE ( rwork( 150*nmax+2*maxrhs ), stat = allocatestatus)
213 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
227 CALL ilaver( vers_major, vers_minor, vers_patch )
228 WRITE( nout, fmt = 9994 ) vers_major, vers_minor, vers_patch
232 READ( nin, fmt = * )nm
234 WRITE( nout, fmt = 9996 )
' NM ', nm, 1
237 ELSE IF( nm.GT.maxin )
THEN
238 WRITE( nout, fmt = 9995 )
' NM ', nm, maxin
242 READ( nin, fmt = * )( mval( i ), i = 1, nm )
244 IF( mval( i ).LT.0 )
THEN
245 WRITE( nout, fmt = 9996 )
' M ', mval( i ), 0
247 ELSE IF( mval( i ).GT.nmax )
THEN
248 WRITE( nout, fmt = 9995 )
' M ', mval( i ), nmax
253 $
WRITE( nout, fmt = 9993 )
'M ', ( mval( i ), i = 1, nm )
257 READ( nin, fmt = * )nn
259 WRITE( nout, fmt = 9996 )
' NN ', nn, 1
262 ELSE IF( nn.GT.maxin )
THEN
263 WRITE( nout, fmt = 9995 )
' NN ', nn, maxin
267 READ( nin, fmt = * )( nval( i ), i = 1, nn )
269 IF( nval( i ).LT.0 )
THEN
270 WRITE( nout, fmt = 9996 )
' N ', nval( i ), 0
272 ELSE IF( nval( i ).GT.nmax )
THEN
273 WRITE( nout, fmt = 9995 )
' N ', nval( i ), nmax
278 $
WRITE( nout, fmt = 9993 )
'N ', ( nval( i ), i = 1, nn )
282 READ( nin, fmt = * )nns
284 WRITE( nout, fmt = 9996 )
' NNS', nns, 1
287 ELSE IF( nns.GT.maxin )
THEN
288 WRITE( nout, fmt = 9995 )
' NNS', nns, maxin
292 READ( nin, fmt = * )( nsval( i ), i = 1, nns )
294 IF( nsval( i ).LT.0 )
THEN
295 WRITE( nout, fmt = 9996 )
'NRHS', nsval( i ), 0
297 ELSE IF( nsval( i ).GT.maxrhs )
THEN
298 WRITE( nout, fmt = 9995 )
'NRHS', nsval( i ), maxrhs
303 $
WRITE( nout, fmt = 9993 )
'NRHS', ( nsval( i ), i = 1, nns )
307 READ( nin, fmt = * )nnb
309 WRITE( nout, fmt = 9996 )
'NNB ', nnb, 1
312 ELSE IF( nnb.GT.maxin )
THEN
313 WRITE( nout, fmt = 9995 )
'NNB ', nnb, maxin
317 READ( nin, fmt = * )( nbval( i ), i = 1, nnb )
319 IF( nbval( i ).LT.0 )
THEN
320 WRITE( nout, fmt = 9996 )
' NB ', nbval( i ), 0
325 $
WRITE( nout, fmt = 9993 )
'NB ', ( nbval( i ), i = 1, nnb )
333 IF( nb.EQ.nbval2( j ) )
342 READ( nin, fmt = * )( nxval( i ), i = 1, nnb )
344 IF( nxval( i ).LT.0 )
THEN
345 WRITE( nout, fmt = 9996 )
' NX ', nxval( i ), 0
350 $
WRITE( nout, fmt = 9993 )
'NX ', ( nxval( i ), i = 1, nnb )
354 READ( nin, fmt = * )nrank
356 WRITE( nout, fmt = 9996 )
' NRANK ', nrank, 1
359 ELSE IF( nn.GT.maxin )
THEN
360 WRITE( nout, fmt = 9995 )
' NRANK ', nrank, maxin
364 READ( nin, fmt = * )( rankval( i ), i = 1, nrank )
366 IF( rankval( i ).LT.0 )
THEN
367 WRITE( nout, fmt = 9996 )
' RANK ', rankval( i ), 0
369 ELSE IF( rankval( i ).GT.100 )
THEN
370 WRITE( nout, fmt = 9995 )
' RANK ', rankval( i ), 100
375 $
WRITE( nout, fmt = 9993 )
'RANK % OF N',
376 $ ( rankval( i ), i = 1, nrank )
380 READ( nin, fmt = * )thresh
381 WRITE( nout, fmt = 9992 )thresh
385 READ( nin, fmt = * )tstchk
389 READ( nin, fmt = * )tstdrv
393 READ( nin, fmt = * )tsterr
396 WRITE( nout, fmt = 9999 )
402 eps =
dlamch(
'Underflow threshold' )
403 WRITE( nout, fmt = 9991 )
'underflow', eps
404 eps =
dlamch(
'Overflow threshold' )
405 WRITE( nout, fmt = 9991 )
'overflow ', eps
407 WRITE( nout, fmt = 9991 )
'precision', eps
408 WRITE( nout, fmt = * )
415 READ( nin, fmt =
'(A72)',
END = 140 )aline
423 IF( aline( i: i ).EQ.
' ' )
429 IF( c1.EQ.intstr( k: k ) )
THEN
436 nmats = nmats*10 + ic
447 IF( .NOT.
lsame( c1,
'Zomplex precision' ) )
THEN
448 WRITE( nout, fmt = 9990 )path
450 ELSE IF( nmats.LE.0 )
THEN
454 WRITE( nout, fmt = 9989 )path
456 ELSE IF(
lsamen( 2, c2,
'GE' ) )
THEN
461 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
464 CALL zchkge( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
465 $ nsval, thresh, tsterr, lda, a( 1, 1 ),
466 $ a( 1, 2 ), a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
467 $ b( 1, 3 ), work, rwork, iwork, nout )
469 WRITE( nout, fmt = 9989 )path
473 CALL zdrvge( dotype, nn, nval, nrhs, thresh, tsterr, lda,
474 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
475 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
476 $ rwork, iwork, nout )
478 WRITE( nout, fmt = 9988 )path
481 ELSE IF(
lsamen( 2, c2,
'GB' ) )
THEN
485 la = ( 2*kdmax+1 )*nmax
486 lafac = ( 3*kdmax+1 )*nmax
488 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
491 CALL zchkgb( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
492 $ nsval, thresh, tsterr, a( 1, 1 ), la,
493 $ a( 1, 3 ), lafac, b( 1, 1 ), b( 1, 2 ),
494 $ b( 1, 3 ), work, rwork, iwork, nout )
496 WRITE( nout, fmt = 9989 )path
500 CALL zdrvgb( dotype, nn, nval, nrhs, thresh, tsterr,
501 $ a( 1, 1 ), la, a( 1, 3 ), lafac, a( 1, 6 ),
502 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s,
503 $ work, rwork, iwork, nout )
505 WRITE( nout, fmt = 9988 )path
508 ELSE IF(
lsamen( 2, c2,
'GT' ) )
THEN
513 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
516 CALL zchkgt( dotype, nn, nval, nns, nsval, thresh, tsterr,
517 $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
518 $ b( 1, 3 ), work, rwork, iwork, nout )
520 WRITE( nout, fmt = 9989 )path
524 CALL zdrvgt( dotype, nn, nval, nrhs, thresh, tsterr,
525 $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
526 $ b( 1, 3 ), work, rwork, iwork, nout )
528 WRITE( nout, fmt = 9988 )path
531 ELSE IF(
lsamen( 2, c2,
'PO' ) )
THEN
536 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
539 CALL zchkpo( dotype, nn, nval, nnb2, nbval2, nns, nsval,
540 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
541 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
542 $ work, rwork, nout )
544 WRITE( nout, fmt = 9989 )path
548 CALL zdrvpo( dotype, nn, nval, nrhs, thresh, tsterr, lda,
549 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
550 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
553 WRITE( nout, fmt = 9988 )path
556 ELSE IF(
lsamen( 2, c2,
'PS' ) )
THEN
562 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
565 CALL zchkps( dotype, nn, nval, nnb2, nbval2, nrank,
566 $ rankval, thresh, tsterr, lda, a( 1, 1 ),
567 $ a( 1, 2 ), a( 1, 3 ), piv, work, rwork,
570 WRITE( nout, fmt = 9989 )path
573 ELSE IF(
lsamen( 2, c2,
'PP' ) )
THEN
578 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
581 CALL zchkpp( dotype, nn, nval, nns, nsval, thresh, tsterr,
582 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
583 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
586 WRITE( nout, fmt = 9989 )path
590 CALL zdrvpp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
591 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
592 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
595 WRITE( nout, fmt = 9988 )path
598 ELSE IF(
lsamen( 2, c2,
'PB' ) )
THEN
603 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
606 CALL zchkpb( dotype, nn, nval, nnb2, nbval2, nns, nsval,
607 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
608 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
609 $ work, rwork, nout )
611 WRITE( nout, fmt = 9989 )path
615 CALL zdrvpb( dotype, nn, nval, nrhs, thresh, tsterr, lda,
616 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
617 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
620 WRITE( nout, fmt = 9988 )path
623 ELSE IF(
lsamen( 2, c2,
'PT' ) )
THEN
628 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
631 CALL zchkpt( dotype, nn, nval, nns, nsval, thresh, tsterr,
632 $ a( 1, 1 ), s, a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
633 $ b( 1, 3 ), work, rwork, nout )
635 WRITE( nout, fmt = 9989 )path
639 CALL zdrvpt( dotype, nn, nval, nrhs, thresh, tsterr,
640 $ a( 1, 1 ), s, a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
641 $ b( 1, 3 ), work, rwork, nout )
643 WRITE( nout, fmt = 9988 )path
646 ELSE IF(
lsamen( 2, c2,
'HE' ) )
THEN
651 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
654 CALL zchkhe( dotype, nn, nval, nnb2, nbval2, nns, nsval,
655 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
656 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
657 $ work, rwork, iwork, nout )
659 WRITE( nout, fmt = 9989 )path
663 CALL zdrvhe( dotype, nn, nval, nrhs, thresh, tsterr, lda,
664 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
665 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
668 WRITE( nout, fmt = 9988 )path
671 ELSE IF(
lsamen( 2, c2,
'HR' ) )
THEN
677 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
680 CALL zchkhe_rook(dotype, nn, nval, nnb2, nbval2, nns, nsval,
681 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
682 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
683 $ work, rwork, iwork, nout )
685 WRITE( nout, fmt = 9989 )path
689 CALL zdrvhe_rook( dotype, nn, nval, nrhs, thresh, tsterr,
690 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
691 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
692 $ rwork, iwork, nout )
694 WRITE( nout, fmt = 9988 )path
697 ELSE IF(
lsamen( 2, c2,
'HK' ) )
THEN
704 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
707 CALL zchkhe_rk ( dotype, nn, nval, nnb2, nbval2, nns, nsval,
708 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
709 $ e, a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
710 $ b( 1, 3 ), work, rwork, iwork, nout )
712 WRITE( nout, fmt = 9989 )path
716 CALL zdrvhe_rk( dotype, nn, nval, nrhs, thresh, tsterr,
717 $ lda, a( 1, 1 ), a( 1, 2 ), e, a( 1, 3 ),
718 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
719 $ rwork, iwork, nout )
721 WRITE( nout, fmt = 9988 )path
724 ELSE IF(
lsamen( 2, c2,
'HA' ) )
THEN
730 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
733 CALL zchkhe_aa( dotype, nn, nval, nnb2, nbval2, nns,
734 $ nsval, thresh, tsterr, lda,
735 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
736 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
737 $ work, rwork, iwork, nout )
739 WRITE( nout, fmt = 9989 )path
743 CALL zdrvhe_aa( dotype, nn, nval, nrhs, thresh, tsterr,
744 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
745 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
746 $ work, rwork, iwork, nout )
748 WRITE( nout, fmt = 9988 )path
751 ELSE IF(
lsamen( 2, c2,
'H2' ) )
THEN
757 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
761 $ nns, nsval, thresh, tsterr, lda,
762 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
763 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
764 $ work, rwork, iwork, nout )
766 WRITE( nout, fmt = 9989 )path
771 $ dotype, nn, nval, nrhs, thresh, tsterr,
772 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
773 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
774 $ work, rwork, iwork, nout )
776 WRITE( nout, fmt = 9988 )path
780 ELSE IF(
lsamen( 2, c2,
'HP' ) )
THEN
785 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
788 CALL zchkhp( dotype, nn, nval, nns, nsval, thresh, tsterr,
789 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
790 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
793 WRITE( nout, fmt = 9989 )path
797 CALL zdrvhp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
798 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
799 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
802 WRITE( nout, fmt = 9988 )path
805 ELSE IF(
lsamen( 2, c2,
'SY' ) )
THEN
811 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
814 CALL zchksy( dotype, nn, nval, nnb2, nbval2, nns, nsval,
815 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
816 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
817 $ work, rwork, iwork, nout )
819 WRITE( nout, fmt = 9989 )path
823 CALL zdrvsy( dotype, nn, nval, nrhs, thresh, tsterr, lda,
824 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
825 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
828 WRITE( nout, fmt = 9988 )path
831 ELSE IF(
lsamen( 2, c2,
'SR' ) )
THEN
837 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
840 CALL zchksy_rook(dotype, nn, nval, nnb2, nbval2, nns, nsval,
841 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
842 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
843 $ work, rwork, iwork, nout )
845 WRITE( nout, fmt = 9989 )path
849 CALL zdrvsy_rook( dotype, nn, nval, nrhs, thresh, tsterr,
850 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
851 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
852 $ rwork, iwork, nout )
854 WRITE( nout, fmt = 9988 )path
857 ELSE IF(
lsamen( 2, c2,
'SK' ) )
THEN
864 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
867 CALL zchksy_rk( dotype, nn, nval, nnb2, nbval2, nns, nsval,
868 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
869 $ e, a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
870 $ b( 1, 3 ), work, rwork, iwork, nout )
872 WRITE( nout, fmt = 9989 )path
876 CALL zdrvsy_rk( dotype, nn, nval, nrhs, thresh, tsterr,
877 $ lda, a( 1, 1 ), a( 1, 2 ), e, a( 1, 3 ),
878 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
879 $ rwork, iwork, nout )
881 WRITE( nout, fmt = 9988 )path
884 ELSE IF(
lsamen( 2, c2,
'SA' ) )
THEN
889 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
892 CALL zchksy_aa( dotype, nn, nval, nnb2, nbval2, nns, nsval,
893 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
894 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
895 $ b( 1, 3 ), work, rwork, iwork, nout )
897 WRITE( nout, fmt = 9989 )path
901 CALL zdrvsy_aa( dotype, nn, nval, nrhs, thresh, tsterr,
902 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
903 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
904 $ rwork, iwork, nout )
906 WRITE( nout, fmt = 9988 )path
909 ELSE IF(
lsamen( 2, c2,
'S2' ) )
THEN
915 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
919 $ nsval, thresh, tsterr, lda,
920 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
921 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
922 $ work, rwork, iwork, nout )
924 WRITE( nout, fmt = 9989 )path
929 $ dotype, nn, nval, nrhs, thresh, tsterr,
930 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
931 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
932 $ rwork, iwork, nout )
934 WRITE( nout, fmt = 9988 )path
937 ELSE IF(
lsamen( 2, c2,
'SP' ) )
THEN
943 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
946 CALL zchksp( dotype, nn, nval, nns, nsval, thresh, tsterr,
947 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
948 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
951 WRITE( nout, fmt = 9989 )path
955 CALL zdrvsp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
956 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
957 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
960 WRITE( nout, fmt = 9988 )path
963 ELSE IF(
lsamen( 2, c2,
'TR' ) )
THEN
968 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
971 CALL zchktr( dotype, nn, nval, nnb2, nbval2, nns, nsval,
972 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
973 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
976 WRITE( nout, fmt = 9989 )path
979 ELSE IF(
lsamen( 2, c2,
'TP' ) )
THEN
984 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
987 CALL zchktp( dotype, nn, nval, nns, nsval, thresh, tsterr,
988 $ lda, a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
989 $ b( 1, 2 ), b( 1, 3 ), work, rwork, nout )
991 WRITE( nout, fmt = 9989 )path
994 ELSE IF(
lsamen( 2, c2,
'TB' ) )
THEN
999 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1002 CALL zchktb( dotype, nn, nval, nns, nsval, thresh, tsterr,
1003 $ lda, a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
1004 $ b( 1, 2 ), b( 1, 3 ), work, rwork, nout )
1006 WRITE( nout, fmt = 9989 )path
1009 ELSE IF(
lsamen( 2, c2,
'QR' ) )
THEN
1014 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1017 CALL zchkqr( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1018 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1019 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1020 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1021 $ work, rwork, iwork, nout )
1023 WRITE( nout, fmt = 9989 )path
1026 ELSE IF(
lsamen( 2, c2,
'LQ' ) )
THEN
1031 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1034 CALL zchklq( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1035 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1036 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1037 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1038 $ work, rwork, nout )
1040 WRITE( nout, fmt = 9989 )path
1043 ELSE IF(
lsamen( 2, c2,
'QL' ) )
THEN
1048 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1051 CALL zchkql( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1052 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1053 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1054 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1055 $ work, rwork, nout )
1057 WRITE( nout, fmt = 9989 )path
1060 ELSE IF(
lsamen( 2, c2,
'RQ' ) )
THEN
1065 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1068 CALL zchkrq( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1069 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1070 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1071 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1072 $ work, rwork, iwork, nout )
1074 WRITE( nout, fmt = 9989 )path
1077 ELSE IF(
lsamen( 2, c2,
'EQ' ) )
THEN
1083 CALL zchkeq( threq, nout )
1085 WRITE( nout, fmt = 9989 )path
1088 ELSE IF(
lsamen( 2, c2,
'TZ' ) )
THEN
1093 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1096 CALL zchktz( dotype, nm, mval, nn, nval, thresh, tsterr,
1097 $ a( 1, 1 ), a( 1, 2 ), s( 1 ),
1098 $ b( 1, 1 ), work, rwork, nout )
1100 WRITE( nout, fmt = 9989 )path
1103 ELSE IF(
lsamen( 2, c2,
'QP' ) )
THEN
1108 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1111 CALL zchkq3( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1112 $ thresh, a( 1, 1 ), a( 1, 2 ), s( 1 ),
1113 $ b( 1, 1 ), work, rwork, iwork,
1116 WRITE( nout, fmt = 9989 )path
1119 ELSE IF(
lsamen( 2, c2,
'QK' ) )
THEN
1124 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1127 CALL zchkqp3rk( dotype, nm, mval, nn, nval, nns, nsval,
1128 $ nnb, nbval, nxval, thresh, a( 1, 1 ),
1129 $ a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
1130 $ s( 1 ), b( 1, 4 ),
1131 $ work, rwork, iwork, nout )
1133 WRITE( nout, fmt = 9989 )path
1136 ELSE IF(
lsamen( 2, c2,
'LS' ) )
THEN
1141 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1144 CALL zdrvls( dotype, nm, mval, nn, nval, nns, nsval, nnb,
1145 $ nbval, nxval, thresh, tsterr, a( 1, 1 ),
1146 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1147 $ s( 1 ), s( nmax+1 ), nout )
1149 WRITE( nout, fmt = 9989 )path
1153 ELSE IF(
lsamen( 2, c2,
'QT' ) )
THEN
1158 CALL zchkqrt( thresh, tsterr, nm, mval, nn, nval, nnb,
1161 WRITE( nout, fmt = 9989 )path
1164 ELSE IF(
lsamen( 2, c2,
'QX' ) )
THEN
1169 CALL zchkqrtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1172 WRITE( nout, fmt = 9989 )path
1175 ELSE IF(
lsamen( 2, c2,
'TQ' ) )
THEN
1180 CALL zchklqt( thresh, tsterr, nm, mval, nn, nval, nnb,
1183 WRITE( nout, fmt = 9989 )path
1186 ELSE IF(
lsamen( 2, c2,
'XQ' ) )
THEN
1191 CALL zchklqtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1194 WRITE( nout, fmt = 9989 )path
1197 ELSE IF(
lsamen( 2, c2,
'TS' ) )
THEN
1202 CALL zchktsqr( thresh, tsterr, nm, mval, nn, nval, nnb,
1205 WRITE( nout, fmt = 9989 )path
1208 ELSE IF(
lsamen( 2, c2,
'TQ' ) )
THEN
1213 CALL zchklqt( thresh, tsterr, nm, mval, nn, nval, nnb,
1216 WRITE( nout, fmt = 9989 )path
1219 ELSE IF(
lsamen( 2, c2,
'XQ' ) )
THEN
1224 CALL zchklqtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1227 WRITE( nout, fmt = 9989 )path
1230 ELSE IF(
lsamen( 2, c2,
'TS' ) )
THEN
1235 CALL zchktsqr( thresh, tsterr, nm, mval, nn, nval, nnb,
1238 WRITE( nout, fmt = 9989 )path
1241 ELSE IF(
lsamen( 2, c2,
'HH' ) )
THEN
1246 CALL zchkunhr_col( thresh, tsterr, nm, mval, nn, nval, nnb,
1249 WRITE( nout, fmt = 9989 ) path
1254 WRITE( nout, fmt = 9990 )path
1266 WRITE( nout, fmt = 9998 )
1267 WRITE( nout, fmt = 9997 )s2 - s1
1269 DEALLOCATE (a, stat = allocatestatus)
1270 DEALLOCATE (b, stat = allocatestatus)
1271 DEALLOCATE (rwork, stat = allocatestatus)
1272 DEALLOCATE (work, stat = allocatestatus)
1274 9999
FORMAT( /
' Execution not attempted due to input errors' )
1275 9998
FORMAT( /
' End of tests' )
1276 9997
FORMAT(
' Total time used = ', f12.2,
' seconds', / )
1277 9996
FORMAT(
' Invalid input value: ', a4,
'=', i6,
'; must be >=',
1279 9995
FORMAT(
' Invalid input value: ', a4,
'=', i6,
'; must be <=',
1281 9994
FORMAT(
' Tests of the COMPLEX*16 LAPACK routines ',
1282 $ /
' LAPACK VERSION ', i1,
'.', i1,
'.', i1,
1283 $ / /
' The following parameter values will be used:' )
1284 9993
FORMAT( 4x, a4,
': ', 10i6, / 11x, 10i6 )
1285 9992
FORMAT( /
' Routines pass computational tests if test ratio is ',
1286 $
'less than', f8.2, / )
1287 9991
FORMAT(
' Relative machine ', a,
' is taken to be', d16.6 )
1288 9990
FORMAT( / 1x, a3,
': Unrecognized path name' )
1289 9989
FORMAT( / 1x, a3,
' routines were not tested' )
1290 9988
FORMAT( / 1x, a3,
' driver routines were not tested' )
subroutine alareq(path, nmats, dotype, ntypes, nin, nout)
ALAREQ
subroutine ilaver(vers_major, vers_minor, vers_patch)
ILAVER returns the LAPACK version.
double precision function dlamch(cmach)
DLAMCH
logical function lsame(ca, cb)
LSAME
logical function lsamen(n, ca, cb)
LSAMEN
double precision function dsecnd()
DSECND Using ETIME
subroutine zchkeq(thresh, nout)
ZCHKEQ
subroutine zchkgb(dotype, nm, mval, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, a, la, afac, lafac, b, x, xact, work, rwork, iwork, nout)
ZCHKGB
subroutine zchkge(dotype, nm, mval, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZCHKGE
subroutine zchkgt(dotype, nn, nval, nns, nsval, thresh, tsterr, a, af, b, x, xact, work, rwork, iwork, nout)
ZCHKGT
subroutine zchkhe(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZCHKHE
subroutine zchkhe_aa(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZCHKHE_AA
subroutine zchkhe_aa_2stage(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZCHKHE_AA_2STAGE
subroutine zchkhe_rk(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, e, ainv, b, x, xact, work, rwork, iwork, nout)
ZCHKHE_RK
subroutine zchkhe_rook(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZCHKHE_ROOK
subroutine zchkhp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZCHKHP
subroutine zchklq(dotype, nm, mval, nn, nval, nnb, nbval, nxval, nrhs, thresh, tsterr, nmax, a, af, aq, al, ac, b, x, xact, tau, work, rwork, nout)
ZCHKLQ
subroutine zchklqt(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
ZCHKLQT
subroutine zchklqtp(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
ZCHKLQTP
subroutine zchkpb(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, nout)
ZCHKPB
subroutine zchkpo(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, nout)
ZCHKPO
subroutine zchkpp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, nout)
ZCHKPP
subroutine zchkps(dotype, nn, nval, nnb, nbval, nrank, rankval, thresh, tsterr, nmax, a, afac, perm, piv, work, rwork, nout)
ZCHKPS
subroutine zchkpt(dotype, nn, nval, nns, nsval, thresh, tsterr, a, d, e, b, x, xact, work, rwork, nout)
ZCHKPT
subroutine zchkq3(dotype, nm, mval, nn, nval, nnb, nbval, nxval, thresh, a, copya, s, tau, work, rwork, iwork, nout)
ZCHKQ3
subroutine zchkql(dotype, nm, mval, nn, nval, nnb, nbval, nxval, nrhs, thresh, tsterr, nmax, a, af, aq, al, ac, b, x, xact, tau, work, rwork, nout)
ZCHKQL
subroutine zchkqp3rk(dotype, nm, mval, nn, nval, nns, nsval, nnb, nbval, nxval, thresh, a, copya, b, copyb, s, tau, work, rwork, iwork, nout)
ZCHKQP3RK
subroutine zchkqr(dotype, nm, mval, nn, nval, nnb, nbval, nxval, nrhs, thresh, tsterr, nmax, a, af, aq, ar, ac, b, x, xact, tau, work, rwork, iwork, nout)
ZCHKQR
subroutine zchkqrt(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
ZCHKQRT
subroutine zchkqrtp(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
ZCHKQRTP
subroutine zchkrq(dotype, nm, mval, nn, nval, nnb, nbval, nxval, nrhs, thresh, tsterr, nmax, a, af, aq, ar, ac, b, x, xact, tau, work, rwork, iwork, nout)
ZCHKRQ
subroutine zchksp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZCHKSP
subroutine zchksy(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZCHKSY
subroutine zchksy_aa(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZCHKSY_AA
subroutine zchksy_aa_2stage(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZCHKSY_AA_2STAGE
subroutine zchksy_rk(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, e, ainv, b, x, xact, work, rwork, iwork, nout)
ZCHKSY_RK
subroutine zchksy_rook(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZCHKSY_ROOK
subroutine zchktb(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, ab, ainv, b, x, xact, work, rwork, nout)
ZCHKTB
subroutine zchktp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, ap, ainvp, b, x, xact, work, rwork, nout)
ZCHKTP
subroutine zchktr(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, ainv, b, x, xact, work, rwork, nout)
ZCHKTR
subroutine zchktsqr(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
DCHKQRT
subroutine zchktz(dotype, nm, mval, nn, nval, thresh, tsterr, a, copya, s, tau, work, rwork, nout)
ZCHKTZ
subroutine zchkunhr_col(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
ZCHKUNHR_COL
subroutine zdrvgb(dotype, nn, nval, nrhs, thresh, tsterr, a, la, afb, lafb, asav, b, bsav, x, xact, s, work, rwork, iwork, nout)
ZDRVGB
subroutine zdrvge(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, asav, b, bsav, x, xact, s, work, rwork, iwork, nout)
ZDRVGE
subroutine zdrvgt(dotype, nn, nval, nrhs, thresh, tsterr, a, af, b, x, xact, work, rwork, iwork, nout)
ZDRVGT
subroutine zdrvhe(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZDRVHE
subroutine zdrvhe_aa(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZDRVHE_AA
subroutine zdrvhe_aa_2stage(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZDRVHE_AA_2STAGE
subroutine zdrvhe_rk(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, e, ainv, b, x, xact, work, rwork, iwork, nout)
ZDRVHE_RK
subroutine zdrvhe_rook(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZDRVHE_ROOK
subroutine zdrvhp(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZDRVHP
subroutine zdrvls(dotype, nm, mval, nn, nval, nns, nsval, nnb, nbval, nxval, thresh, tsterr, a, copya, b, copyb, c, s, copys, nout)
ZDRVLS
subroutine zdrvpb(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, asav, b, bsav, x, xact, s, work, rwork, nout)
ZDRVPB
subroutine zdrvpo(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, asav, b, bsav, x, xact, s, work, rwork, nout)
ZDRVPO
subroutine zdrvpp(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, asav, b, bsav, x, xact, s, work, rwork, nout)
ZDRVPP
subroutine zdrvpt(dotype, nn, nval, nrhs, thresh, tsterr, a, d, e, b, x, xact, work, rwork, nout)
ZDRVPT
subroutine zdrvsp(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZDRVSP
subroutine zdrvsy(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZDRVSY
subroutine zdrvsy_aa(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZDRVSY_AA
subroutine zdrvsy_aa_2stage(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZDRVSY_AA_2STAGE
subroutine zdrvsy_rk(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, e, ainv, b, x, xact, work, rwork, iwork, nout)
ZDRVSY_RK
subroutine zdrvsy_rook(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
ZDRVSY_ROOK