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 s( 2*nmax )
160 INTEGER allocatestatus
161 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE:: rwork
162 COMPLEX*16,
DIMENSION(:,:),
ALLOCATABLE:: a, b, work
189 INTEGER iparms( 100 )
192 COMMON / infoc / infot, nunit, ok, lerr
193 COMMON / srnamc / srnamt
194 COMMON / claenv / iparms
197 DATA threq / 2.0d0 / , intstr /
'0123456789' /
200 ALLOCATE (rwork( 150*nmax+2*maxrhs ), stat = allocatestatus)
201 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
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 ***"
221 CALL ilaver( vers_major, vers_minor, vers_patch )
222 WRITE( nout, fmt = 9994 ) vers_major, vers_minor, vers_patch
226 READ( nin, fmt = * )nm
228 WRITE( nout, fmt = 9996 )
' NM ', nm, 1
231 ELSE IF( nm.GT.maxin )
THEN
232 WRITE( nout, fmt = 9995 )
' NM ', nm, maxin
236 READ( nin, fmt = * )( mval( i ), i = 1, nm )
238 IF( mval( i ).LT.0 )
THEN
239 WRITE( nout, fmt = 9996 )
' M ', mval( i ), 0
241 ELSE IF( mval( i ).GT.nmax )
THEN
242 WRITE( nout, fmt = 9995 )
' M ', mval( i ), nmax
247 $
WRITE( nout, fmt = 9993 )
'M ', ( mval( i ), i = 1, nm )
251 READ( nin, fmt = * )nn
253 WRITE( nout, fmt = 9996 )
' NN ', nn, 1
256 ELSE IF( nn.GT.maxin )
THEN
257 WRITE( nout, fmt = 9995 )
' NN ', nn, maxin
261 READ( nin, fmt = * )( nval( i ), i = 1, nn )
263 IF( nval( i ).LT.0 )
THEN
264 WRITE( nout, fmt = 9996 )
' N ', nval( i ), 0
266 ELSE IF( nval( i ).GT.nmax )
THEN
267 WRITE( nout, fmt = 9995 )
' N ', nval( i ), nmax
272 $
WRITE( nout, fmt = 9993 )
'N ', ( nval( i ), i = 1, nn )
276 READ( nin, fmt = * )nns
278 WRITE( nout, fmt = 9996 )
' NNS', nns, 1
281 ELSE IF( nns.GT.maxin )
THEN
282 WRITE( nout, fmt = 9995 )
' NNS', nns, maxin
286 READ( nin, fmt = * )( nsval( i ), i = 1, nns )
288 IF( nsval( i ).LT.0 )
THEN
289 WRITE( nout, fmt = 9996 )
'NRHS', nsval( i ), 0
291 ELSE IF( nsval( i ).GT.maxrhs )
THEN
292 WRITE( nout, fmt = 9995 )
'NRHS', nsval( i ), maxrhs
297 $
WRITE( nout, fmt = 9993 )
'NRHS', ( nsval( i ), i = 1, nns )
301 READ( nin, fmt = * )nnb
303 WRITE( nout, fmt = 9996 )
'NNB ', nnb, 1
306 ELSE IF( nnb.GT.maxin )
THEN
307 WRITE( nout, fmt = 9995 )
'NNB ', nnb, maxin
311 READ( nin, fmt = * )( nbval( i ), i = 1, nnb )
313 IF( nbval( i ).LT.0 )
THEN
314 WRITE( nout, fmt = 9996 )
' NB ', nbval( i ), 0
319 $
WRITE( nout, fmt = 9993 )
'NB ', ( nbval( i ), i = 1, nnb )
327 IF( nb.EQ.nbval2( j ) )
336 READ( nin, fmt = * )( nxval( i ), i = 1, nnb )
338 IF( nxval( i ).LT.0 )
THEN
339 WRITE( nout, fmt = 9996 )
' NX ', nxval( i ), 0
344 $
WRITE( nout, fmt = 9993 )
'NX ', ( nxval( i ), i = 1, nnb )
348 READ( nin, fmt = * )nrank
350 WRITE( nout, fmt = 9996 )
' NRANK ', nrank, 1
353 ELSE IF( nn.GT.maxin )
THEN
354 WRITE( nout, fmt = 9995 )
' NRANK ', nrank, maxin
358 READ( nin, fmt = * )( rankval( i ), i = 1, nrank )
360 IF( rankval( i ).LT.0 )
THEN
361 WRITE( nout, fmt = 9996 )
' RANK ', rankval( i ), 0
363 ELSE IF( rankval( i ).GT.100 )
THEN
364 WRITE( nout, fmt = 9995 )
' RANK ', rankval( i ), 100
369 $
WRITE( nout, fmt = 9993 )
'RANK % OF N',
370 $ ( rankval( i ), i = 1, nrank )
374 READ( nin, fmt = * )thresh
375 WRITE( nout, fmt = 9992 )thresh
379 READ( nin, fmt = * )tstchk
383 READ( nin, fmt = * )tstdrv
387 READ( nin, fmt = * )tsterr
390 WRITE( nout, fmt = 9999 )
396 eps =
dlamch(
'Underflow threshold' )
397 WRITE( nout, fmt = 9991 )
'underflow', eps
398 eps =
dlamch(
'Overflow threshold' )
399 WRITE( nout, fmt = 9991 )
'overflow ', eps
401 WRITE( nout, fmt = 9991 )
'precision', eps
402 WRITE( nout, fmt = * )
409 READ( nin, fmt =
'(A72)',
END = 140 )aline
417 IF( aline( i: i ).EQ.
' ' )
423 IF( c1.EQ.intstr( k: k ) )
THEN
430 nmats = nmats*10 + ic
441 IF( .NOT.
lsame( c1,
'Zomplex precision' ) )
THEN
442 WRITE( nout, fmt = 9990 )path
444 ELSE IF( nmats.LE.0 )
THEN
448 WRITE( nout, fmt = 9989 )path
450 ELSE IF(
lsamen( 2, c2,
'GE' ) )
THEN
455 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
458 CALL zchkge( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
459 $ nsval, thresh, tsterr, lda, a( 1, 1 ),
460 $ a( 1, 2 ), a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
461 $ b( 1, 3 ), work, rwork, iwork, nout )
463 WRITE( nout, fmt = 9989 )path
467 CALL zdrvge( dotype, nn, nval, nrhs, thresh, tsterr, lda,
468 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
469 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
470 $ rwork, iwork, nout )
472 WRITE( nout, fmt = 9988 )path
475 ELSE IF(
lsamen( 2, c2,
'GB' ) )
THEN
479 la = ( 2*kdmax+1 )*nmax
480 lafac = ( 3*kdmax+1 )*nmax
482 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
485 CALL zchkgb( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
486 $ nsval, thresh, tsterr, a( 1, 1 ), la,
487 $ a( 1, 3 ), lafac, b( 1, 1 ), b( 1, 2 ),
488 $ b( 1, 3 ), work, rwork, iwork, nout )
490 WRITE( nout, fmt = 9989 )path
494 CALL zdrvgb( dotype, nn, nval, nrhs, thresh, tsterr,
495 $ a( 1, 1 ), la, a( 1, 3 ), lafac, a( 1, 6 ),
496 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s,
497 $ work, rwork, iwork, nout )
499 WRITE( nout, fmt = 9988 )path
502 ELSE IF(
lsamen( 2, c2,
'GT' ) )
THEN
507 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
510 CALL zchkgt( dotype, nn, nval, nns, nsval, thresh, tsterr,
511 $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
512 $ b( 1, 3 ), work, rwork, iwork, nout )
514 WRITE( nout, fmt = 9989 )path
518 CALL zdrvgt( dotype, nn, nval, nrhs, thresh, tsterr,
519 $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
520 $ b( 1, 3 ), work, rwork, iwork, nout )
522 WRITE( nout, fmt = 9988 )path
525 ELSE IF(
lsamen( 2, c2,
'PO' ) )
THEN
530 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
533 CALL zchkpo( dotype, nn, nval, nnb2, nbval2, nns, nsval,
534 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
535 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
536 $ work, rwork, nout )
538 WRITE( nout, fmt = 9989 )path
542 CALL zdrvpo( dotype, nn, nval, nrhs, thresh, tsterr, lda,
543 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
544 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
547 WRITE( nout, fmt = 9988 )path
550 ELSE IF(
lsamen( 2, c2,
'PS' ) )
THEN
556 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
559 CALL zchkps( dotype, nn, nval, nnb2, nbval2, nrank,
560 $ rankval, thresh, tsterr, lda, a( 1, 1 ),
561 $ a( 1, 2 ), a( 1, 3 ), piv, work, rwork,
564 WRITE( nout, fmt = 9989 )path
567 ELSE IF(
lsamen( 2, c2,
'PP' ) )
THEN
572 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
575 CALL zchkpp( dotype, nn, nval, nns, nsval, thresh, tsterr,
576 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
577 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
580 WRITE( nout, fmt = 9989 )path
584 CALL zdrvpp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
585 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
586 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
589 WRITE( nout, fmt = 9988 )path
592 ELSE IF(
lsamen( 2, c2,
'PB' ) )
THEN
597 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
600 CALL zchkpb( dotype, nn, nval, nnb2, nbval2, nns, nsval,
601 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
602 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
603 $ work, rwork, nout )
605 WRITE( nout, fmt = 9989 )path
609 CALL zdrvpb( dotype, nn, nval, nrhs, thresh, tsterr, lda,
610 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
611 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
614 WRITE( nout, fmt = 9988 )path
617 ELSE IF(
lsamen( 2, c2,
'PT' ) )
THEN
622 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
625 CALL zchkpt( dotype, nn, nval, nns, nsval, thresh, tsterr,
626 $ a( 1, 1 ), s, a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
627 $ b( 1, 3 ), work, rwork, nout )
629 WRITE( nout, fmt = 9989 )path
633 CALL zdrvpt( dotype, nn, nval, nrhs, thresh, tsterr,
634 $ a( 1, 1 ), s, a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
635 $ b( 1, 3 ), work, rwork, nout )
637 WRITE( nout, fmt = 9988 )path
640 ELSE IF(
lsamen( 2, c2,
'HE' ) )
THEN
645 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
648 CALL zchkhe( dotype, nn, nval, nnb2, nbval2, nns, nsval,
649 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
650 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
651 $ work, rwork, iwork, nout )
653 WRITE( nout, fmt = 9989 )path
657 CALL zdrvhe( dotype, nn, nval, nrhs, thresh, tsterr, lda,
658 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
659 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
662 WRITE( nout, fmt = 9988 )path
665 ELSE IF(
lsamen( 2, c2,
'HR' ) )
THEN
671 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
674 CALL zchkhe_rook(dotype, nn, nval, nnb2, nbval2, nns, nsval,
675 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
676 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
677 $ work, rwork, iwork, nout )
679 WRITE( nout, fmt = 9989 )path
683 CALL zdrvhe_rook( dotype, nn, nval, nrhs, thresh, tsterr,
684 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
685 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
686 $ rwork, iwork, nout )
688 WRITE( nout, fmt = 9988 )path
691 ELSE IF(
lsamen( 2, c2,
'HK' ) )
THEN
698 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
701 CALL zchkhe_rk ( dotype, nn, nval, nnb2, nbval2, nns, nsval,
702 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
703 $ e, a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
704 $ b( 1, 3 ), work, rwork, iwork, nout )
706 WRITE( nout, fmt = 9989 )path
710 CALL zdrvhe_rk( dotype, nn, nval, nrhs, thresh, tsterr,
711 $ lda, a( 1, 1 ), a( 1, 2 ), e, a( 1, 3 ),
712 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
713 $ rwork, iwork, nout )
715 WRITE( nout, fmt = 9988 )path
718 ELSE IF(
lsamen( 2, c2,
'HA' ) )
THEN
724 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
727 CALL zchkhe_aa( dotype, nn, nval, nnb2, nbval2, nns,
728 $ nsval, thresh, tsterr, lda,
729 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
730 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
731 $ work, rwork, iwork, nout )
733 WRITE( nout, fmt = 9989 )path
737 CALL zdrvhe_aa( dotype, nn, nval, nrhs, thresh, tsterr,
738 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
739 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
740 $ work, rwork, iwork, nout )
742 WRITE( nout, fmt = 9988 )path
745 ELSE IF(
lsamen( 2, c2,
'H2' ) )
THEN
751 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
755 $ nns, nsval, thresh, tsterr, lda,
756 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
757 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
758 $ work, rwork, iwork, nout )
760 WRITE( nout, fmt = 9989 )path
765 $ dotype, nn, nval, nrhs, thresh, tsterr,
766 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
767 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
768 $ work, rwork, iwork, nout )
770 WRITE( nout, fmt = 9988 )path
774 ELSE IF(
lsamen( 2, c2,
'HP' ) )
THEN
779 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
782 CALL zchkhp( dotype, nn, nval, nns, nsval, thresh, tsterr,
783 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
784 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
787 WRITE( nout, fmt = 9989 )path
791 CALL zdrvhp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
792 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
793 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
796 WRITE( nout, fmt = 9988 )path
799 ELSE IF(
lsamen( 2, c2,
'SY' ) )
THEN
805 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
808 CALL zchksy( dotype, nn, nval, nnb2, nbval2, nns, nsval,
809 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
810 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
811 $ work, rwork, iwork, nout )
813 WRITE( nout, fmt = 9989 )path
817 CALL zdrvsy( dotype, nn, nval, nrhs, thresh, tsterr, lda,
818 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
819 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
822 WRITE( nout, fmt = 9988 )path
825 ELSE IF(
lsamen( 2, c2,
'SR' ) )
THEN
831 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
834 CALL zchksy_rook(dotype, nn, nval, nnb2, nbval2, nns, nsval,
835 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
836 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
837 $ work, rwork, iwork, nout )
839 WRITE( nout, fmt = 9989 )path
843 CALL zdrvsy_rook( dotype, nn, nval, nrhs, thresh, tsterr,
844 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
845 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
846 $ rwork, iwork, nout )
848 WRITE( nout, fmt = 9988 )path
851 ELSE IF(
lsamen( 2, c2,
'SK' ) )
THEN
858 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
861 CALL zchksy_rk( dotype, nn, nval, nnb2, nbval2, nns, nsval,
862 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
863 $ e, a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
864 $ b( 1, 3 ), work, rwork, iwork, nout )
866 WRITE( nout, fmt = 9989 )path
870 CALL zdrvsy_rk( dotype, nn, nval, nrhs, thresh, tsterr,
871 $ lda, a( 1, 1 ), a( 1, 2 ), e, a( 1, 3 ),
872 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
873 $ rwork, iwork, nout )
875 WRITE( nout, fmt = 9988 )path
878 ELSE IF(
lsamen( 2, c2,
'SA' ) )
THEN
883 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
886 CALL zchksy_aa( dotype, nn, nval, nnb2, nbval2, nns, nsval,
887 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
888 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
889 $ b( 1, 3 ), work, rwork, iwork, nout )
891 WRITE( nout, fmt = 9989 )path
895 CALL zdrvsy_aa( dotype, nn, nval, nrhs, thresh, tsterr,
896 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
897 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
898 $ rwork, iwork, nout )
900 WRITE( nout, fmt = 9988 )path
903 ELSE IF(
lsamen( 2, c2,
'S2' ) )
THEN
909 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
913 $ nsval, thresh, tsterr, lda,
914 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
915 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
916 $ work, rwork, iwork, nout )
918 WRITE( nout, fmt = 9989 )path
923 $ dotype, nn, nval, nrhs, thresh, tsterr,
924 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
925 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
926 $ rwork, iwork, nout )
928 WRITE( nout, fmt = 9988 )path
931 ELSE IF(
lsamen( 2, c2,
'SP' ) )
THEN
937 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
940 CALL zchksp( dotype, nn, nval, nns, nsval, thresh, tsterr,
941 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
942 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
945 WRITE( nout, fmt = 9989 )path
949 CALL zdrvsp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
950 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
951 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
954 WRITE( nout, fmt = 9988 )path
957 ELSE IF(
lsamen( 2, c2,
'TR' ) )
THEN
962 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
965 CALL zchktr( dotype, nn, nval, nnb2, nbval2, nns, nsval,
966 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
967 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
970 WRITE( nout, fmt = 9989 )path
973 ELSE IF(
lsamen( 2, c2,
'TP' ) )
THEN
978 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
981 CALL zchktp( dotype, nn, nval, nns, nsval, thresh, tsterr,
982 $ lda, a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
983 $ b( 1, 2 ), b( 1, 3 ), work, rwork, nout )
985 WRITE( nout, fmt = 9989 )path
988 ELSE IF(
lsamen( 2, c2,
'TB' ) )
THEN
993 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
996 CALL zchktb( dotype, nn, nval, nns, nsval, thresh, tsterr,
997 $ lda, a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
998 $ b( 1, 2 ), b( 1, 3 ), work, rwork, nout )
1000 WRITE( nout, fmt = 9989 )path
1003 ELSE IF(
lsamen( 2, c2,
'QR' ) )
THEN
1008 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1011 CALL zchkqr( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1012 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1013 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1014 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1015 $ work, rwork, iwork, nout )
1017 WRITE( nout, fmt = 9989 )path
1020 ELSE IF(
lsamen( 2, c2,
'LQ' ) )
THEN
1025 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1028 CALL zchklq( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1029 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1030 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1031 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1032 $ work, rwork, nout )
1034 WRITE( nout, fmt = 9989 )path
1037 ELSE IF(
lsamen( 2, c2,
'QL' ) )
THEN
1042 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1045 CALL zchkql( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1046 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1047 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1048 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1049 $ work, rwork, nout )
1051 WRITE( nout, fmt = 9989 )path
1054 ELSE IF(
lsamen( 2, c2,
'RQ' ) )
THEN
1059 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1062 CALL zchkrq( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1063 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1064 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1065 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1066 $ work, rwork, iwork, nout )
1068 WRITE( nout, fmt = 9989 )path
1071 ELSE IF(
lsamen( 2, c2,
'EQ' ) )
THEN
1077 CALL zchkeq( threq, nout )
1079 WRITE( nout, fmt = 9989 )path
1082 ELSE IF(
lsamen( 2, c2,
'TZ' ) )
THEN
1087 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1090 CALL zchktz( dotype, nm, mval, nn, nval, thresh, tsterr,
1091 $ a( 1, 1 ), a( 1, 2 ), s( 1 ),
1092 $ b( 1, 1 ), work, rwork, nout )
1094 WRITE( nout, fmt = 9989 )path
1097 ELSE IF(
lsamen( 2, c2,
'QP' ) )
THEN
1102 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1105 CALL zchkq3( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1106 $ thresh, a( 1, 1 ), a( 1, 2 ), s( 1 ),
1107 $ b( 1, 1 ), work, rwork, iwork,
1110 WRITE( nout, fmt = 9989 )path
1113 ELSE IF(
lsamen( 2, c2,
'LS' ) )
THEN
1118 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1121 CALL zdrvls( dotype, nm, mval, nn, nval, nns, nsval, nnb,
1122 $ nbval, nxval, thresh, tsterr, a( 1, 1 ),
1123 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1124 $ s( 1 ), s( nmax+1 ), nout )
1126 WRITE( nout, fmt = 9989 )path
1130 ELSE IF(
lsamen( 2, c2,
'QT' ) )
THEN
1135 CALL zchkqrt( thresh, tsterr, nm, mval, nn, nval, nnb,
1138 WRITE( nout, fmt = 9989 )path
1141 ELSE IF(
lsamen( 2, c2,
'QX' ) )
THEN
1146 CALL zchkqrtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1149 WRITE( nout, fmt = 9989 )path
1152 ELSE IF(
lsamen( 2, c2,
'TQ' ) )
THEN
1157 CALL zchklqt( thresh, tsterr, nm, mval, nn, nval, nnb,
1160 WRITE( nout, fmt = 9989 )path
1163 ELSE IF(
lsamen( 2, c2,
'XQ' ) )
THEN
1168 CALL zchklqtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1171 WRITE( nout, fmt = 9989 )path
1174 ELSE IF(
lsamen( 2, c2,
'TS' ) )
THEN
1179 CALL zchktsqr( thresh, tsterr, nm, mval, nn, nval, nnb,
1182 WRITE( nout, fmt = 9989 )path
1185 ELSE IF(
lsamen( 2, c2,
'TQ' ) )
THEN
1190 CALL zchklqt( thresh, tsterr, nm, mval, nn, nval, nnb,
1193 WRITE( nout, fmt = 9989 )path
1196 ELSE IF(
lsamen( 2, c2,
'XQ' ) )
THEN
1201 CALL zchklqtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1204 WRITE( nout, fmt = 9989 )path
1207 ELSE IF(
lsamen( 2, c2,
'TS' ) )
THEN
1212 CALL zchktsqr( thresh, tsterr, nm, mval, nn, nval, nnb,
1215 WRITE( nout, fmt = 9989 )path
1218 ELSE IF(
lsamen( 2, c2,
'HH' ) )
THEN
1223 CALL zchkunhr_col( thresh, tsterr, nm, mval, nn, nval, nnb,
1226 WRITE( nout, fmt = 9989 ) path
1231 WRITE( nout, fmt = 9990 )path
1243 WRITE( nout, fmt = 9998 )
1244 WRITE( nout, fmt = 9997 )s2 - s1
1246 DEALLOCATE (a, stat = allocatestatus)
1247 DEALLOCATE (b, stat = allocatestatus)
1248 DEALLOCATE (rwork, stat = allocatestatus)
1249 DEALLOCATE (work, stat = allocatestatus)
1251 9999
FORMAT( /
' Execution not attempted due to input errors' )
1252 9998
FORMAT( /
' End of tests' )
1253 9997
FORMAT(
' Total time used = ', f12.2,
' seconds', / )
1254 9996
FORMAT(
' Invalid input value: ', a4,
'=', i6,
'; must be >=',
1256 9995
FORMAT(
' Invalid input value: ', a4,
'=', i6,
'; must be <=',
1258 9994
FORMAT(
' Tests of the COMPLEX*16 LAPACK routines ',
1259 $ /
' LAPACK VERSION ', i1,
'.', i1,
'.', i1,
1260 $ / /
' The following parameter values will be used:' )
1261 9993
FORMAT( 4x, a4,
': ', 10i6, / 11x, 10i6 )
1262 9992
FORMAT( /
' Routines pass computational tests if test ratio is ',
1263 $
'less than', f8.2, / )
1264 9991
FORMAT(
' Relative machine ', a,
' is taken to be', d16.6 )
1265 9990
FORMAT( / 1x, a3,
': Unrecognized path name' )
1266 9989
FORMAT( / 1x, a3,
' routines were not tested' )
1267 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.