123 parameter( nmax = 132 )
125 parameter( maxin = 12 )
127 parameter( maxrhs = 16 )
129 parameter( matmax = 30 )
131 parameter( nin = 5, nout = 6 )
133 parameter( kdmax = nmax+( nmax+1 ) / 4 )
136 LOGICAL fatal, tstchk, tstdrv, tsterr
142 INTEGER i, ic, j, k, la, lafac, lda, nb, nm, nmats, nn,
143 $ nnb, nnb2, nns, nrhs, ntypes, nrank,
144 $ vers_major, vers_minor, vers_patch
145 DOUBLE PRECISION eps, s1, s2, threq, thresh
148 LOGICAL dotype( matmax )
149 INTEGER iwork( 25*nmax ), mval( maxin ),
150 $ nbval( maxin ), nbval2( maxin ),
151 $ nsval( maxin ), nval( maxin ), nxval( maxin ),
152 $ rankval( maxin ), piv( nmax )
155 INTEGER allocatestatus
156 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE :: rwork, s
157 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE :: e
158 DOUBLE PRECISION,
DIMENSION(:,:),
ALLOCATABLE :: a, b, work
182 INTEGER iparms( 100 )
185 COMMON / infoc / infot, nunit, ok, lerr
186 COMMON / srnamc / srnamt
187 COMMON / claenv / iparms
190 DATA threq / 2.0d0 / , intstr /
'0123456789' /
195 ALLOCATE ( a( ( kdmax+1 )*nmax, 7 ), stat = allocatestatus )
196 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
197 ALLOCATE ( b( nmax*maxrhs, 4 ), stat = allocatestatus )
198 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
199 ALLOCATE ( work( nmax, 3*nmax+maxrhs+30 ), stat = allocatestatus )
200 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
201 ALLOCATE ( e( nmax ), stat = allocatestatus )
202 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
203 ALLOCATE ( s( 2*nmax ), stat = allocatestatus )
204 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
205 ALLOCATE ( rwork( 5*nmax+2*maxrhs ), stat = allocatestatus )
206 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
220 CALL ilaver( vers_major, vers_minor, vers_patch )
221 WRITE( nout, fmt = 9994 ) vers_major, vers_minor, vers_patch
225 READ( nin, fmt = * )nm
227 WRITE( nout, fmt = 9996 )
' NM ', nm, 1
230 ELSE IF( nm.GT.maxin )
THEN
231 WRITE( nout, fmt = 9995 )
' NM ', nm, maxin
235 READ( nin, fmt = * )( mval( i ), i = 1, nm )
237 IF( mval( i ).LT.0 )
THEN
238 WRITE( nout, fmt = 9996 )
' M ', mval( i ), 0
240 ELSE IF( mval( i ).GT.nmax )
THEN
241 WRITE( nout, fmt = 9995 )
' M ', mval( i ), nmax
246 $
WRITE( nout, fmt = 9993 )
'M ', ( mval( i ), i = 1, nm )
250 READ( nin, fmt = * )nn
252 WRITE( nout, fmt = 9996 )
' NN ', nn, 1
255 ELSE IF( nn.GT.maxin )
THEN
256 WRITE( nout, fmt = 9995 )
' NN ', nn, maxin
260 READ( nin, fmt = * )( nval( i ), i = 1, nn )
262 IF( nval( i ).LT.0 )
THEN
263 WRITE( nout, fmt = 9996 )
' N ', nval( i ), 0
265 ELSE IF( nval( i ).GT.nmax )
THEN
266 WRITE( nout, fmt = 9995 )
' N ', nval( i ), nmax
271 $
WRITE( nout, fmt = 9993 )
'N ', ( nval( i ), i = 1, nn )
275 READ( nin, fmt = * )nns
277 WRITE( nout, fmt = 9996 )
' NNS', nns, 1
280 ELSE IF( nns.GT.maxin )
THEN
281 WRITE( nout, fmt = 9995 )
' NNS', nns, maxin
285 READ( nin, fmt = * )( nsval( i ), i = 1, nns )
287 IF( nsval( i ).LT.0 )
THEN
288 WRITE( nout, fmt = 9996 )
'NRHS', nsval( i ), 0
290 ELSE IF( nsval( i ).GT.maxrhs )
THEN
291 WRITE( nout, fmt = 9995 )
'NRHS', nsval( i ), maxrhs
296 $
WRITE( nout, fmt = 9993 )
'NRHS', ( nsval( i ), i = 1, nns )
300 READ( nin, fmt = * )nnb
302 WRITE( nout, fmt = 9996 )
'NNB ', nnb, 1
305 ELSE IF( nnb.GT.maxin )
THEN
306 WRITE( nout, fmt = 9995 )
'NNB ', nnb, maxin
310 READ( nin, fmt = * )( nbval( i ), i = 1, nnb )
312 IF( nbval( i ).LT.0 )
THEN
313 WRITE( nout, fmt = 9996 )
' NB ', nbval( i ), 0
318 $
WRITE( nout, fmt = 9993 )
'NB ', ( nbval( i ), i = 1, nnb )
326 IF( nb.EQ.nbval2( j ) )
335 READ( nin, fmt = * )( nxval( i ), i = 1, nnb )
337 IF( nxval( i ).LT.0 )
THEN
338 WRITE( nout, fmt = 9996 )
' NX ', nxval( i ), 0
343 $
WRITE( nout, fmt = 9993 )
'NX ', ( nxval( i ), i = 1, nnb )
347 READ( nin, fmt = * )nrank
349 WRITE( nout, fmt = 9996 )
' NRANK ', nrank, 1
352 ELSE IF( nn.GT.maxin )
THEN
353 WRITE( nout, fmt = 9995 )
' NRANK ', nrank, maxin
357 READ( nin, fmt = * )( rankval( i ), i = 1, nrank )
359 IF( rankval( i ).LT.0 )
THEN
360 WRITE( nout, fmt = 9996 )
' RANK ', rankval( i ), 0
362 ELSE IF( rankval( i ).GT.100 )
THEN
363 WRITE( nout, fmt = 9995 )
' RANK ', rankval( i ), 100
368 $
WRITE( nout, fmt = 9993 )
'RANK % OF N',
369 $ ( rankval( i ), i = 1, nrank )
373 READ( nin, fmt = * )thresh
374 WRITE( nout, fmt = 9992 )thresh
378 READ( nin, fmt = * )tstchk
382 READ( nin, fmt = * )tstdrv
386 READ( nin, fmt = * )tsterr
389 WRITE( nout, fmt = 9999 )
395 eps =
dlamch(
'Underflow threshold' )
396 WRITE( nout, fmt = 9991 )
'underflow', eps
397 eps =
dlamch(
'Overflow threshold' )
398 WRITE( nout, fmt = 9991 )
'overflow ', eps
400 WRITE( nout, fmt = 9991 )
'precision', eps
401 WRITE( nout, fmt = * )
407 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
442 IF( .NOT.
lsame( c1,
'Double precision' ) )
THEN
443 WRITE( nout, fmt = 9990 )path
445 ELSE IF( nmats.LE.0 )
THEN
449 WRITE( nout, fmt = 9989 )path
451 ELSE IF(
lsamen( 2, c2,
'GE' ) )
THEN
456 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
459 CALL dchkge( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
460 $ nsval, thresh, tsterr, lda, a( 1, 1 ),
461 $ a( 1, 2 ), a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
462 $ b( 1, 3 ), work, rwork, iwork, nout )
464 WRITE( nout, fmt = 9989 )path
468 CALL ddrvge( dotype, nn, nval, nrhs, thresh, tsterr, lda,
469 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
470 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
471 $ rwork, iwork, nout )
473 WRITE( nout, fmt = 9988 )path
476 ELSE IF(
lsamen( 2, c2,
'GB' ) )
THEN
480 la = ( 2*kdmax+1 )*nmax
481 lafac = ( 3*kdmax+1 )*nmax
483 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
486 CALL dchkgb( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
487 $ nsval, thresh, tsterr, a( 1, 1 ), la,
488 $ a( 1, 3 ), lafac, b( 1, 1 ), b( 1, 2 ),
489 $ b( 1, 3 ), work, rwork, iwork, nout )
491 WRITE( nout, fmt = 9989 )path
495 CALL ddrvgb( dotype, nn, nval, nrhs, thresh, tsterr,
496 $ a( 1, 1 ), la, a( 1, 3 ), lafac, a( 1, 6 ),
497 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s,
498 $ work, rwork, iwork, nout )
500 WRITE( nout, fmt = 9988 )path
503 ELSE IF(
lsamen( 2, c2,
'GT' ) )
THEN
508 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
511 CALL dchkgt( dotype, nn, nval, nns, nsval, thresh, tsterr,
512 $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
513 $ b( 1, 3 ), work, rwork, iwork, nout )
515 WRITE( nout, fmt = 9989 )path
519 CALL ddrvgt( dotype, nn, nval, nrhs, thresh, tsterr,
520 $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
521 $ b( 1, 3 ), work, rwork, iwork, nout )
523 WRITE( nout, fmt = 9988 )path
526 ELSE IF(
lsamen( 2, c2,
'PO' ) )
THEN
531 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
534 CALL dchkpo( dotype, nn, nval, nnb2, nbval2, nns, nsval,
535 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
536 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
537 $ work, rwork, iwork, nout )
539 WRITE( nout, fmt = 9989 )path
543 CALL ddrvpo( dotype, nn, nval, nrhs, thresh, tsterr, lda,
544 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
545 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
546 $ rwork, iwork, nout )
548 WRITE( nout, fmt = 9988 )path
551 ELSE IF(
lsamen( 2, c2,
'PS' ) )
THEN
557 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
560 CALL dchkps( dotype, nn, nval, nnb2, nbval2, nrank,
561 $ rankval, thresh, tsterr, lda, a( 1, 1 ),
562 $ a( 1, 2 ), a( 1, 3 ), piv, work, rwork,
565 WRITE( nout, fmt = 9989 )path
568 ELSE IF(
lsamen( 2, c2,
'PP' ) )
THEN
573 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
576 CALL dchkpp( dotype, nn, nval, nns, nsval, thresh, tsterr,
577 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
578 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
581 WRITE( nout, fmt = 9989 )path
585 CALL ddrvpp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
586 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
587 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
588 $ rwork, iwork, nout )
590 WRITE( nout, fmt = 9988 )path
593 ELSE IF(
lsamen( 2, c2,
'PB' ) )
THEN
598 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
601 CALL dchkpb( dotype, nn, nval, nnb2, nbval2, nns, nsval,
602 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
603 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
604 $ work, rwork, iwork, nout )
606 WRITE( nout, fmt = 9989 )path
610 CALL ddrvpb( dotype, nn, nval, nrhs, thresh, tsterr, lda,
611 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
612 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
613 $ rwork, iwork, nout )
615 WRITE( nout, fmt = 9988 )path
618 ELSE IF(
lsamen( 2, c2,
'PT' ) )
THEN
623 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
626 CALL dchkpt( dotype, nn, nval, nns, nsval, thresh, tsterr,
627 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
628 $ b( 1, 2 ), b( 1, 3 ), work, rwork, nout )
630 WRITE( nout, fmt = 9989 )path
634 CALL ddrvpt( dotype, nn, nval, nrhs, thresh, tsterr,
635 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
636 $ b( 1, 2 ), b( 1, 3 ), work, rwork, nout )
638 WRITE( nout, fmt = 9988 )path
641 ELSE IF(
lsamen( 2, c2,
'SY' ) )
THEN
647 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
650 CALL dchksy( dotype, nn, nval, nnb2, nbval2, nns, nsval,
651 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
652 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
653 $ work, rwork, iwork, nout )
655 WRITE( nout, fmt = 9989 )path
659 CALL ddrvsy( dotype, nn, nval, nrhs, thresh, tsterr, lda,
660 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
661 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
664 WRITE( nout, fmt = 9988 )path
667 ELSE IF(
lsamen( 2, c2,
'SR' ) )
THEN
673 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
676 CALL dchksy_rook(dotype, nn, nval, nnb2, nbval2, nns, nsval,
677 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
678 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
679 $ work, rwork, iwork, nout )
681 WRITE( nout, fmt = 9989 )path
685 CALL ddrvsy_rook( dotype, nn, nval, nrhs, thresh, tsterr,
686 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
687 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
688 $ work, rwork, iwork, nout )
690 WRITE( nout, fmt = 9988 )path
693 ELSE IF(
lsamen( 2, c2,
'SK' ) )
THEN
700 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
703 CALL dchksy_rk( dotype, nn, nval, nnb2, nbval2, nns, nsval,
704 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
705 $ e, a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
706 $ b( 1, 3 ), work, rwork, iwork, nout )
708 WRITE( nout, fmt = 9989 )path
712 CALL ddrvsy_rk( dotype, nn, nval, nrhs, thresh, tsterr,
713 $ lda, a( 1, 1 ), a( 1, 2 ), e, a( 1, 3 ),
714 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
715 $ work, rwork, iwork, nout )
717 WRITE( nout, fmt = 9988 )path
720 ELSE IF(
lsamen( 2, c2,
'SA' ) )
THEN
726 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
729 CALL dchksy_aa( dotype, nn, nval, nnb2, nbval2, nns,
730 $ nsval, thresh, tsterr, lda,
731 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
732 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
733 $ work, rwork, iwork, nout )
735 WRITE( nout, fmt = 9989 )path
739 CALL ddrvsy_aa( dotype, nn, nval, nrhs, thresh, tsterr,
740 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
741 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
742 $ work, rwork, iwork, nout )
744 WRITE( nout, fmt = 9988 )path
748 ELSE IF(
lsamen( 2, c2,
'S2' ) )
THEN
754 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
758 $ nns, nsval, thresh, tsterr, lda,
759 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
760 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
761 $ work, rwork, iwork, nout )
763 WRITE( nout, fmt = 9989 )path
768 $ dotype, nn, nval, nrhs, thresh, tsterr,
769 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
770 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
771 $ work, rwork, iwork, nout )
773 WRITE( nout, fmt = 9988 )path
777 ELSE IF(
lsamen( 2, c2,
'SP' ) )
THEN
783 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
786 CALL dchksp( dotype, nn, nval, nns, nsval, thresh, tsterr,
787 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
788 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
791 WRITE( nout, fmt = 9989 )path
795 CALL ddrvsp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
796 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
797 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
800 WRITE( nout, fmt = 9988 )path
803 ELSE IF(
lsamen( 2, c2,
'TR' ) )
THEN
808 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
811 CALL dchktr( dotype, nn, nval, nnb2, nbval2, nns, nsval,
812 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
813 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
816 WRITE( nout, fmt = 9989 )path
819 ELSE IF(
lsamen( 2, c2,
'TP' ) )
THEN
824 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
827 CALL dchktp( dotype, nn, nval, nns, nsval, thresh, tsterr,
828 $ lda, a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
829 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
832 WRITE( nout, fmt = 9989 )path
835 ELSE IF(
lsamen( 2, c2,
'TB' ) )
THEN
840 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
843 CALL dchktb( dotype, nn, nval, nns, nsval, thresh, tsterr,
844 $ lda, a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
845 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
848 WRITE( nout, fmt = 9989 )path
851 ELSE IF(
lsamen( 2, c2,
'QR' ) )
THEN
856 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
859 CALL dchkqr( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
860 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
861 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
862 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
863 $ work, rwork, iwork, nout )
865 WRITE( nout, fmt = 9989 )path
868 ELSE IF(
lsamen( 2, c2,
'LQ' ) )
THEN
873 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
876 CALL dchklq( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
877 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
878 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
879 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
880 $ work, rwork, nout )
882 WRITE( nout, fmt = 9989 )path
885 ELSE IF(
lsamen( 2, c2,
'QL' ) )
THEN
890 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
893 CALL dchkql( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
894 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
895 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
896 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
897 $ work, rwork, nout )
899 WRITE( nout, fmt = 9989 )path
902 ELSE IF(
lsamen( 2, c2,
'RQ' ) )
THEN
907 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
910 CALL dchkrq( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
911 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
912 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
913 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
914 $ work, rwork, iwork, nout )
916 WRITE( nout, fmt = 9989 )path
919 ELSE IF(
lsamen( 2, c2,
'QP' ) )
THEN
924 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
927 CALL dchkq3( dotype, nm, mval, nn, nval, nnb, nbval,
928 $ nxval, thresh, a( 1, 1 ), a( 1, 2 ),
929 $ b( 1, 1 ), b( 1, 3 ), work, iwork, nout )
931 WRITE( nout, fmt = 9989 )path
934 ELSE IF(
lsamen( 2, c2,
'QK' ) )
THEN
939 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
942 CALL dchkqp3rk( dotype, nm, mval, nn, nval, nns, nsval,
943 $ nnb, nbval, nxval, thresh, a( 1, 1 ),
944 $ a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
945 $ b( 1, 3 ), b( 1, 4 ),
946 $ work, iwork, nout )
948 WRITE( nout, fmt = 9989 )path
951 ELSE IF(
lsamen( 2, c2,
'TZ' ) )
THEN
956 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
959 CALL dchktz( dotype, nm, mval, nn, nval, thresh, tsterr,
960 $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
961 $ b( 1, 3 ), work, nout )
963 WRITE( nout, fmt = 9989 )path
966 ELSE IF(
lsamen( 2, c2,
'LS' ) )
THEN
971 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
974 CALL ddrvls( dotype, nm, mval, nn, nval, nns, nsval, nnb,
975 $ nbval, nxval, thresh, tsterr, a( 1, 1 ),
976 $ a( 1, 2 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
977 $ rwork, rwork( nmax+1 ), nout )
979 WRITE( nout, fmt = 9988 )path
982 ELSE IF(
lsamen( 2, c2,
'EQ' ) )
THEN
988 CALL dchkeq( threq, nout )
990 WRITE( nout, fmt = 9989 )path
993 ELSE IF(
lsamen( 2, c2,
'QT' ) )
THEN
998 CALL dchkqrt( thresh, tsterr, nm, mval, nn, nval, nnb,
1001 WRITE( nout, fmt = 9989 )path
1004 ELSE IF(
lsamen( 2, c2,
'QX' ) )
THEN
1009 CALL dchkqrtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1012 WRITE( nout, fmt = 9989 )path
1015 ELSE IF(
lsamen( 2, c2,
'TQ' ) )
THEN
1020 CALL dchklqt( thresh, tsterr, nm, mval, nn, nval, nnb,
1023 WRITE( nout, fmt = 9989 )path
1026 ELSE IF(
lsamen( 2, c2,
'XQ' ) )
THEN
1031 CALL dchklqtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1034 WRITE( nout, fmt = 9989 )path
1037 ELSE IF(
lsamen( 2, c2,
'TS' ) )
THEN
1042 CALL dchktsqr( thresh, tsterr, nm, mval, nn, nval, nnb,
1045 WRITE( nout, fmt = 9989 )path
1048 ELSE IF(
lsamen( 2, c2,
'HH' ) )
THEN
1053 CALL dchkorhr_col( thresh, tsterr, nm, mval, nn, nval, nnb,
1056 WRITE( nout, fmt = 9989 ) path
1062 WRITE( nout, fmt = 9990 )path
1074 WRITE( nout, fmt = 9998 )
1075 WRITE( nout, fmt = 9997 )s2 - s1
1077 DEALLOCATE (a, stat = allocatestatus)
1078 DEALLOCATE (b, stat = allocatestatus)
1079 DEALLOCATE (work, stat = allocatestatus)
1080 DEALLOCATE (rwork, stat = allocatestatus)
1082 9999
FORMAT( /
' Execution not attempted due to input errors' )
1083 9998
FORMAT( /
' End of tests' )
1084 9997
FORMAT(
' Total time used = ', f12.2,
' seconds', / )
1085 9996
FORMAT(
' Invalid input value: ', a4,
'=', i6,
'; must be >=',
1087 9995
FORMAT(
' Invalid input value: ', a4,
'=', i6,
'; must be <=',
1089 9994
FORMAT(
' Tests of the DOUBLE PRECISION LAPACK routines ',
1090 $ /
' LAPACK VERSION ', i1,
'.', i1,
'.', i1,
1091 $ / /
' The following parameter values will be used:' )
1092 9993
FORMAT( 4x, a4,
': ', 10i6, / 11x, 10i6 )
1093 9992
FORMAT( /
' Routines pass computational tests if test ratio is ',
1094 $
'less than', f8.2, / )
1095 9991
FORMAT(
' Relative machine ', a,
' is taken to be', d16.6 )
1096 9990
FORMAT( / 1x, a3,
': Unrecognized path name' )
1097 9989
FORMAT( / 1x, a3,
' routines were not tested' )
1098 9988
FORMAT( / 1x, a3,
' driver routines were not tested' )
subroutine alareq(path, nmats, dotype, ntypes, nin, nout)
ALAREQ
subroutine dchkeq(thresh, nout)
DCHKEQ
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 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 dchkgt(dotype, nn, nval, nns, nsval, thresh, tsterr, a, af, b, x, xact, work, rwork, iwork, nout)
DCHKGT
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 dchklqt(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
DCHKLQT
subroutine dchklqtp(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
DCHKLQTP
subroutine dchkorhr_col(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
DCHKORHR_COL
subroutine dchkpb(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKPB
subroutine dchkpo(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKPO
subroutine dchkpp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKPP
subroutine dchkps(dotype, nn, nval, nnb, nbval, nrank, rankval, thresh, tsterr, nmax, a, afac, perm, piv, work, rwork, nout)
DCHKPS
subroutine dchkpt(dotype, nn, nval, nns, nsval, thresh, tsterr, a, d, e, b, x, xact, work, rwork, nout)
DCHKPT
subroutine dchkq3(dotype, nm, mval, nn, nval, nnb, nbval, nxval, thresh, a, copya, s, tau, work, iwork, nout)
DCHKQ3
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 dchkqp3rk(dotype, nm, mval, nn, nval, nns, nsval, nnb, nbval, nxval, thresh, a, copya, b, copyb, s, tau, work, iwork, nout)
DCHKQP3RK
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 dchkqrt(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
DCHKQRT
subroutine dchkqrtp(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
DCHKQRTP
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 dchksp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKSP
subroutine dchksy(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKSY
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 dchksy_aa_2stage(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKSY_AA_2STAGE
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 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 dchktb(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, ab, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKTB
subroutine dchktp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, ap, ainvp, b, x, xact, work, rwork, iwork, nout)
DCHKTP
subroutine dchktr(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, ainv, b, x, xact, work, rwork, iwork, nout)
DCHKTR
subroutine dchktsqr(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
DCHKQRT
subroutine dchktz(dotype, nm, mval, nn, nval, thresh, tsterr, a, copya, s, tau, work, nout)
DCHKTZ
subroutine ddrvgb(dotype, nn, nval, nrhs, thresh, tsterr, a, la, afb, lafb, asav, b, bsav, x, xact, s, work, rwork, iwork, nout)
DDRVGB
subroutine ddrvge(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, asav, b, bsav, x, xact, s, work, rwork, iwork, nout)
DDRVGE
subroutine ddrvgt(dotype, nn, nval, nrhs, thresh, tsterr, a, af, b, x, xact, work, rwork, iwork, nout)
DDRVGT
subroutine ddrvls(dotype, nm, mval, nn, nval, nns, nsval, nnb, nbval, nxval, thresh, tsterr, a, copya, b, copyb, c, s, copys, nout)
DDRVLS
subroutine ddrvpb(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, asav, b, bsav, x, xact, s, work, rwork, iwork, nout)
DDRVPB
subroutine ddrvpo(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, asav, b, bsav, x, xact, s, work, rwork, iwork, nout)
DDRVPO
subroutine ddrvpp(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, asav, b, bsav, x, xact, s, work, rwork, iwork, nout)
DDRVPP
subroutine ddrvpt(dotype, nn, nval, nrhs, thresh, tsterr, a, d, e, b, x, xact, work, rwork, nout)
DDRVPT
subroutine ddrvsp(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DDRVSP
subroutine ddrvsy(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DDRVSY
subroutine ddrvsy_aa(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DDRVSY_AA
subroutine ddrvsy_aa_2stage(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DDRVSY_AA_2STAGE
subroutine ddrvsy_rk(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, e, ainv, b, x, xact, work, rwork, iwork, nout)
DDRVSY_RK
subroutine ddrvsy_rook(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
DDRVSY_ROOK
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