127 parameter( nmax = 132 )
129 parameter( maxin = 12 )
131 parameter( maxrhs = 16 )
133 parameter( matmax = 30 )
135 parameter( nin = 5, nout = 6 )
137 parameter( kdmax = nmax+( nmax+1 ) / 4 )
140 LOGICAL fatal, tstchk, tstdrv, tsterr
146 INTEGER i, ic, j, k, la, lafac, lda, nb, nm, nmats, nn,
147 $ nnb, nnb2, nns, nrhs, ntypes, nrank,
148 $ vers_major, vers_minor, vers_patch
149 REAL eps, s1, s2, threq, thresh
152 LOGICAL dotype( matmax )
153 INTEGER iwork( 25*nmax ), mval( maxin ),
154 $ nbval( maxin ), nbval2( maxin ),
155 $ nsval( maxin ), nval( maxin ), nxval( maxin ),
156 $ rankval( maxin ), piv( nmax )
159 INTEGER allocatestatus
160 REAL,
DIMENSION(:),
ALLOCATABLE :: rwork, s
161 COMPLEX,
DIMENSION(:),
ALLOCATABLE :: e
162 COMPLEX,
DIMENSION(:,:),
ALLOCATABLE :: a, b, work
188 INTEGER iparms( 100 )
191 COMMON / claenv / iparms
192 COMMON / infoc / infot, nunit, ok, lerr
193 COMMON / srnamc / srnamt
196 DATA threq / 2.0 / , intstr /
'0123456789' /
200 ALLOCATE ( a( ( kdmax+1 )*nmax, 7 ), stat = allocatestatus )
201 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
202 ALLOCATE ( b( nmax*maxrhs, 4 ), stat = allocatestatus )
203 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
204 ALLOCATE ( work( nmax, nmax+maxrhs+10 ), stat = allocatestatus )
205 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
206 ALLOCATE ( e( nmax ), stat = allocatestatus )
207 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
208 ALLOCATE ( s( 2*nmax ), stat = allocatestatus)
209 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
210 ALLOCATE ( rwork( 150*nmax+2*maxrhs ), stat = allocatestatus )
211 IF (allocatestatus /= 0) stop
"*** Not enough memory ***"
225 CALL ilaver( vers_major, vers_minor, vers_patch )
226 WRITE( nout, fmt = 9994 ) vers_major, vers_minor, vers_patch
230 READ( nin, fmt = * )nm
232 WRITE( nout, fmt = 9996 )
' NM ', nm, 1
235 ELSE IF( nm.GT.maxin )
THEN
236 WRITE( nout, fmt = 9995 )
' NM ', nm, maxin
240 READ( nin, fmt = * )( mval( i ), i = 1, nm )
242 IF( mval( i ).LT.0 )
THEN
243 WRITE( nout, fmt = 9996 )
' M ', mval( i ), 0
245 ELSE IF( mval( i ).GT.nmax )
THEN
246 WRITE( nout, fmt = 9995 )
' M ', mval( i ), nmax
251 $
WRITE( nout, fmt = 9993 )
'M ', ( mval( i ), i = 1, nm )
255 READ( nin, fmt = * )nn
257 WRITE( nout, fmt = 9996 )
' NN ', nn, 1
260 ELSE IF( nn.GT.maxin )
THEN
261 WRITE( nout, fmt = 9995 )
' NN ', nn, maxin
265 READ( nin, fmt = * )( nval( i ), i = 1, nn )
267 IF( nval( i ).LT.0 )
THEN
268 WRITE( nout, fmt = 9996 )
' N ', nval( i ), 0
270 ELSE IF( nval( i ).GT.nmax )
THEN
271 WRITE( nout, fmt = 9995 )
' N ', nval( i ), nmax
276 $
WRITE( nout, fmt = 9993 )
'N ', ( nval( i ), i = 1, nn )
280 READ( nin, fmt = * )nns
282 WRITE( nout, fmt = 9996 )
' NNS', nns, 1
285 ELSE IF( nns.GT.maxin )
THEN
286 WRITE( nout, fmt = 9995 )
' NNS', nns, maxin
290 READ( nin, fmt = * )( nsval( i ), i = 1, nns )
292 IF( nsval( i ).LT.0 )
THEN
293 WRITE( nout, fmt = 9996 )
'NRHS', nsval( i ), 0
295 ELSE IF( nsval( i ).GT.maxrhs )
THEN
296 WRITE( nout, fmt = 9995 )
'NRHS', nsval( i ), maxrhs
301 $
WRITE( nout, fmt = 9993 )
'NRHS', ( nsval( i ), i = 1, nns )
305 READ( nin, fmt = * )nnb
307 WRITE( nout, fmt = 9996 )
'NNB ', nnb, 1
310 ELSE IF( nnb.GT.maxin )
THEN
311 WRITE( nout, fmt = 9995 )
'NNB ', nnb, maxin
315 READ( nin, fmt = * )( nbval( i ), i = 1, nnb )
317 IF( nbval( i ).LT.0 )
THEN
318 WRITE( nout, fmt = 9996 )
' NB ', nbval( i ), 0
323 $
WRITE( nout, fmt = 9993 )
'NB ', ( nbval( i ), i = 1, nnb )
331 IF( nb.EQ.nbval2( j ) )
340 READ( nin, fmt = * )( nxval( i ), i = 1, nnb )
342 IF( nxval( i ).LT.0 )
THEN
343 WRITE( nout, fmt = 9996 )
' NX ', nxval( i ), 0
348 $
WRITE( nout, fmt = 9993 )
'NX ', ( nxval( i ), i = 1, nnb )
352 READ( nin, fmt = * )nrank
354 WRITE( nout, fmt = 9996 )
' NRANK ', nrank, 1
357 ELSE IF( nn.GT.maxin )
THEN
358 WRITE( nout, fmt = 9995 )
' NRANK ', nrank, maxin
362 READ( nin, fmt = * )( rankval( i ), i = 1, nrank )
364 IF( rankval( i ).LT.0 )
THEN
365 WRITE( nout, fmt = 9996 )
' RANK ', rankval( i ), 0
367 ELSE IF( rankval( i ).GT.100 )
THEN
368 WRITE( nout, fmt = 9995 )
' RANK ', rankval( i ), 100
373 $
WRITE( nout, fmt = 9993 )
'RANK % OF N',
374 $ ( rankval( i ), i = 1, nrank )
378 READ( nin, fmt = * )thresh
379 WRITE( nout, fmt = 9992 )thresh
383 READ( nin, fmt = * )tstchk
387 READ( nin, fmt = * )tstdrv
391 READ( nin, fmt = * )tsterr
394 WRITE( nout, fmt = 9999 )
400 eps =
slamch(
'Underflow threshold' )
401 WRITE( nout, fmt = 9991 )
'underflow', eps
402 eps =
slamch(
'Overflow threshold' )
403 WRITE( nout, fmt = 9991 )
'overflow ', eps
405 WRITE( nout, fmt = 9991 )
'precision', eps
406 WRITE( nout, fmt = * )
413 READ( nin, fmt =
'(A72)',
END = 140 )aline
421 IF( aline( i: i ).EQ.
' ' )
427 IF( c1.EQ.intstr( k: k ) )
THEN
434 nmats = nmats*10 + ic
445 IF( .NOT.
lsame( c1,
'Complex precision' ) )
THEN
446 WRITE( nout, fmt = 9990 )path
448 ELSE IF( nmats.LE.0 )
THEN
452 WRITE( nout, fmt = 9989 )path
454 ELSE IF(
lsamen( 2, c2,
'GE' ) )
THEN
459 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
462 CALL cchkge( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
463 $ nsval, thresh, tsterr, lda, a( 1, 1 ),
464 $ a( 1, 2 ), a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
465 $ b( 1, 3 ), work, rwork, iwork, nout )
467 WRITE( nout, fmt = 9989 )path
471 CALL cdrvge( dotype, nn, nval, nrhs, thresh, tsterr, lda,
472 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
473 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
474 $ rwork, iwork, nout )
476 WRITE( nout, fmt = 9988 )path
479 ELSE IF(
lsamen( 2, c2,
'GB' ) )
THEN
483 la = ( 2*kdmax+1 )*nmax
484 lafac = ( 3*kdmax+1 )*nmax
486 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
489 CALL cchkgb( dotype, nm, mval, nn, nval, nnb2, nbval2, nns,
490 $ nsval, thresh, tsterr, a( 1, 1 ), la,
491 $ a( 1, 3 ), lafac, b( 1, 1 ), b( 1, 2 ),
492 $ b( 1, 3 ), work, rwork, iwork, nout )
494 WRITE( nout, fmt = 9989 )path
498 CALL cdrvgb( dotype, nn, nval, nrhs, thresh, tsterr,
499 $ a( 1, 1 ), la, a( 1, 3 ), lafac, a( 1, 6 ),
500 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s,
501 $ work, rwork, iwork, nout )
503 WRITE( nout, fmt = 9988 )path
506 ELSE IF(
lsamen( 2, c2,
'GT' ) )
THEN
511 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
514 CALL cchkgt( dotype, nn, nval, nns, nsval, 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 = 9989 )path
522 CALL cdrvgt( dotype, nn, nval, nrhs, thresh, tsterr,
523 $ a( 1, 1 ), a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
524 $ b( 1, 3 ), work, rwork, iwork, nout )
526 WRITE( nout, fmt = 9988 )path
529 ELSE IF(
lsamen( 2, c2,
'PO' ) )
THEN
534 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
537 CALL cchkpo( dotype, nn, nval, nnb2, nbval2, nns, nsval,
538 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
539 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
540 $ work, rwork, nout )
542 WRITE( nout, fmt = 9989 )path
546 CALL cdrvpo( dotype, nn, nval, nrhs, thresh, tsterr, lda,
547 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
548 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
551 WRITE( nout, fmt = 9988 )path
554 ELSE IF(
lsamen( 2, c2,
'PS' ) )
THEN
560 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
563 CALL cchkps( dotype, nn, nval, nnb2, nbval2, nrank,
564 $ rankval, thresh, tsterr, lda, a( 1, 1 ),
565 $ a( 1, 2 ), a( 1, 3 ), piv, work, rwork,
568 WRITE( nout, fmt = 9989 )path
571 ELSE IF(
lsamen( 2, c2,
'PP' ) )
THEN
576 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
579 CALL cchkpp( dotype, nn, nval, nns, nsval, thresh, tsterr,
580 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
581 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
584 WRITE( nout, fmt = 9989 )path
588 CALL cdrvpp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
589 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
590 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
593 WRITE( nout, fmt = 9988 )path
596 ELSE IF(
lsamen( 2, c2,
'PB' ) )
THEN
601 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
604 CALL cchkpb( dotype, nn, nval, nnb2, nbval2, nns, nsval,
605 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
606 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
607 $ work, rwork, nout )
609 WRITE( nout, fmt = 9989 )path
613 CALL cdrvpb( dotype, nn, nval, nrhs, thresh, tsterr, lda,
614 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
615 $ b( 1, 2 ), b( 1, 3 ), b( 1, 4 ), s, work,
618 WRITE( nout, fmt = 9988 )path
621 ELSE IF(
lsamen( 2, c2,
'PT' ) )
THEN
626 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
629 CALL cchkpt( dotype, nn, nval, nns, nsval, thresh, tsterr,
630 $ a( 1, 1 ), s, a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
631 $ b( 1, 3 ), work, rwork, nout )
633 WRITE( nout, fmt = 9989 )path
637 CALL cdrvpt( dotype, nn, nval, nrhs, thresh, tsterr,
638 $ a( 1, 1 ), s, a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
639 $ b( 1, 3 ), work, rwork, nout )
641 WRITE( nout, fmt = 9988 )path
644 ELSE IF(
lsamen( 2, c2,
'HE' ) )
THEN
650 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
653 CALL cchkhe( dotype, nn, nval, nnb2, nbval2, nns, nsval,
654 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
655 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
656 $ work, rwork, iwork, nout )
658 WRITE( nout, fmt = 9989 )path
662 CALL cdrvhe( dotype, nn, nval, nrhs, thresh, tsterr, lda,
663 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
664 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
667 WRITE( nout, fmt = 9988 )path
670 ELSE IF(
lsamen( 2, c2,
'HR' ) )
THEN
676 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
679 CALL cchkhe_rook(dotype, nn, nval, nnb2, nbval2, nns, nsval,
680 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
681 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
682 $ work, rwork, iwork, nout )
684 WRITE( nout, fmt = 9989 )path
688 CALL cdrvhe_rook( dotype, nn, nval, nrhs, thresh, tsterr,
689 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
690 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
691 $ rwork, iwork, nout )
693 WRITE( nout, fmt = 9988 )path
696 ELSE IF(
lsamen( 2, c2,
'HK' ) )
THEN
703 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
706 CALL cchkhe_rk( dotype, nn, nval, nnb2, nbval2, nns, nsval,
707 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
708 $ e, a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
709 $ b( 1, 3 ), work, rwork, iwork, nout )
711 WRITE( nout, fmt = 9989 )path
715 CALL cdrvhe_rk( dotype, nn, nval, nrhs, thresh, tsterr,
716 $ lda, a( 1, 1 ), a( 1, 2 ), e, a( 1, 3 ),
717 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
718 $ rwork, iwork, nout )
720 WRITE( nout, fmt = 9988 )path
723 ELSE IF(
lsamen( 2, c2,
'HA' ) )
THEN
729 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
732 CALL cchkhe_aa( dotype, nn, nval, nnb2, nbval2, nns,
733 $ nsval, thresh, tsterr, lda,
734 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
735 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
736 $ work, rwork, iwork, nout )
738 WRITE( nout, fmt = 9989 )path
742 CALL cdrvhe_aa( dotype, nn, nval, nrhs, thresh, tsterr,
743 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
744 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
745 $ work, rwork, iwork, nout )
747 WRITE( nout, fmt = 9988 )path
750 ELSE IF(
lsamen( 2, c2,
'H2' ) )
THEN
756 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
760 $ nns, nsval, thresh, tsterr, lda,
761 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
762 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
763 $ work, rwork, iwork, nout )
765 WRITE( nout, fmt = 9989 )path
770 $ dotype, nn, nval, nrhs, thresh, tsterr,
771 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
772 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
773 $ work, rwork, iwork, nout )
775 WRITE( nout, fmt = 9988 )path
778 ELSE IF(
lsamen( 2, c2,
'HP' ) )
THEN
784 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
787 CALL cchkhp( dotype, nn, nval, nns, nsval, thresh, tsterr,
788 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
789 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
792 WRITE( nout, fmt = 9989 )path
796 CALL cdrvhp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
797 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
798 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
801 WRITE( nout, fmt = 9988 )path
804 ELSE IF(
lsamen( 2, c2,
'SY' ) )
THEN
810 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
813 CALL cchksy( dotype, nn, nval, nnb2, nbval2, nns, nsval,
814 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
815 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
816 $ work, rwork, iwork, nout )
818 WRITE( nout, fmt = 9989 )path
822 CALL cdrvsy( dotype, nn, nval, nrhs, thresh, tsterr, lda,
823 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
824 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
827 WRITE( nout, fmt = 9988 )path
830 ELSE IF(
lsamen( 2, c2,
'SR' ) )
THEN
836 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
839 CALL cchksy_rook(dotype, nn, nval, nnb2, nbval2, nns, nsval,
840 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
841 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
842 $ work, rwork, iwork, nout )
844 WRITE( nout, fmt = 9989 )path
848 CALL cdrvsy_rook( dotype, nn, nval, nrhs, thresh, tsterr,
849 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
850 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
851 $ rwork, iwork, nout )
853 WRITE( nout, fmt = 9988 )path
856 ELSE IF(
lsamen( 2, c2,
'SK' ) )
THEN
863 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
866 CALL cchksy_rk( dotype, nn, nval, nnb2, nbval2, nns, nsval,
867 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
868 $ e, a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
869 $ b( 1, 3 ), work, rwork, iwork, nout )
871 WRITE( nout, fmt = 9989 )path
875 CALL cdrvsy_rk( dotype, nn, nval, nrhs, thresh, tsterr,
876 $ lda, a( 1, 1 ), a( 1, 2 ), e, a( 1, 3 ),
877 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
878 $ rwork, iwork, nout )
880 WRITE( nout, fmt = 9988 )path
883 ELSE IF(
lsamen( 2, c2,
'SA' ) )
THEN
888 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
891 CALL cchksy_aa( dotype, nn, nval, nnb2, nbval2, nns, nsval,
892 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
893 $ a( 1, 3 ), b( 1, 1 ), b( 1, 2 ),
894 $ b( 1, 3 ), work, rwork, iwork, nout )
896 WRITE( nout, fmt = 9989 )path
900 CALL cdrvsy_aa( dotype, nn, nval, nrhs, thresh, tsterr,
901 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
902 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
903 $ rwork, iwork, nout )
905 WRITE( nout, fmt = 9988 )path
908 ELSE IF(
lsamen( 2, c2,
'S2' ) )
THEN
914 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
918 $ nsval, thresh, tsterr, lda,
919 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
920 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ),
921 $ work, rwork, iwork, nout )
923 WRITE( nout, fmt = 9989 )path
928 $ dotype, nn, nval, nrhs, thresh, tsterr,
929 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
930 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work,
931 $ rwork, iwork, nout )
933 WRITE( nout, fmt = 9988 )path
936 ELSE IF(
lsamen( 2, c2,
'SP' ) )
THEN
942 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
945 CALL cchksp( dotype, nn, nval, nns, nsval, thresh, tsterr,
946 $ lda, a( 1, 1 ), a( 1, 2 ), a( 1, 3 ),
947 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
950 WRITE( nout, fmt = 9989 )path
954 CALL cdrvsp( dotype, nn, nval, nrhs, thresh, tsterr, lda,
955 $ a( 1, 1 ), a( 1, 2 ), a( 1, 3 ), b( 1, 1 ),
956 $ b( 1, 2 ), b( 1, 3 ), work, rwork, iwork,
959 WRITE( nout, fmt = 9988 )path
962 ELSE IF(
lsamen( 2, c2,
'TR' ) )
THEN
967 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
970 CALL cchktr( dotype, nn, nval, nnb2, nbval2, nns, nsval,
971 $ thresh, tsterr, lda, a( 1, 1 ), a( 1, 2 ),
972 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), work, rwork,
975 WRITE( nout, fmt = 9989 )path
978 ELSE IF(
lsamen( 2, c2,
'TP' ) )
THEN
983 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
986 CALL cchktp( dotype, nn, nval, nns, nsval, thresh, tsterr,
987 $ lda, a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
988 $ b( 1, 2 ), b( 1, 3 ), work, rwork, nout )
990 WRITE( nout, fmt = 9989 )path
993 ELSE IF(
lsamen( 2, c2,
'TB' ) )
THEN
998 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1001 CALL cchktb( dotype, nn, nval, nns, nsval, thresh, tsterr,
1002 $ lda, a( 1, 1 ), a( 1, 2 ), b( 1, 1 ),
1003 $ b( 1, 2 ), b( 1, 3 ), work, rwork, nout )
1005 WRITE( nout, fmt = 9989 )path
1008 ELSE IF(
lsamen( 2, c2,
'QR' ) )
THEN
1013 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1016 CALL cchkqr( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1017 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1018 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1019 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1020 $ work, rwork, iwork, nout )
1022 WRITE( nout, fmt = 9989 )path
1025 ELSE IF(
lsamen( 2, c2,
'LQ' ) )
THEN
1030 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1033 CALL cchklq( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1034 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1035 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1036 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1037 $ work, rwork, nout )
1039 WRITE( nout, fmt = 9989 )path
1042 ELSE IF(
lsamen( 2, c2,
'QL' ) )
THEN
1047 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1050 CALL cchkql( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1051 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1052 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1053 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1054 $ work, rwork, nout )
1056 WRITE( nout, fmt = 9989 )path
1059 ELSE IF(
lsamen( 2, c2,
'RQ' ) )
THEN
1064 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1067 CALL cchkrq( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1068 $ nrhs, thresh, tsterr, nmax, a( 1, 1 ),
1069 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1070 $ b( 1, 1 ), b( 1, 2 ), b( 1, 3 ), b( 1, 4 ),
1071 $ work, rwork, iwork, nout )
1073 WRITE( nout, fmt = 9989 )path
1076 ELSE IF(
lsamen( 2, c2,
'EQ' ) )
THEN
1082 CALL cchkeq( threq, nout )
1084 WRITE( nout, fmt = 9989 )path
1087 ELSE IF(
lsamen( 2, c2,
'TZ' ) )
THEN
1092 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1095 CALL cchktz( dotype, nm, mval, nn, nval, thresh, tsterr,
1096 $ a( 1, 1 ), a( 1, 2 ), s( 1 ),
1097 $ b( 1, 1 ), work, rwork, nout )
1099 WRITE( nout, fmt = 9989 )path
1102 ELSE IF(
lsamen( 2, c2,
'QP' ) )
THEN
1107 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1110 CALL cchkq3( dotype, nm, mval, nn, nval, nnb, nbval, nxval,
1111 $ thresh, a( 1, 1 ), a( 1, 2 ), s( 1 ),
1112 $ b( 1, 1 ), work, rwork, iwork, nout )
1114 WRITE( nout, fmt = 9989 )path
1117 ELSE IF(
lsamen( 2, c2,
'QK' ) )
THEN
1122 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1125 CALL cchkqp3rk( dotype, nm, mval, nn, nval, nns, nsval,
1126 $ nnb, nbval, nxval, thresh, a( 1, 1 ),
1127 $ a( 1, 2 ), b( 1, 1 ), b( 1, 2 ),
1128 $ s( 1 ), b( 1, 4 ),
1129 $ work, rwork, iwork, nout )
1131 WRITE( nout, fmt = 9989 )path
1134 ELSE IF(
lsamen( 2, c2,
'LS' ) )
THEN
1139 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
1142 CALL cdrvls( dotype, nm, mval, nn, nval, nns, nsval, nnb,
1143 $ nbval, nxval, thresh, tsterr, a( 1, 1 ),
1144 $ a( 1, 2 ), a( 1, 3 ), a( 1, 4 ), a( 1, 5 ),
1145 $ s( 1 ), s( nmax+1 ), nout )
1147 WRITE( nout, fmt = 9989 )path
1150 ELSE IF(
lsamen( 2, c2,
'QT' ) )
THEN
1155 CALL cchkqrt( thresh, tsterr, nm, mval, nn, nval, nnb,
1158 WRITE( nout, fmt = 9989 )path
1161 ELSE IF(
lsamen( 2, c2,
'QX' ) )
THEN
1166 CALL cchkqrtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1169 WRITE( nout, fmt = 9989 )path
1172 ELSE IF(
lsamen( 2, c2,
'TQ' ) )
THEN
1177 CALL cchklqt( thresh, tsterr, nm, mval, nn, nval, nnb,
1180 WRITE( nout, fmt = 9989 )path
1183 ELSE IF(
lsamen( 2, c2,
'XQ' ) )
THEN
1188 CALL cchklqtp( thresh, tsterr, nm, mval, nn, nval, nnb,
1191 WRITE( nout, fmt = 9989 )path
1194 ELSE IF(
lsamen( 2, c2,
'TS' ) )
THEN
1199 CALL cchktsqr( thresh, tsterr, nm, mval, nn, nval, nnb,
1202 WRITE( nout, fmt = 9989 )path
1205 ELSE IF(
lsamen( 2, c2,
'HH' ) )
THEN
1210 CALL cchkunhr_col( thresh, tsterr, nm, mval, nn, nval, nnb,
1213 WRITE( nout, fmt = 9989 ) path
1218 WRITE( nout, fmt = 9990 )path
1230 WRITE( nout, fmt = 9998 )
1231 WRITE( nout, fmt = 9997 )s2 - s1
1233 DEALLOCATE (a, stat = allocatestatus)
1234 DEALLOCATE (b, stat = allocatestatus)
1235 DEALLOCATE (e, stat = allocatestatus)
1236 DEALLOCATE (s, stat = allocatestatus)
1237 DEALLOCATE (work, stat = allocatestatus)
1238 DEALLOCATE (rwork, stat = allocatestatus)
1240 9999
FORMAT( /
' Execution not attempted due to input errors' )
1241 9998
FORMAT( /
' End of tests' )
1242 9997
FORMAT(
' Total time used = ', f12.2,
' seconds', / )
1243 9996
FORMAT(
' Invalid input value: ', a4,
'=', i6,
'; must be >=',
1245 9995
FORMAT(
' Invalid input value: ', a4,
'=', i6,
'; must be <=',
1247 9994
FORMAT(
' Tests of the COMPLEX LAPACK routines ',
1248 $ /
' LAPACK VERSION ', i1,
'.', i1,
'.', i1,
1249 $ / /
' The following parameter values will be used:' )
1250 9993
FORMAT( 4x, a4,
': ', 10i6, / 11x, 10i6 )
1251 9992
FORMAT( /
' Routines pass computational tests if test ratio is ',
1252 $
'less than', f8.2, / )
1253 9991
FORMAT(
' Relative machine ', a,
' is taken to be', e16.6 )
1254 9990
FORMAT( / 1x, a3,
': Unrecognized path name' )
1255 9989
FORMAT( / 1x, a3,
' routines were not tested' )
1256 9988
FORMAT( / 1x, a3,
' driver routines were not tested' )
subroutine alareq(path, nmats, dotype, ntypes, nin, nout)
ALAREQ
subroutine cchkeq(thresh, nout)
CCHKEQ
subroutine cchkgb(dotype, nm, mval, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, a, la, afac, lafac, b, x, xact, work, rwork, iwork, nout)
CCHKGB
subroutine cchkge(dotype, nm, mval, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CCHKGE
subroutine cchkgt(dotype, nn, nval, nns, nsval, thresh, tsterr, a, af, b, x, xact, work, rwork, iwork, nout)
CCHKGT
subroutine cchkhe(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CCHKHE
subroutine cchkhe_aa(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CCHKHE_AA
subroutine cchkhe_aa_2stage(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CCHKHE_AA_2STAGE
subroutine cchkhe_rk(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, e, ainv, b, x, xact, work, rwork, iwork, nout)
CCHKHE_RK
subroutine cchkhe_rook(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CCHKHE_ROOK
subroutine cchkhp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CCHKHP
subroutine cchklq(dotype, nm, mval, nn, nval, nnb, nbval, nxval, nrhs, thresh, tsterr, nmax, a, af, aq, al, ac, b, x, xact, tau, work, rwork, nout)
CCHKLQ
subroutine cchklqt(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
CCHKLQT
subroutine cchklqtp(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
CCHKLQTP
subroutine cchkpb(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, nout)
CCHKPB
subroutine cchkpo(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, nout)
CCHKPO
subroutine cchkpp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, nout)
CCHKPP
subroutine cchkps(dotype, nn, nval, nnb, nbval, nrank, rankval, thresh, tsterr, nmax, a, afac, perm, piv, work, rwork, nout)
CCHKPS
subroutine cchkpt(dotype, nn, nval, nns, nsval, thresh, tsterr, a, d, e, b, x, xact, work, rwork, nout)
CCHKPT
subroutine cchkq3(dotype, nm, mval, nn, nval, nnb, nbval, nxval, thresh, a, copya, s, tau, work, rwork, iwork, nout)
CCHKQ3
subroutine cchkql(dotype, nm, mval, nn, nval, nnb, nbval, nxval, nrhs, thresh, tsterr, nmax, a, af, aq, al, ac, b, x, xact, tau, work, rwork, nout)
CCHKQL
subroutine cchkqp3rk(dotype, nm, mval, nn, nval, nns, nsval, nnb, nbval, nxval, thresh, a, copya, b, copyb, s, tau, work, rwork, iwork, nout)
CCHKQP3RK
subroutine cchkqr(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)
CCHKQR
subroutine cchkqrt(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
CCHKQRT
subroutine cchkqrtp(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
CCHKQRTP
subroutine cchkrq(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)
CCHKRQ
subroutine cchksp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CCHKSP
subroutine cchksy(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CCHKSY
subroutine cchksy_aa(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CCHKSY_AA
subroutine cchksy_aa_2stage(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CCHKSY_AA_2STAGE
subroutine cchksy_rk(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, e, ainv, b, x, xact, work, rwork, iwork, nout)
CCHKSY_RK
subroutine cchksy_rook(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CCHKSY_ROOK
subroutine cchktb(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, ab, ainv, b, x, xact, work, rwork, nout)
CCHKTB
subroutine cchktp(dotype, nn, nval, nns, nsval, thresh, tsterr, nmax, ap, ainvp, b, x, xact, work, rwork, nout)
CCHKTP
subroutine cchktr(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, ainv, b, x, xact, work, rwork, nout)
CCHKTR
subroutine cchktsqr(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
CCHKQRT
subroutine cchktz(dotype, nm, mval, nn, nval, thresh, tsterr, a, copya, s, tau, work, rwork, nout)
CCHKTZ
subroutine cchkunhr_col(thresh, tsterr, nm, mval, nn, nval, nnb, nbval, nout)
CCHKUNHR_COL
subroutine cdrvgb(dotype, nn, nval, nrhs, thresh, tsterr, a, la, afb, lafb, asav, b, bsav, x, xact, s, work, rwork, iwork, nout)
CDRVGB
subroutine cdrvge(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, asav, b, bsav, x, xact, s, work, rwork, iwork, nout)
CDRVGE
subroutine cdrvgt(dotype, nn, nval, nrhs, thresh, tsterr, a, af, b, x, xact, work, rwork, iwork, nout)
CDRVGT
subroutine cdrvhe(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CDRVHE
subroutine cdrvhe_aa(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CDRVHE_AA
subroutine cdrvhe_aa_2stage(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CDRVHE_AA_2STAGE
subroutine cdrvhe_rk(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, e, ainv, b, x, xact, work, rwork, iwork, nout)
CDRVHE_RK
subroutine cdrvhe_rook(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CDRVHE_ROOK
subroutine cdrvhp(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CDRVHP
subroutine cdrvls(dotype, nm, mval, nn, nval, nns, nsval, nnb, nbval, nxval, thresh, tsterr, a, copya, b, copyb, c, s, copys, nout)
CDRVLS
subroutine cdrvpb(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, asav, b, bsav, x, xact, s, work, rwork, nout)
CDRVPB
subroutine cdrvpo(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, asav, b, bsav, x, xact, s, work, rwork, nout)
CDRVPO
subroutine cdrvpp(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, asav, b, bsav, x, xact, s, work, rwork, nout)
CDRVPP
subroutine cdrvpt(dotype, nn, nval, nrhs, thresh, tsterr, a, d, e, b, x, xact, work, rwork, nout)
CDRVPT
subroutine cdrvsp(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CDRVSP
subroutine cdrvsy(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CDRVSY
subroutine cdrvsy_aa(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CDRVSY_AA
subroutine cdrvsy_aa_2stage(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CDRVSY_AA_2STAGE
subroutine cdrvsy_rk(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, e, ainv, b, x, xact, work, rwork, iwork, nout)
CDRVSY_RK
subroutine cdrvsy_rook(dotype, nn, nval, nrhs, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CDRVSY_ROOK
subroutine ilaver(vers_major, vers_minor, vers_patch)
ILAVER returns the LAPACK version.
real function slamch(cmach)
SLAMCH
logical function lsame(ca, cb)
LSAME
logical function lsamen(n, ca, cb)
LSAMEN
real function second()
SECOND Using ETIME