126 parameter( nmax = 132 )
128 parameter( maxin = 12 )
130 parameter( maxrhs = 16 )
132 parameter( matmax = 30 )
134 parameter( nin = 5, nout = 6 )
136 parameter( kdmax = nmax+( nmax+1 ) / 4 )
139 LOGICAL fatal, tstchk, tstdrv, tsterr
145 INTEGER i, ic, j, k, la, lafac, lda, nb, nm, nmats, nn,
146 $ nnb, nnb2, nns, nrhs, ntypes, nrank,
147 $ vers_major, vers_minor, vers_patch
148 DOUBLE PRECISION eps, s1, s2, threq, thresh
151 LOGICAL dotype( matmax )
152 INTEGER iwork( 25*nmax ), mval( maxin ),
153 $ nbval( maxin ), nbval2( maxin ),
154 $ nsval( maxin ), nval( maxin ), nxval( maxin ),
155 $ rankval( maxin ), piv( nmax )
156 DOUBLE PRECISION rwork( 150*nmax+2*maxrhs ), s( 2*nmax )
157 COMPLEX*16 a( ( kdmax+1 )*nmax, 7 ), b( nmax*maxrhs, 4 ),
158 $ e( nmax ), work( nmax, nmax+maxrhs+10 )
185 INTEGER iparms( 100 )
188 COMMON / infoc / infot, nunit, ok, lerr
189 COMMON / srnamc / srnamt
190 COMMON / claenv / iparms
193 DATA threq / 2.0d0 / , intstr /
'0123456789' /
207 CALL ilaver( vers_major, vers_minor, vers_patch )
208 WRITE( nout, fmt = 9994 ) vers_major, vers_minor, vers_patch
212 READ( nin, fmt = * )nm
214 WRITE( nout, fmt = 9996 )
' NM ', nm, 1
217 ELSE IF( nm.GT.maxin )
THEN
218 WRITE( nout, fmt = 9995 )
' NM ', nm, maxin
222 READ( nin, fmt = * )( mval( i ), i = 1, nm )
224 IF( mval( i ).LT.0 )
THEN
225 WRITE( nout, fmt = 9996 )
' M ', mval( i ), 0
227 ELSE IF( mval( i ).GT.nmax )
THEN
228 WRITE( nout, fmt = 9995 )
' M ', mval( i ), nmax
233 $
WRITE( nout, fmt = 9993 )
'M ', ( mval( i ), i = 1, nm )
237 READ( nin, fmt = * )nn
239 WRITE( nout, fmt = 9996 )
' NN ', nn, 1
242 ELSE IF( nn.GT.maxin )
THEN
243 WRITE( nout, fmt = 9995 )
' NN ', nn, maxin
247 READ( nin, fmt = * )( nval( i ), i = 1, nn )
249 IF( nval( i ).LT.0 )
THEN
250 WRITE( nout, fmt = 9996 )
' N ', nval( i ), 0
252 ELSE IF( nval( i ).GT.nmax )
THEN
253 WRITE( nout, fmt = 9995 )
' N ', nval( i ), nmax
258 $
WRITE( nout, fmt = 9993 )
'N ', ( nval( i ), i = 1, nn )
262 READ( nin, fmt = * )nns
264 WRITE( nout, fmt = 9996 )
' NNS', nns, 1
267 ELSE IF( nns.GT.maxin )
THEN
268 WRITE( nout, fmt = 9995 )
' NNS', nns, maxin
272 READ( nin, fmt = * )( nsval( i ), i = 1, nns )
274 IF( nsval( i ).LT.0 )
THEN
275 WRITE( nout, fmt = 9996 )
'NRHS', nsval( i ), 0
277 ELSE IF( nsval( i ).GT.maxrhs )
THEN
278 WRITE( nout, fmt = 9995 )
'NRHS', nsval( i ), maxrhs
283 $
WRITE( nout, fmt = 9993 )
'NRHS', ( nsval( i ), i = 1, nns )
287 READ( nin, fmt = * )nnb
289 WRITE( nout, fmt = 9996 )
'NNB ', nnb, 1
292 ELSE IF( nnb.GT.maxin )
THEN
293 WRITE( nout, fmt = 9995 )
'NNB ', nnb, maxin
297 READ( nin, fmt = * )( nbval( i ), i = 1, nnb )
299 IF( nbval( i ).LT.0 )
THEN
300 WRITE( nout, fmt = 9996 )
' NB ', nbval( i ), 0
305 $
WRITE( nout, fmt = 9993 )
'NB ', ( nbval( i ), i = 1, nnb )
313 IF( nb.EQ.nbval2( j ) )
322 READ( nin, fmt = * )( nxval( i ), i = 1, nnb )
324 IF( nxval( i ).LT.0 )
THEN
325 WRITE( nout, fmt = 9996 )
' NX ', nxval( i ), 0
330 $
WRITE( nout, fmt = 9993 )
'NX ', ( nxval( i ), i = 1, nnb )
334 READ( nin, fmt = * )nrank
336 WRITE( nout, fmt = 9996 )
' NRANK ', nrank, 1
339 ELSE IF( nn.GT.maxin )
THEN
340 WRITE( nout, fmt = 9995 )
' NRANK ', nrank, maxin
344 READ( nin, fmt = * )( rankval( i ), i = 1, nrank )
346 IF( rankval( i ).LT.0 )
THEN
347 WRITE( nout, fmt = 9996 )
' RANK ', rankval( i ), 0
349 ELSE IF( rankval( i ).GT.100 )
THEN
350 WRITE( nout, fmt = 9995 )
' RANK ', rankval( i ), 100
355 $
WRITE( nout, fmt = 9993 )
'RANK % OF N',
356 $ ( rankval( i ), i = 1, nrank )
360 READ( nin, fmt = * )thresh
361 WRITE( nout, fmt = 9992 )thresh
365 READ( nin, fmt = * )tstchk
369 READ( nin, fmt = * )tstdrv
373 READ( nin, fmt = * )tsterr
376 WRITE( nout, fmt = 9999 )
382 eps =
dlamch(
'Underflow threshold' )
383 WRITE( nout, fmt = 9991 )
'underflow', eps
384 eps =
dlamch(
'Overflow threshold' )
385 WRITE( nout, fmt = 9991 )
'overflow ', eps
387 WRITE( nout, fmt = 9991 )
'precision', eps
388 WRITE( nout, fmt = * )
395 READ( nin, fmt =
'(A72)',
END = 140 )aline
403 IF( aline( i: i ).EQ.
' ' )
409 IF( c1.EQ.intstr( k: k ) )
THEN
416 nmats = nmats*10 + ic
427 IF( .NOT.
lsame( c1,
'Zomplex precision' ) )
THEN
428 WRITE( nout, fmt = 9990 )path
430 ELSE IF( nmats.LE.0 )
THEN
434 WRITE( nout, fmt = 9989 )path
436 ELSE IF(
lsamen( 2, c2,
'GE' ) )
THEN
441 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
444 CALL zchkge( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
445 $ nsval, thresh, tsterr, lda, a( 1, 1 ),
446 $ a( 1, 2 ), a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
447 $ b( 1, 3 ), work, rwork, iwork, nout )
449 WRITE( nout, fmt = 9989 )path
453 CALL zdrvge( dotype, nn, nval, nrhs, thresh, tsterr, lda,
454 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
455 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
456 $ rwork, iwork, nout )
458 WRITE( nout, fmt = 9988 )path
461 ELSE IF(
lsamen( 2, c2,
'GB' ) )
THEN
465 la = ( 2*kdmax+1 )*nmax
466 lafac = ( 3*kdmax+1 )*nmax
468 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
471 CALL zchkgb( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
472 $ nsval, thresh, tsterr, a( 1, 1 ), la,
473 $ a( 1, 3 ), lafac, b( 1, 1 ), b( 1, 2 ),
474 $ b( 1, 3 ), work, rwork, iwork, nout )
476 WRITE( nout, fmt = 9989 )path
480 CALL zdrvgb( dotype, nn, nval, nrhs, thresh, tsterr,
481 $ a( 1, 1 ), la, a( 1, 3 ), lafac, a( 1, 6 ),
482 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s,
483 $ work, rwork, iwork, nout )
485 WRITE( nout, fmt = 9988 )path
488 ELSE IF(
lsamen( 2, c2,
'GT' ) )
THEN
493 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
496 CALL zchkgt( dotype, nn, nval, nns, nsval, thresh, tsterr,
497 $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
498 $ b( 1, 3 ), work, rwork, iwork, nout )
500 WRITE( nout, fmt = 9989 )path
504 CALL zdrvgt( dotype, nn, nval, nrhs, thresh, tsterr,
505 $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
506 $ b( 1, 3 ), work, rwork, iwork, nout )
508 WRITE( nout, fmt = 9988 )path
511 ELSE IF(
lsamen( 2, c2,
'PO' ) )
THEN
516 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
519 CALL zchkpo( dotype, nn, nval, nnb2, nbval2, nns, nsval,
520 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
521 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
522 $ work, rwork, nout )
524 WRITE( nout, fmt = 9989 )path
528 CALL zdrvpo( dotype, nn, nval, nrhs, thresh, tsterr, lda,
529 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
530 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
533 WRITE( nout, fmt = 9988 )path
536 ELSE IF(
lsamen( 2, c2,
'PS' ) )
THEN
542 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
545 CALL zchkps( dotype, nn, nval, nnb2, nbval2, nrank,
546 $ rankval, thresh, tsterr, lda, a( 1, 1 ),
547 $ a( 1, 2 ), a( 1, 3 ), piv, work, rwork,
550 WRITE( nout, fmt = 9989 )path
553 ELSE IF(
lsamen( 2, c2,
'PP' ) )
THEN
558 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
561 CALL zchkpp( dotype, nn, nval, nns, nsval, thresh, tsterr,
562 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
563 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
566 WRITE( nout, fmt = 9989 )path
570 CALL zdrvpp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
571 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
572 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
575 WRITE( nout, fmt = 9988 )path
578 ELSE IF(
lsamen( 2, c2,
'PB' ) )
THEN
583 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
586 CALL zchkpb( dotype, nn, nval, nnb2, nbval2, nns, nsval,
587 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
588 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
589 $ work, rwork, nout )
591 WRITE( nout, fmt = 9989 )path
595 CALL zdrvpb( dotype, nn, nval, nrhs, thresh, tsterr, lda,
596 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
597 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
600 WRITE( nout, fmt = 9988 )path
603 ELSE IF(
lsamen( 2, c2,
'PT' ) )
THEN
608 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
611 CALL zchkpt( dotype, nn, nval, nns, nsval, thresh, tsterr,
612 $ a( 1, 1 ), s, a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
613 $ b( 1, 3 ), work, rwork, nout )
615 WRITE( nout, fmt = 9989 )path
619 CALL zdrvpt( dotype, nn, nval, nrhs, thresh, tsterr,
620 $ a( 1, 1 ), s, a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
621 $ b( 1, 3 ), work, rwork, nout )
623 WRITE( nout, fmt = 9988 )path
626 ELSE IF(
lsamen( 2, c2,
'HE' ) )
THEN
631 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
634 CALL zchkhe( dotype, nn, nval, nnb2, nbval2, nns, nsval,
635 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
636 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
637 $ work, rwork, iwork, nout )
639 WRITE( nout, fmt = 9989 )path
643 CALL zdrvhe( dotype, nn, nval, nrhs, thresh, tsterr, lda,
644 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
645 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
648 WRITE( nout, fmt = 9988 )path
651 ELSE IF(
lsamen( 2, c2,
'HR' ) )
THEN
657 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
660 CALL zchkhe_rook(dotype, nn, nval, nnb2, nbval2, nns, nsval,
661 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
662 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
663 $ work, rwork, iwork, nout )
665 WRITE( nout, fmt = 9989 )path
669 CALL zdrvhe_rook( dotype, nn, nval, nrhs, thresh, tsterr,
670 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
671 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
672 $ rwork, iwork, nout )
674 WRITE( nout, fmt = 9988 )path
677 ELSE IF(
lsamen( 2, c2,
'HK' ) )
THEN
684 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
687 CALL zchkhe_rk ( dotype, nn, nval, nnb2, nbval2, nns, nsval,
688 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
689 $ e, a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
690 $ b( 1, 3 ), work, rwork, iwork, nout )
692 WRITE( nout, fmt = 9989 )path
696 CALL zdrvhe_rk( dotype, nn, nval, nrhs, thresh, tsterr,
697 $ lda, a( 1, 1 ), a( 1, 2 ), e, a( 1, 3 ),
698 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
699 $ rwork, iwork, nout )
701 WRITE( nout, fmt = 9988 )path
704 ELSE IF(
lsamen( 2, c2,
'HA' ) )
THEN
710 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
713 CALL zchkhe_aa( dotype, nn, nval, nnb2, nbval2, nns,
714 $ nsval, thresh, tsterr, lda,
715 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
716 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
717 $ work, rwork, iwork, nout )
719 WRITE( nout, fmt = 9989 )path
723 CALL zdrvhe_aa( dotype, nn, nval, nrhs, thresh, tsterr,
724 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
725 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
726 $ work, rwork, iwork, nout )
728 WRITE( nout, fmt = 9988 )path
731 ELSE IF(
lsamen( 2, c2,
'H2' ) )
THEN
737 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
741 $ nns, nsval, thresh, tsterr, lda,
742 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
743 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
744 $ work, rwork, iwork, nout )
746 WRITE( nout, fmt = 9989 )path
751 $ dotype, nn, nval, nrhs, thresh, tsterr,
752 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
753 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
754 $ work, rwork, iwork, nout )
756 WRITE( nout, fmt = 9988 )path
760 ELSE IF(
lsamen( 2, c2,
'HP' ) )
THEN
765 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
768 CALL zchkhp( dotype, nn, nval, nns, nsval, thresh, tsterr,
769 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
770 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
773 WRITE( nout, fmt = 9989 )path
777 CALL zdrvhp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
778 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
779 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
782 WRITE( nout, fmt = 9988 )path
785 ELSE IF(
lsamen( 2, c2,
'SY' ) )
THEN
791 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
794 CALL zchksy( dotype, nn, nval, nnb2, nbval2, nns, nsval,
795 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
796 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
797 $ work, rwork, iwork, nout )
799 WRITE( nout, fmt = 9989 )path
803 CALL zdrvsy( dotype, nn, nval, nrhs, thresh, tsterr, lda,
804 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
805 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
808 WRITE( nout, fmt = 9988 )path
811 ELSE IF(
lsamen( 2, c2,
'SR' ) )
THEN
817 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
820 CALL zchksy_rook(dotype, nn, nval, nnb2, nbval2, nns, nsval,
821 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
822 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
823 $ work, rwork, iwork, nout )
825 WRITE( nout, fmt = 9989 )path
829 CALL zdrvsy_rook( dotype, nn, nval, nrhs, thresh, tsterr,
830 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
831 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
832 $ rwork, iwork, nout )
834 WRITE( nout, fmt = 9988 )path
837 ELSE IF(
lsamen( 2, c2,
'SK' ) )
THEN
844 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
847 CALL zchksy_rk( dotype, nn, nval, nnb2, nbval2, nns, nsval,
848 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
849 $ e, a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
850 $ b( 1, 3 ), work, rwork, iwork, nout )
852 WRITE( nout, fmt = 9989 )path
856 CALL zdrvsy_rk( dotype, nn, nval, nrhs, thresh, tsterr,
857 $ lda, a( 1, 1 ), a( 1, 2 ), e, a( 1, 3 ),
858 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
859 $ rwork, iwork, nout )
861 WRITE( nout, fmt = 9988 )path
864 ELSE IF(
lsamen( 2, c2,
'SA' ) )
THEN
869 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
872 CALL zchksy_aa( dotype, nn, nval, nnb2, nbval2, nns, nsval,
873 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
874 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
875 $ b( 1, 3 ), work, rwork, iwork, nout )
877 WRITE( nout, fmt = 9989 )path
881 CALL zdrvsy_aa( dotype, nn, nval, nrhs, thresh, tsterr,
882 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
883 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
884 $ rwork, iwork, nout )
886 WRITE( nout, fmt = 9988 )path
889 ELSE IF(
lsamen( 2, c2,
'S2' ) )
THEN
895 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
899 $ nsval, thresh, tsterr, lda,
900 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
901 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
902 $ work, rwork, iwork, nout )
904 WRITE( nout, fmt = 9989 )path
909 $ dotype, nn, nval, nrhs, thresh, tsterr,
910 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
911 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
912 $ rwork, iwork, nout )
914 WRITE( nout, fmt = 9988 )path
917 ELSE IF(
lsamen( 2, c2,
'SP' ) )
THEN
923 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
926 CALL zchksp( dotype, nn, nval, nns, nsval, thresh, tsterr,
927 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
928 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
931 WRITE( nout, fmt = 9989 )path
935 CALL zdrvsp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
936 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
937 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
940 WRITE( nout, fmt = 9988 )path
943 ELSE IF(
lsamen( 2, c2,
'TR' ) )
THEN
948 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
951 CALL zchktr( dotype, nn, nval, nnb2, nbval2, nns, nsval,
952 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
953 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
956 WRITE( nout, fmt = 9989 )path
959 ELSE IF(
lsamen( 2, c2,
'TP' ) )
THEN
964 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
967 CALL zchktp( dotype, nn, nval, nns, nsval, thresh, tsterr,
968 $ lda, a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
969 $ b( 1, 2 ), b( 1, 3 ), work, rwork, nout )
971 WRITE( nout, fmt = 9989 )path
974 ELSE IF(
lsamen( 2, c2,
'TB' ) )
THEN
979 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
982 CALL zchktb( dotype, nn, nval, nns, nsval, thresh, tsterr,
983 $ lda, a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
984 $ b( 1, 2 ), b( 1, 3 ), work, rwork, nout )
986 WRITE( nout, fmt = 9989 )path
989 ELSE IF(
lsamen( 2, c2,
'QR' ) )
THEN
994 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
997 CALL zchkqr( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
998 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
999 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1000 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1001 $ work, rwork, iwork, nout )
1003 WRITE( nout, fmt = 9989 )path
1006 ELSE IF(
lsamen( 2, c2,
'LQ' ) )
THEN
1011 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1014 CALL zchklq( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1015 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1016 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1017 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1018 $ work, rwork, nout )
1020 WRITE( nout, fmt = 9989 )path
1023 ELSE IF(
lsamen( 2, c2,
'QL' ) )
THEN
1028 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1031 CALL zchkql( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1032 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1033 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1034 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1035 $ work, rwork, nout )
1037 WRITE( nout, fmt = 9989 )path
1040 ELSE IF(
lsamen( 2, c2,
'RQ' ) )
THEN
1045 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1048 CALL zchkrq( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1049 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1050 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1051 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1052 $ work, rwork, iwork, nout )
1054 WRITE( nout, fmt = 9989 )path
1057 ELSE IF(
lsamen( 2, c2,
'EQ' ) )
THEN
1063 CALL zchkeq( threq, nout )
1065 WRITE( nout, fmt = 9989 )path
1068 ELSE IF(
lsamen( 2, c2,
'TZ' ) )
THEN
1073 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1076 CALL zchktz( dotype, nm, mval, nn, nval, thresh, tsterr,
1077 $ a( 1, 1 ), a( 1, 2 ), s( 1 ),
1078 $ b( 1, 1 ), work, rwork, nout )
1080 WRITE( nout, fmt = 9989 )path
1083 ELSE IF(
lsamen( 2, c2,
'QP' ) )
THEN
1088 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1091 CALL zchkq3( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1092 $ thresh, a( 1, 1 ), a( 1, 2 ), s( 1 ),
1093 $ b( 1, 1 ), work, rwork, iwork,
1096 WRITE( nout, fmt = 9989 )path
1099 ELSE IF(
lsamen( 2, c2,
'LS' ) )
THEN
1104 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1107 CALL zdrvls( dotype, nm, mval, nn, nval, nns, nsval, nnb,
1108 $ nbval, nxval, thresh, tsterr, a( 1, 1 ),
1109 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1110 $ s( 1 ), s( nmax+1 ), nout )
1112 WRITE( nout, fmt = 9989 )path
1116 ELSE IF(
lsamen( 2, c2,
'QT' ) )
THEN
1121 CALL zchkqrt( thresh, tsterr, nm, mval, nn, nval, nnb,
1124 WRITE( nout, fmt = 9989 )path
1127 ELSE IF(
lsamen( 2, c2,
'QX' ) )
THEN
1132 CALL zchkqrtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1135 WRITE( nout, fmt = 9989 )path
1138 ELSE IF(
lsamen( 2, c2,
'TQ' ) )
THEN
1143 CALL zchklqt( thresh, tsterr, nm, mval, nn, nval, nnb,
1146 WRITE( nout, fmt = 9989 )path
1149 ELSE IF(
lsamen( 2, c2,
'XQ' ) )
THEN
1154 CALL zchklqtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1157 WRITE( nout, fmt = 9989 )path
1160 ELSE IF(
lsamen( 2, c2,
'TS' ) )
THEN
1165 CALL zchktsqr( thresh, tsterr, nm, mval, nn, nval, nnb,
1168 WRITE( nout, fmt = 9989 )path
1171 ELSE IF(
lsamen( 2, c2,
'TQ' ) )
THEN
1176 CALL zchklqt( thresh, tsterr, nm, mval, nn, nval, nnb,
1179 WRITE( nout, fmt = 9989 )path
1182 ELSE IF(
lsamen( 2, c2,
'XQ' ) )
THEN
1187 CALL zchklqtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1190 WRITE( nout, fmt = 9989 )path
1193 ELSE IF(
lsamen( 2, c2,
'TS' ) )
THEN
1198 CALL zchktsqr( thresh, tsterr, nm, mval, nn, nval, nnb,
1201 WRITE( nout, fmt = 9989 )path
1204 ELSE IF(
lsamen( 2, c2,
'HH' ) )
THEN
1209 CALL zchkunhr_col( thresh, tsterr, nm, mval, nn, nval, nnb,
1212 WRITE( nout, fmt = 9989 ) path
1217 WRITE( nout, fmt = 9990 )path
1229 WRITE( nout, fmt = 9998 )
1230 WRITE( nout, fmt = 9997 )s2 - s1
1232 9999
FORMAT( /
' Execution not attempted due to input errors' )
1233 9998
FORMAT( /
' End of tests' )
1234 9997
FORMAT(
' Total time used = ', f12.2,
' seconds', / )
1235 9996
FORMAT(
' Invalid input value: ', a4,
'=', i6,
'; must be >=',
1237 9995
FORMAT(
' Invalid input value: ', a4,
'=', i6,
'; must be <=',
1239 9994
FORMAT(
' Tests of the COMPLEX*16 LAPACK routines ',
1240 $ /
' LAPACK VERSION ', i1,
'.', i1,
'.', i1,
1241 $ / /
' The following parameter values will be used:' )
1242 9993
FORMAT( 4x, a4,
': ', 10i6, / 11x, 10i6 )
1243 9992
FORMAT( /
' Routines pass computational tests if test ratio is ',
1244 $
'less than', f8.2, / )
1245 9991
FORMAT(
' Relative machine ', a,
' is taken to be', d16.6 )
1246 9990
FORMAT( / 1x, a3,
': Unrecognized path name' )
1247 9989
FORMAT( / 1x, a3,
' routines were not tested' )
1248 9988
FORMAT( / 1x, a3,
' driver routines were not tested' )
double precision function dlamch(CMACH)
DLAMCH
double precision function dsecnd()
DSECND Using ETIME
logical function lsamen(N, CA, CB)
LSAMEN
logical function lsame(CA, CB)
LSAME
subroutine alareq(PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT)
ALAREQ
subroutine zchktr(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AINV, B, X, XACT, WORK, RWORK, NOUT)
ZCHKTR
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 zdrvpb(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, NOUT)
ZDRVPB
subroutine zchkps(DOTYPE, NN, NVAL, NNB, NBVAL, NRANK, RANKVAL, THRESH, TSTERR, NMAX, A, AFAC, PERM, PIV, WORK, RWORK, NOUT)
ZCHKPS
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 zdrvsy(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSY
subroutine zchktp(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, AP, AINVP, B, X, XACT, WORK, RWORK, NOUT)
ZCHKTP
subroutine zdrvhp(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHP
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 zdrvsy_rk(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, E, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSY_RK
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 zdrvpp(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, NOUT)
ZDRVPP
subroutine zdrvsp(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSP
subroutine zdrvge(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, IWORK, NOUT)
ZDRVGE
subroutine zchkqrt(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
ZCHKQRT
subroutine zdrvpt(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, A, D, E, B, X, XACT, WORK, RWORK, NOUT)
ZDRVPT
subroutine zchkpp(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, NOUT)
ZCHKPP
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 zchktz(DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR, A, COPYA, S, TAU, WORK, RWORK, NOUT)
ZCHKTZ
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 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 zchkgt(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, A, AF, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKGT
subroutine zdrvsy_aa(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSY_AA
subroutine zdrvhe(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHE
subroutine zdrvgb(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, A, LA, AFB, LAFB, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, IWORK, NOUT)
ZDRVGB
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 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 zchkeq(THRESH, NOUT)
ZCHKEQ
subroutine zdrvhe_rook(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHE_ROOK
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 zchktb(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, AB, AINV, B, X, XACT, WORK, RWORK, NOUT)
ZCHKTB
subroutine zdrvhe_aa(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHE_AA
subroutine zchkhp(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKHP
subroutine zdrvls(DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, NNB, NBVAL, NXVAL, THRESH, TSTERR, A, COPYA, B, COPYB, C, S, COPYS, NOUT)
ZDRVLS
subroutine zdrvpo(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, ASAV, B, BSAV, X, XACT, S, WORK, RWORK, NOUT)
ZDRVPO
subroutine zchkpt(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, A, D, E, B, X, XACT, WORK, RWORK, NOUT)
ZCHKPT
subroutine zchksy(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKSY
subroutine zchkpb(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, NOUT)
ZCHKPB
subroutine zdrvsy_rook(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVSY_ROOK
subroutine zdrvgt(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, A, AF, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVGT
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 zchkunhr_col(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
ZCHKUNHR_COL
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_aa_2stage(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZDRVHE_AA_2STAGE
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 zchkqrtp(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
ZCHKQRTP
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 zchksp(DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKSP
subroutine zchkq3(DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL, THRESH, A, COPYA, S, TAU, WORK, RWORK, IWORK, NOUT)
ZCHKQ3
subroutine zchkpo(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, NOUT)
ZCHKPO
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 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 zchkhe(DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
ZCHKHE
subroutine zchktsqr(THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB, NBVAL, NOUT)
DCHKQRT
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 ilaver(VERS_MAJOR, VERS_MINOR, VERS_PATCH)
ILAVER returns the LAPACK version.