122 parameter( nmax = 132 )
124 parameter( maxin = 12 )
126 parameter( maxrhs = 16 )
128 parameter( matmax = 30 )
130 parameter( nin = 5, nout = 6 )
132 parameter( kdmax = nmax+( nmax+1 ) / 4 )
135 LOGICAL fatal, tstchk, tstdrv, tsterr
141 INTEGER i, ic, j, k, la, lafac, lda, nb, nm, nmats, nn,
142 $ nnb, nnb2, nns, nrhs, ntypes, nrank,
143 $ vers_major, vers_minor, vers_patch
144 DOUBLE PRECISION eps, , s2, threq, thresh
147 LOGICAL dotype( matmax )
148 INTEGER iwork( 25*nmax ), mval( maxin ),
149 $ nbval( maxin ), nbval2( maxin ),
150 $ nsval( maxin ), nval( maxin ), nxval( maxin ),
151 $ rankval( maxin ), piv( nmax )
152 DOUBLE PRECISION e( nmax ), s( 2*nmax )
155 INTEGER allocatestatus
156 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE :: rwork
157 DOUBLE PRECISION,
DIMENSION(:,:),
ALLOCATABLE :: a, b, work
181 INTEGER iparms( 100 )
184 COMMON / infoc / infot, nunit, ok, lerr
185 COMMON / srnamc / srnamt
186 COMMON / claenv / iparms
189 DATA threq / 2.0d0 / , intstr /
'0123456789' /
194 ALLOCATE ( a( ( kdmax+1 )*nmax, 7 ), stat = allocatestatus )
195 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
196 ALLOCATE ( b( nmax*maxrhs, 4 ), stat = allocatestatus )
197 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
198 ALLOCATE ( work( nmax, 3*nmax+maxrhs+30 ), stat = allocatestatus )
199 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
200 ALLOCATE ( rwork( 5*nmax+2*maxrhs ), stat = allocatestatus )
201 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
215 CALL ilaver( vers_major, vers_minor, vers_patch )
216 WRITE( nout, fmt = 9994 ) vers_major, vers_minor, vers_patch
220 READ( nin, fmt = * )nm
222 WRITE( nout, fmt = 9996 )
' NM ', nm, 1
225 ELSE IF( nm.GT.maxin )
THEN
226 WRITE( nout, fmt = 9995 )
' NM ', nm
230 READ( nin, fmt = * )( mval( i ), i = 1, nm )
232 IF( mval( i ).LT.0 )
THEN
233 WRITE( nout, fmt = 9996 )
' M ', mval( i ), 0
235 ELSE IF( mval( i ).GT.nmax )
THEN
236 WRITE( nout, fmt = 9995 )
' M ', mval( i ), nmax
241 $
WRITE( nout, fmt = 9993 )
'M ', ( mval( i ), i = 1, nm )
245 READ( nin, fmt = * )nn
247 WRITE( nout, fmt = 9996 )
' NN ', nn, 1
250 ELSE IF( nn.GT.maxin )
THEN
251 WRITE( nout, fmt = 9995 )
' NN ', nn, maxin
255 READ( nin, fmt = * )( nval( i ), i = 1, nn )
257 IF( nval( i ).LT.0 )
THEN
258 WRITE( nout, fmt = 9996 )
' N ', nval( i ), 0
260 ELSE IF( nval( i ).GT.nmax )
THEN
261 WRITE( nout, fmt = 9995 )
' N ', nval( i ), nmax
266 $
WRITE( nout, fmt = 9993 )
'N ', ( nval( i ), i = 1, nn )
270 READ( nin, fmt = * )nns
272 WRITE( nout, fmt = 9996 )
' NNS', nns, 1
275 ELSE IF( nns.GT.maxin )
THEN
276 WRITE( nout, fmt = 9995 )
' NNS', nns, maxin
280 READ( nin, fmt = * )( nsval( i ), i = 1, nns )
282 IF( nsval( i ).LT.0 )
THEN
283 WRITE( nout, fmt = 9996 )
'NRHS', nsval( i ), 0
285 ELSE IF( nsval( i ).GT.maxrhs )
THEN
286 WRITE( nout, fmt = 9995 )
'NRHS', nsval( i ), maxrhs
291 $
WRITE( nout, fmt = 9993 )
'NRHS', ( nsval( i ), i =
295 READ( nin, fmt = * )nnb
297 WRITE( nout, fmt = 9996 )
'NNB ', nnb, 1
300 ELSE IF( nnb.GT.maxin )
THEN
301 WRITE( nout, fmt = 9995 )
'NNB ', nnb, maxin
305 READ( nin, fmt = * )( nbval( i )
307 IF( nbval( i ).LT.0 )
THEN
308 WRITE( nout, fmt = 9996 )
' NB ', nbval( i ), 0
313 $
WRITE( nout, fmt = 9993 )
'NB ', ( nbval( i ), i = 1, nnb )
321 IF( nb.EQ.nbval2( j ) )
330 READ( nin, fmt = * )( nxval( i ), i = 1, nnb )
332 IF( nxval( i ).LT.0 )
THEN
333 WRITE( nout, fmt = 9996 )
' NX ', nxval( i ), 0
338 $
WRITE( nout, fmt = 9993 )
'NX ', ( nxval( i ), i = 1, nnb )
342 READ( nin, fmt = * )nrank
344 WRITE( nout, fmt = 9996 )
' NRANK ', nrank, 1
347 ELSE IF( nn.GT.maxin )
THEN
348 WRITE( nout, fmt = 9995 )
' NRANK ', nrank, maxin
352 READ( nin, fmt = * )( rankval( i ), i = 1, nrank )
354 IF( rankval( i ).LT.0 )
THEN
355 WRITE( nout, fmt = 9996 )
' RANK ', rankval( i ), 0
357 ELSE IF( rankval( i ).GT.100 )
THEN
358 WRITE( nout, fmt = 9995 )
' RANK ', rankval( i ), 100
363 $
WRITE( nout, fmt = 9
'RANK % OF N',
364 $ ( rankval( i ), i = 1, nrank )
368 READ( nin, fmt = * )thresh
369 WRITE( nout, fmt = 9992 )thresh
373 READ( nin, fmt = * )tstchk
377 READ( nin, fmt = * )tstdrv
381 READ( nin, fmt = * )tsterr
384 WRITE( nout, fmt = 9999 )
390 eps =
dlamch(
'Underflow threshold' )
391 WRITE( nout, fmt = 9991 )
'underflow', eps
392 eps =
dlamch(
'Overflow threshold' )
393 WRITE( nout, fmt = 9991 )
'overflow ', eps
395 WRITE( nout, fmt = 9991 )
'precision', eps
396 WRITE( nout, fmt = * )
402 READ( nin, fmt =
'(A72)',
END = 140 )aline
412 IF( aline( i: i ).EQ.
' ' )
418 IF( c1.EQ.intstr( k: k ) )
THEN
425 nmats = nmats*10 + ic
437 IF( .NOT.
lsame( c1,
'Double precision' ) )
THEN
438 WRITE( nout, fmt = 9990 )path
440 ELSE IF( nmats.LE.0 )
THEN
444 WRITE( nout, fmt = 9989 )path
446 ELSE IF(
lsamen( 2, c2,
'GE' ) )
THEN
451 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
454 CALL dchkge( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
455 $ nsval, thresh, tsterr, lda, a( 1, 1 ),
456 $ a( 1, 2 ), a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
457 $ b( 1, 3 ), work, rwork, iwork, nout )
459 WRITE( nout, fmt = 9989 )path
463 CALL ddrvge( dotype, nn, nval, nrhs, thresh, tsterr, lda,
464 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
465 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
466 $ rwork, iwork, nout )
468 WRITE( nout, fmt = 9988 )path
471 ELSE IF(
lsamen( 2, c2,
'GB' ) )
THEN
475 la = ( 2*kdmax+1 )*nmax
476 lafac = ( 3*kdmax+1 )*nmax
478 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
481 CALL dchkgb( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
482 $ nsval, thresh, tsterr, a( 1, 1 ), la,
483 $ a( 1, 3 ), lafac, b( 1, 1 ), b( 1, 2 ),
484 $ b( 1, 3 ), work, rwork, iwork, nout )
486 WRITE( nout, fmt = 9989 )path
490 CALL ddrvgb( dotype, nn, nval, nrhs, thresh, tsterr,
491 $ a( 1, 1 ), la, a( 1, 3 ), lafac, a( 1, 6 ),
492 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s,
493 $ work, rwork, iwork, nout )
495 WRITE( nout, fmt = 9988 )path
498 ELSE IF(
lsamen( 2, c2,
'GT' ) )
THEN
503 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
506 CALL dchkgt( dotype, nn, nval, nns, nsval, thresh, tsterr,
507 $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
508 $ b( 1, 3 ), work, rwork, iwork, nout )
510 WRITE( nout, fmt = 9989 )path
514 CALL ddrvgt( dotype, nn, nval, nrhs, thresh, tsterr,
515 $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
516 $ b( 1, 3 ), work, rwork, iwork, nout )
518 WRITE( nout, fmt = 9988 )path
521 ELSE IF(
lsamen( 2, c2,
'PO' ) )
THEN
526 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
529 CALL dchkpo( dotype, nn, nval, nnb2, nbval2, nns, nsval,
530 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
531 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
532 $ work, rwork, iwork, nout )
534 WRITE( nout, fmt = 9989 )path
538 CALL ddrvpo( dotype, nn, nval, nrhs, thresh, tsterr, lda,
539 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
540 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
541 $ rwork, iwork, nout )
543 WRITE( nout, fmt = 9988 )path
546 ELSE IF(
lsamen( 2, c2,
'PS' ) )
THEN
552 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
555 CALL dchkps( dotype, nn, nval, nnb2, nbval2, nrank,
556 $ rankval, thresh, tsterr, lda, a( 1, 1 ),
557 $ a( 1, 2 ), a( 1, 3 ), piv, work, rwork,
560 WRITE( nout, fmt = 9989 )path
563 ELSE IF(
lsamen( 2, c2,
'PP' ) )
THEN
568 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
571 CALL dchkpp( dotype, nn, nval, nns, nsval, thresh, tsterr,
572 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
573 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
576 WRITE( nout, fmt = 9989 )path
580 CALL ddrvpp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
581 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
582 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
583 $ rwork, iwork, nout )
585 WRITE( nout, fmt = 9988 )path
588 ELSE IF(
lsamen( 2, c2,
'PB' ) )
THEN
593 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
596 CALL dchkpb( dotype, nn, nval, nnb2, nbval2, nns, nsval,
597 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
598 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
599 $ work, rwork, iwork, nout )
601 WRITE( nout, fmt = 9989 )path
605 CALL ddrvpb( dotype, nn, nval, nrhs, thresh, tsterr, lda,
607 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
608 $ rwork, iwork, nout )
610 WRITE( nout, fmt = 9988 )path
613 ELSE IF(
lsamen( 2, c2, 'pt
' ) ) THEN
618 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
621 CALL DCHKPT( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
622 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
623 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, NOUT )
625 WRITE( NOUT, FMT = 9989 )PATH
629 CALL DDRVPT( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
630 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
631 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, NOUT )
633 WRITE( NOUT, FMT = 9988 )PATH
636 ELSE IF( LSAMEN( 2, C2, 'sy
' ) ) THEN
642 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
645 CALL DCHKSY( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
646 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
647 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
648 $ WORK, RWORK, IWORK, NOUT )
650 WRITE( NOUT, FMT = 9989 )PATH
654 CALL DDRVSY( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
655 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
656 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
659 WRITE( NOUT, FMT = 9988 )PATH
662 ELSE IF( LSAMEN( 2, C2, 'sr
' ) ) THEN
668 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
671 CALL DCHKSY_ROOK(DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
672 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
673 $ A( 1, 3 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
674 $ WORK, RWORK, IWORK, NOUT )
676 WRITE( NOUT, FMT = 9989 )PATH
680 CALL DDRVSY_ROOK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
681 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
682 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
683 $ WORK, RWORK, IWORK, NOUT )
685 WRITE( NOUT, FMT = 9988 )PATH
688 ELSE IF( LSAMEN( 2, C2, 'sk
' ) ) THEN
695 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
698 CALL DCHKSY_RK( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
699 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
700 $ E, A( 1, 3 ), B( 1, 1 ), B( 1, 2 ),
701 $ B( 1, 3 ), WORK, RWORK, IWORK, NOUT )
703 WRITE( NOUT, FMT = 9989 )PATH
707 CALL DDRVSY_RK( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
708 $ LDA, A( 1, 1 ), A( 1, 2 ), E, A( 1, 3 ),
709 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
710 $ WORK, RWORK, IWORK, NOUT )
712 WRITE( NOUT, FMT = 9988 )PATH
715 ELSE IF( LSAMEN( 2, C2, 'sa
' ) ) THEN
721 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
724 CALL DCHKSY_AA( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS,
725 $ NSVAL, THRESH, TSTERR, LDA,
726 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
727 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
728 $ WORK, RWORK, IWORK, NOUT )
730 WRITE( NOUT, FMT = 9989 )PATH
734 CALL DDRVSY_AA( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
735 $ LDA, 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 = 9988 )PATH
743 ELSE IF( LSAMEN( 2, C2, 's2
' ) ) THEN
749 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
752 CALL DCHKSY_AA_2STAGE( DOTYPE, NN, NVAL, NNB2, NBVAL2,
753 $ NNS, NSVAL, THRESH, TSTERR, LDA,
754 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
755 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
756 $ WORK, RWORK, IWORK, NOUT )
758 WRITE( NOUT, FMT = 9989 )PATH
762 CALL DDRVSY_AA_2STAGE(
763 $ DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR,
764 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
765 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
766 $ WORK, RWORK, IWORK, NOUT )
768 WRITE( NOUT, FMT = 9988 )PATH
772 ELSE IF( LSAMEN( 2, C2, 'sp
' ) ) THEN
778 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
781 CALL DCHKSP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
782 $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ),
783 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
786 WRITE( NOUT, FMT = 9989 )PATH
790 CALL DDRVSP( DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, LDA,
791 $ A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), B( 1, 1 ),
792 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
795 WRITE( NOUT, FMT = 9988 )PATH
798 ELSE IF( LSAMEN( 2, C2, 'tr
' ) ) THEN
803 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
806 CALL DCHKTR( DOTYPE, NN, NVAL, NNB2, NBVAL2, NNS, NSVAL,
807 $ THRESH, TSTERR, LDA, A( 1, 1 ), A( 1, 2 ),
808 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), WORK, RWORK,
811 WRITE( NOUT, FMT = 9989 )PATH
814 ELSE IF( LSAMEN( 2, C2, 'tp
' ) ) THEN
819 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
822 CALL DCHKTP( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
823 $ LDA, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
824 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
827 WRITE( NOUT, FMT = 9989 )PATH
830 ELSE IF( LSAMEN( 2, C2, 'tb
' ) ) THEN
835 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
838 CALL DCHKTB( DOTYPE, NN, NVAL, NNS, NSVAL, THRESH, TSTERR,
839 $ LDA, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
840 $ B( 1, 2 ), B( 1, 3 ), WORK, RWORK, IWORK,
843 WRITE( NOUT, FMT = 9989 )PATH
846 ELSE IF( LSAMEN( 2, C2, 'qr
' ) ) THEN
851 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
854 CALL DCHKQR( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
855 $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
856 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
857 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
858 $ WORK, RWORK, IWORK, NOUT )
860 WRITE( NOUT, FMT = 9989 )PATH
863 ELSE IF( LSAMEN( 2, C2, 'lq
' ) ) THEN
868 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
871 CALL DCHKLQ( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
872 $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
873 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
874 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
875 $ WORK, RWORK, NOUT )
877 WRITE( NOUT, FMT = 9989 )PATH
880 ELSE IF( LSAMEN( 2, C2, 'ql
' ) ) THEN
885 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
888 CALL DCHKQL( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
889 $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
890 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
891 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
892 $ WORK, RWORK, NOUT )
894 WRITE( NOUT, FMT = 9989 )PATH
897 ELSE IF( LSAMEN( 2, C2, 'rq
' ) ) THEN
902 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
905 CALL DCHKRQ( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
906 $ NRHS, THRESH, TSTERR, NMAX, A( 1, 1 ),
907 $ A( 1, 2 ), A( 1, 3 ), A( 1, 4 ), A( 1, 5 ),
908 $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), B( 1, 4 ),
909 $ WORK, RWORK, IWORK, NOUT )
911 WRITE( NOUT, FMT = 9989 )PATH
914 ELSE IF( LSAMEN( 2, C2, 'qp
' ) ) THEN
919 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
922 CALL DCHKQ3( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
923 $ THRESH, A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
924 $ B( 1, 3 ), WORK, IWORK, NOUT )
926 WRITE( NOUT, FMT = 9989 )PATH
929 ELSE IF( LSAMEN( 2, C2, 'tz
' ) ) THEN
934 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
937 CALL DCHKTZ( DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR,
938 $ A( 1, 1 ), A( 1, 2 ), B( 1, 1 ),
939 $ B( 1, 3 ), WORK, NOUT )
941 WRITE( NOUT, FMT = 9989 )PATH
944 ELSE IF( LSAMEN( 2, C2, 'ls
' ) ) THEN
949 CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
952 CALL DDRVLS( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL, NNB,
953 $ NBVAL, NXVAL, THRESH, TSTERR, A( 1, 1 ),
954 $ A( 1, 2 ), B( 1, 1 ), B( 1, 2 ), B( 1, 3 ),
955 $ RWORK, RWORK( NMAX+1 ), NOUT )
957 WRITE( NOUT, FMT = 9988 )PATH
960 ELSE IF( LSAMEN( 2, C2, 'eq
' ) ) THEN
966 CALL DCHKEQ( THREQ, NOUT )
968 WRITE( NOUT, FMT = 9989 )PATH
971 ELSE IF( LSAMEN( 2, C2, 'qt
' ) ) THEN
976 CALL DCHKQRT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
979 WRITE( NOUT, FMT = 9989 )PATH
982 ELSE IF( LSAMEN( 2, C2, 'qx
' ) ) THEN
987 CALL DCHKQRTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
990 WRITE( NOUT, FMT = 9989 )PATH
993 ELSE IF( LSAMEN( 2, C2, 'tq
' ) ) THEN
998 CALL DCHKLQT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
1001 WRITE( NOUT, FMT = 9989 )PATH
1004 ELSE IF( LSAMEN( 2, C2, 'xq
' ) ) THEN
1009 CALL DCHKLQTP( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
1012 WRITE( NOUT, FMT = 9989 )PATH
1015 ELSE IF( LSAMEN( 2, C2, 'ts
' ) ) THEN
1020 CALL DCHKTSQR( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
1023 WRITE( NOUT, FMT = 9989 )PATH
1026 ELSE IF( LSAMEN( 2, C2, 'hh
' ) ) THEN
1031 CALL DCHKORHR_COL( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
1034 WRITE( NOUT, FMT = 9989 ) PATH
1040 WRITE( NOUT, FMT = 9990 )PATH
1052 WRITE( NOUT, FMT = 9998 )
1053 WRITE( NOUT, FMT = 9997 )S2 - S1
1055 DEALLOCATE (A, STAT = AllocateStatus)
1056 DEALLOCATE (B, STAT = AllocateStatus)
1057 DEALLOCATE (WORK, STAT = AllocateStatus)
1058 DEALLOCATE (RWORK, STAT = AllocateStatus)
1060 9999 FORMAT( / ' execution not attempted due to input errors
' )
1061 9998 FORMAT( / ' End of tests
' )
1062 9997 FORMAT( ' Total time used =
', F12.2, ' seconds
', / )
1063 9996 FORMAT( ' Invalid input value:
', A4, '=
', I6, '; must be >=',
1065 9995
FORMAT(
' Invalid input value: ', a4,
'=', i6,
'; must be <=',
1067 9994
FORMAT(
' Tests of the DOUBLE PRECISION LAPACK routines ',
1068 $ /
' LAPACK VERSION ', i1,
'.', i1,
'.', i1,
1069 $ / /
' The following parameter values will be used:' )
1070 9993
FORMAT( 4x, a4,
': ', 10i6, / 11x, 10i6 )
1071 9992
FORMAT( /
' Routines pass computational tests if test ratio is ',
1072 $
'less than', f8.2, / )
1073 9991
FORMAT(
' Relative machine ', a,
' is taken to be', d16.6 )
1074 9990
FORMAT( / 1x, a3,
': Unrecognized path name' )
1075 9989
FORMAT( / 1x, a3,
' routines were not tested' )
1076 9988
FORMAT( / 1x, a3,
' driver routines were not tested' )
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 dchkpt(dotype, nn, nval, nns, nsval, thresh, tsterr, a, d, e, b, x, xact, work, rwork, nout)
DCHKPT
subroutine ddrvsy(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DDRVSY
subroutine ddrvsy_rook(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DDRVSY_ROOK
subroutine dchkps(dotype, nn, nval, nnb, nbval, nrank, rankval, thresh, tsterr, nmax, a, afac, perm, piv, work, rwork, nout)
DCHKPS
subroutine dchkqrtp(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
DCHKQRTP
subroutine dchklq(dotype, nm, mval, nn, nval, nnb, nbval, nxval, nrhs, thresh, tsterr, nmax, a, af, aq, al, ac, b, x, xact, tau, work, rwork, nout)
DCHKLQ
subroutine dchkpo(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKPO
subroutine dchktr(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKTR
subroutine ddrvls(dotype, nm, mval, nn, nval, nns, nsval, nnb, nbval, nxval, thresh, tsterr, a, copya, b, copyb, c, s, copys, nout)
DDRVLS
subroutine dchkql(dotype, nm, mval, nn, nval, nnb, nbval, nxval, nrhs, thresh, tsterr, nmax, a, af, aq, al, ac, b, x, xact, tau, work, rwork, nout)
DCHKQL
subroutine ddrvpo(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, asav, b, bsav, x, xact, s, work, rwork, iwork, nout)
DDRVPO
subroutine dchktb(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, ab, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKTB
subroutine ddrvgb(dotype, nn, nval, nrhs, thresh, tsterr, a, la, afb, lafb, asav, b, bsav, x, xact, s, work, rwork, iwork, nout)
DDRVGB
subroutine dchkeq(thresh, nout)
DCHKEQ
subroutine dchkgt(dotype, nn, nval, nns, nsval, thresh, tsterr, a, af, b, x, xact, work, rwork, iwork, nout)
DCHKGT
subroutine ddrvpp(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, asav, b, bsav, x, xact, s, work, rwork, iwork, nout)
DDRVPP
subroutine dchkpb(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKPB
subroutine dchktz(dotype, nm, mval, nn, nval, thresh, tsterr, a, copya, s, tau, work, nout)
DCHKTZ
subroutine dchktp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, ap, ainvp, b, x, xact, work, rwork, iwork, nout)
DCHKTP
subroutine ddrvsp(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DDRVSP
subroutine dchktsqr(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
DCHKQRT
subroutine dchklqt(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
DCHKLQT
subroutine dchkrq(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)
DCHKRQ
subroutine ddrvpb(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, asav, b, bsav, x, xact, s, work, rwork, iwork, nout)
DDRVPB
subroutine dchkge(dotype, nm, mval, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKGE
subroutine dchksy_aa(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKSY_AA
subroutine dchksp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKSP
subroutine dchkorhr_col(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
DCHKORHR_COL
subroutine dchklqtp(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
DCHKLQTP
subroutine ddrvgt(dotype, nn, nval, nrhs, thresh, tsterr, a, af, b, x, xact, work, rwork, iwork, nout)
DDRVGT
subroutine dchksy(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKSY
subroutine ddrvpt(dotype, nn, nval, nrhs, thresh, tsterr, a, d, e, b, x, xact, work, rwork, nout)
DDRVPT
subroutine dchkqrt(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
DCHKQRT
subroutine dchkq3(dotype, nm, mval, nn, nval, nnb, nbval, nxval, thresh, a, copya, s, tau, work, iwork, nout)
DCHKQ3
subroutine dchkqr(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)
DCHKQR
subroutine dchkpp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKPP
subroutine ddrvge(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, asav, b, bsav, x, xact, s, work, rwork, iwork, nout)
DDRVGE
subroutine dchksy_rook(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKSY_ROOK
subroutine ddrvsy_rk(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, e, ainv, b, x, xact, work, rwork, iwork, nout)
DDRVSY_RK
subroutine dchksy_rk(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, e, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKSY_RK
subroutine ddrvsy_aa(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DDRVSY_AA
subroutine dchkgb(dotype, nm, mval, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, a, la, afac, lafac, b, x, xact, work, rwork, iwork, nout)
DCHKGB
subroutine ilaver(vers_major, vers_minor, vers_patch)
ILAVER returns the LAPACK version.
double precision function dlamch(cmach)
DLAMCH