3 SUBROUTINE pcseptst( DESCA, UPLO, N, MATTYPE, SUBTESTS, THRESH,
4 $ ORDER, ABSTOL, ISEED, A, COPYA, Z, LDA, WIN,
5 $ WNEW, IFAIL, ICLUSTR, GAP, IPREPAD, IPOSTPAD,
6 $ WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK,
15 CHARACTER SUBTESTS, UPLO
16 INTEGER INFO, IPOSTPAD, IPREPAD, LDA, LIWORK, LRWORK,
17 $ LWORK, MATTYPE, N, NOUT, ORDER
21 INTEGER DESCA( * ), ICLUSTR( * ), IFAIL( * ),
22 $ iseed( 4 ), iwork( * )
23 REAL GAP( * ), RWORK( * ), ( * ), WNEW( * )
24 COMPLEX A( LDA, * ), COPYA( LDA, * ), WORK( * ),
205 INTEGER BLOCK_CYCLIC_2D, DLEN_, DTYPE_, CTXT_, M_, N_,
206 $ MB_, NB_, RSRC_, CSRC_, LLD_
207 PARAMETER ( BLOCK_CYCLIC_2D = 1, dlen_ = 9, dtype_ = 1,
208 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ =
209 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
211 parameter( zero = 0.0e+0, one = 1.0e+0, ten = 10.0e+0,
214 parameter( padval = ( 19.25e+0, 1.1e+1 ) )
216 PARAMETER ( CZERO = ( 0.0e+0, 0.0e+0 ) )
218 parameter( cone = ( 1.0e+0, 0.0e+0 ) )
220 parameter( maxtyp = 22 )
225 CHARACTER JOBZ, RANGE
227 INTEGER CONTEXT, I, IAM, IINFO, IL, IMODE, IN, INDD,
228 $ indrwork, indwork, isizeheevd, isizeheevx,
229 $ isizesubtst, isizetst, itype, iu, j,
230 $ lheevdsize, lheevxsize, llrwork, llwork,
231 $ maxsize, mycol, myrow, nb, ngen, nloc, nnodes,
232 $ np, np0, npcol, nprow, nq, nq0, res, rsizechk,
233 $ rsizeheevd, rsizeheevx, rsizeqtq, rsizesubtst,
234 $ rsizetst, sizeheevd, sizeheevx, sizemqrleft,
235 $ sizemqrright, sizeqrf, sizesubtst, sizetms,
236 $ sizetst, valsize, vecsize
237 REAL ANINV, ANORM, COND, MAXQTQNRM, MAXTSTNRM, OVFL,
238 $ QTQNRM, RTOVFL, RTUNFL, TEMP1, TSTNRM, ULP,
239 $ ULPINV, UNFL, VL, VU
242 INTEGER ISEEDIN( 4 ), KMAGN( MAXTYP ), KMODE( MAXTYP ),
244 DOUBLE PRECISION ( 10 ), WTIME( 10 )
250 EXTERNAL LSAME, NUMROC, PSLAMCH, SLARAN
260 INTRINSIC abs, int,
max,
min, real, sqrt
263 DATA ktype / 1, 2, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 8,
264 $ 8, 8, 9, 9, 9, 9, 9, 10, 11 /
265 DATA kmagn / 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 3, 1,
266 $ 2, 3, 1, 1, 1, 2, 3, 1, 1 /
267 DATA kmode / 0, 0, 4, 3, 1, 4, 4, 4, 3, 1, 4, 4, 0,
268 $ 0, 0, 4, 3, 1, 4, 4, 3, 0 /
272 IF( block_cyclic_2d*csrc_*ctxt_*dlen_*dtype_*lld_*mb_*m_*nb_*n_
276 passed =
'PASSED EEVX'
277 context = desca( ctxt_ )
280 CALL blacs_pinfo( iam, nnodes )
287 CALL pclasizesep( desca, iprepad, ipostpad, sizemqrleft,
288 $ sizemqrright, sizeqrf, sizetms, rsizeqtq,
289 $ rsizechk, sizeheevx, rsizeheevx, isizeheevx,
290 $ sizeheevd, rsizeheevd, isizeheevd, sizesubtst,
291 $ rsizesubtst, isizesubtst, sizetst, rsizetst,
294 IF( lrwork.LT.rsizetst )
THEN
298 CALL igamx2d( context,
'a',
' ', 1, 1, info, 1, 1, 1, -1, -1, 0 )
305 llwork = lwork - indwork + 1
306 llrwork = lrwork - indrwork + 1
308 ulp = pslamch( context, 'p
' )
310 UNFL = PSLAMCH( CONTEXT, 'safe
min' )
312 CALL SLABAD( UNFL, OVFL )
313 RTUNFL = SQRT( UNFL )
314 RTOVFL = SQRT( OVFL )
315 ANINV = ONE / REAL( MAX( 1, N ) )
319.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
320 CALL IGEBS2D( CONTEXT, 'a
', ' ', 4, 1, ISEED, 4 )
322 CALL IGEBR2D( CONTEXT, 'a
', ' ', 4, 1, ISEED, 4, 0, 0 )
324 ISEEDIN( 1 ) = ISEED( 1 )
325 ISEEDIN( 2 ) = ISEED( 2 )
326 ISEEDIN( 3 ) = ISEED( 3 )
327 ISEEDIN( 4 ) = ISEED( 4 )
346 ITYPE = KTYPE( MATTYPE )
347 IMODE = KMODE( MATTYPE )
351 GO TO ( 10, 20, 30 )KMAGN( MATTYPE )
358 ANORM = ( RTOVFL*ULP )*ANINV
362 ANORM = RTUNFL*N*ULPINV
366.LE.
IF( MATTYPE15 ) THEN
369 COND = ULPINV*ANINV / TEN
377.EQ.
IF( ITYPE1 ) THEN
382 RWORK( INDD+I-1 ) = ZERO
384 CALL PCLASET( 'all
', N, N, CZERO, CZERO, COPYA, 1, 1,
388.EQ.
ELSE IF( ITYPE2 ) THEN
393 RWORK( INDD+I-1 ) = ONE
395 CALL PCLASET( 'all
', N, N, CZERO, CONE, COPYA, 1, 1, DESCA )
398.EQ.
ELSE IF( ITYPE4 ) THEN
402 CALL PCFILLPAD( DESCA( CTXT_ ), SIZETMS, 1, WORK( INDWORK ),
403 $ SIZETMS, IPREPAD, IPOSTPAD, PADVAL+1.0E+0 )
405 CALL PCLATMS( N, N, 's
', ISEED, 's
', RWORK( INDD ), IMODE,
406 $ COND, ANORM, 0, 0, 'n
', COPYA, 1, 1, DESCA,
407 $ ORDER, WORK( INDWORK+IPREPAD ), SIZETMS,
411 CALL PCCHEKPAD( DESCA( CTXT_ ), 'pclatms1-work
', SIZETMS, 1,
412 $ WORK( INDWORK ), SIZETMS, IPREPAD, IPOSTPAD,
415.EQ.
ELSE IF( ITYPE5 ) THEN
419 CALL PCFILLPAD( DESCA( CTXT_ ), SIZETMS, 1, WORK( INDWORK ),
420 $ SIZETMS, IPREPAD, IPOSTPAD, PADVAL+2.0E+0 )
422 CALL PCLATMS( N, N, 's
', ISEED, 's
', RWORK( INDD ), IMODE,
423 $ COND, ANORM, N, N, 'n
', COPYA, 1, 1, DESCA,
424 $ ORDER, WORK( INDWORK+IPREPAD ), SIZETMS,
427 CALL PCCHEKPAD( DESCA( CTXT_ ), 'pclatms2-work
', SIZETMS, 1,
428 $ WORK( INDWORK ), SIZETMS, IPREPAD, IPOSTPAD,
433.EQ.
ELSE IF( ITYPE8 ) THEN
437 NP = NUMROC( N, DESCA( MB_ ), MYROW, 0, NPROW )
438 NQ = NUMROC( N, DESCA( NB_ ), MYCOL, 0, NPCOL )
439 CALL PCMATGEN( DESCA( CTXT_ ), 'h
', 'n
', N, N, DESCA( MB_ ),
440 $ DESCA( NB_ ), COPYA, DESCA( LLD_ ),
441 $ DESCA( RSRC_ ), DESCA( CSRC_ ), ISEED( 1 ),
442 $ 0, NP, 0, NQ, MYROW, MYCOL, NPROW, NPCOL )
446.EQ.
ELSE IF( ITYPE9 ) THEN
451 CALL PCFILLPAD( DESCA( CTXT_ ), SIZETMS, 1, WORK( INDWORK ),
452 $ SIZETMS, IPREPAD, IPOSTPAD, PADVAL+3.0E+0 )
454 CALL PCLATMS( N, N, 's
', ISEED, 's
', RWORK( INDD ), IMODE,
455 $ COND, ANORM, N, N, 'n
', COPYA, 1, 1, DESCA,
456 $ ORDER, WORK( INDWORK+IPREPAD ), SIZETMS,
461 CALL PCCHEKPAD( DESCA( CTXT_ ), 'pclatms3-work
', SIZETMS, 1,
462 $ WORK( INDWORK ), SIZETMS, IPREPAD, IPOSTPAD,
465.EQ.
ELSE IF( ITYPE10 ) THEN
470 CALL PCLASET( 'all
', N, N, CZERO, CZERO, COPYA, 1, 1,
472 NP = NUMROC( N, DESCA( MB_ ), 0, 0, NPROW )
473 NQ = NUMROC( N, DESCA( NB_ ), 0, 0, NPCOL )
479 IN = MIN( 1+INT( SLARAN( ISEED )*REAL( NLOC ) ), N-NGEN )
481 CALL CLATMS( IN, IN, 's
', ISEED, 'p
', RWORK( INDD ),
482 $ IMODE, COND, ANORM, 1, 1, 'n
', A, LDA,
483 $ WORK( INDWORK ), IINFO )
486 TEMP1 = ABS( A( I-1, I ) ) /
487 $ SQRT( ABS( A( I-1, I-1 )*A( I, I ) ) )
488.GT.
IF( TEMP1HALF ) THEN
489 A( I-1, I ) = HALF*SQRT( ABS( A( I-1, I-1 )*A( I,
491 A( I, I-1 ) = A( I-1, I )
494 CALL PCELSET( COPYA, NGEN+1, NGEN+1, DESCA, A( 1, 1 ) )
496 CALL PCELSET( COPYA, NGEN+I, NGEN+I, DESCA,
498 CALL PCELSET( COPYA, NGEN+I-1, NGEN+I, DESCA,
500 CALL PCELSET( COPYA, NGEN+I, NGEN+I-1, DESCA,
508.EQ.
ELSE IF( ITYPE11 ) THEN
517 IN = MIN( J, N-NGEN )
519 RWORK( INDD+NGEN+I ) = TEMP1
528 CALL PCFILLPAD( DESCA( CTXT_ ), SIZETMS, 1, WORK( INDWORK ),
529 $ SIZETMS, IPREPAD, IPOSTPAD, PADVAL+4.0E+0 )
531 CALL PCLATMS( N, N, 's
', ISEED, 's
', RWORK( INDD ), IMODE,
532 $ COND, ANORM, 0, 0, 'n
', COPYA, 1, 1, DESCA,
533 $ ORDER, WORK( INDWORK+IPREPAD ), SIZETMS,
536 CALL PCCHEKPAD( DESCA( CTXT_ ), 'pclatms4-work
', SIZETMS, 1,
537 $ WORK( INDWORK ), SIZETMS, IPREPAD, IPOSTPAD,
549 $ CALL SLASRT( 'i
', N, RWORK( INDD ), IINFO )
559 CALL PCLASIZEHEEVX( WKNOWN, 'a
', N, DESCA, VL, VU, IL, IU,
560 $ ISEED, RWORK( INDD ), MAXSIZE, VECSIZE,
563 LHEEVXSIZE = MIN( MAXSIZE, LLRWORK )
565 CALL PCSEPSUBTST( WKNOWN, 'v
', 'a
', UPLO, N, VL, VU, IL, IU,
566 $ THRESH, ABSTOL, A, COPYA, Z, 1, 1, DESCA,
567 $ RWORK( INDD ), WIN, IFAIL, ICLUSTR, GAP,
568 $ IPREPAD, IPOSTPAD, WORK( INDWORK ), LLWORK,
569 $ RWORK( INDRWORK ), LLRWORK, LHEEVXSIZE,
570 $ IWORK, ISIZEHEEVX, RES, TSTNRM, QTQNRM,
578.LE.
IF( THRESHZERO ) THEN
581.NE.
ELSE IF( RES0 ) THEN
587.GT..AND.
IF( THRESHZERO LSAME( SUBTESTS, 'y
' ) ) THEN
595 CALL PCLASIZEHEEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
596 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
601 CALL PCSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
602 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
603 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
604 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
605 $ WORK( INDWORK ), LLWORK, RWORK, LRWORK,
606 $ LHEEVXSIZE, IWORK, ISIZEHEEVX, RES,
607 $ TSTNRM, QTQNRM, NOUT )
610 PASSED = 'failed
stest 1
'
611 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
612 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
622 CALL PCLASIZEHEEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
623 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
626 LHEEVXSIZE = VECSIZE + INT( SLARAN( ISEED )*
627 $ REAL( MAXSIZE-VECSIZE ) )
629 CALL PCSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
630 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
631 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
632 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
633 $ WORK( INDWORK ), LLWORK, RWORK, LRWORK,
634 $ LHEEVXSIZE, IWORK, ISIZEHEEVX, RES,
635 $ TSTNRM, QTQNRM, NOUT )
638 PASSED = 'failed
stest 2
'
639 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
640 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
651 CALL PCLASIZEHEEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
652 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
656 CALL PCSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
657 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
658 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
659 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
660 $ WORK( INDWORK ), LLWORK, RWORK, LRWORK,
661 $ LHEEVXSIZE, IWORK, ISIZEHEEVX, RES,
662 $ TSTNRM, QTQNRM, NOUT )
665 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
666 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
667 PASSED = 'failed
stest 3
'
683 CALL PCLASIZEHEEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
684 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
689 CALL PCSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
690 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
691 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
692 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
693 $ WORK( INDWORK ), LLWORK, RWORK, LRWORK,
694 $ LHEEVXSIZE, IWORK, ISIZEHEEVX, RES,
695 $ TSTNRM, QTQNRM, NOUT )
698 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
699 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
700 PASSED = 'failed
stest 4
'
716 CALL PCLASIZEHEEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
717 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
722 CALL PCSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
723 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
724 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
725 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
726 $ WORK( INDWORK ), LLWORK, RWORK, LRWORK,
727 $ LHEEVXSIZE, IWORK, ISIZEHEEVX, RES,
728 $ TSTNRM, QTQNRM, NOUT )
731 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
732 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
733 PASSED = 'failed
stest 5
'
748 CALL PCLASIZEHEEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
749 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
754 CALL PCSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
755 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
756 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
757 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
758 $ WORK( INDWORK ), LLWORK, RWORK, LRWORK,
759 $ LHEEVXSIZE, IWORK, ISIZEHEEVX, RES,
760 $ TSTNRM, QTQNRM, NOUT )
763 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
764 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
765 PASSED = 'failed
stest 6
'
781 $ iseed, win( 1+iprepad ), maxsize,
783 lheevxsize = vecsize + int( slaran( iseed )*
784 $ real( maxsize-vecsize ) )
786 CALL pcsepsubtst( .true., jobz, range, uplo, n, vl, vu, il,
787 $ iu, thresh, abstol, a, copya, z, 1, 1,
788 $ desca, win( 1+iprepad ), wnew, ifail,
789 $ iclustr, gap, iprepad, ipostpad,
790 $ work( indwork ), llwork, rwork, lrwork,
791 $ lheevxsize, iwork, isizeheevx, res,
792 $ tstnrm, qtqnrm, nout )
795 maxtstnrm =
max( tstnrm, maxtstnrm )
796 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
797 passed =
'FAILED stest 7'
813 $ iseed, win( 1+iprepad ), maxsize,
818 CALL pcsepsubtst( .true., jobz, range, uplo, n, vl, vu, il,
819 $ iu, thresh, abstol, a, copya, z, 1, 1,
820 $ desca, win( 1+iprepad ), wnew, ifail,
821 $ iclustr, gap, iprepad, ipostpad,
822 $ work( indwork ), llwork, rwork, lrwork,
823 $ lheevxsize, iwork, isizeheevx, res,
824 $ tstnrm, qtqnrm, nout )
827 maxtstnrm =
max( tstnrm, maxtstnrm )
828 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
829 passed =
'FAILED stest 8'
845 $ iseed, win( 1+iprepad ), maxsize,
850 CALL pcsepsubtst( .true., jobz, range, uplo, n, vl, vu, il,
851 $ iu, thresh, abstol, a, copya, z, 1, 1,
852 $ desca, win( 1+iprepad ), wnew, ifail,
853 $ iclustr, gap, iprepad, ipostpad,
854 $ work( indwork ), llwork, rwork, lrwork,
855 $ lheevxsize, iwork, isizeheevx, res,
856 $ tstnrm, qtqnrm, nout )
859 maxtstnrm =
max( tstnrm, maxtstnrm )
860 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
861 passed =
'FAILED stest 9'
878 $ iseed, win( 1+iprepad ), maxsize,
883 CALL pcsepsubtst( .true., jobz, range, uplo, n, vl, vu, il,
884 $ iu, thresh, abstol, a, copya, z, 1, 1,
885 $ desca, win( 1+iprepad ), wnew, ifail,
886 $ iclustr, gap, iprepad, ipostpad,
887 $ work( indwork ), llwork, rwork, lrwork,
888 $ lheevxsize, iwork, isizeheevx, res,
889 $ tstnrm, qtqnrm, nout )
892 maxtstnrm =
max( tstnrm, maxtstnrm )
893 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
894 passed =
'FAILED stest10'
912 $ iseed, win( 1+iprepad ), maxsize,
916 CALL pcsepsubtst( .true., jobz, range, uplo, n, vl, vu, il,
917 $ iu, thresh, abstol, a, copya, z, 1, 1,
918 $ desca, win( 1+iprepad ), wnew, ifail,
919 $ iclustr, gap, iprepad, ipostpad,
920 $ work( indwork ), llwork, rwork, lrwork,
921 $ lheevxsize, iwork, isizeheevx, res,
922 $ tstnrm, qtqnrm, nout )
925 maxtstnrm =
max( tstnrm, maxtstnrm )
926 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
927 passed =
'FAILED stest11'
944 $ iseed, win( 1+iprepad ), maxsize,
949 CALL pcsepsubtst( .true., jobz, range, uplo, n, vl, vu, il,
950 $ iu, thresh, abstol, a, copya, z, 1, 1,
951 $ desca, win( 1+iprepad ), wnew, ifail,
952 $ iclustr, gap, iprepad, ipostpad,
953 $ work( indwork ), llwork, rwork, lrwork,
954 $ lheevxsize, iwork, isizeheevx, res,
955 $ tstnrm, qtqnrm, nout )
958 maxtstnrm =
max( tstnrm, maxtstnrm )
959 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
960 passed =
'FAILED stest12'
978 $ iseed, win( 1+iprepad ), maxsize,
982 CALL pcsepsubtst( .true., jobz, range, uplo, n, vl, vu, il,
983 $ iu, thresh, abstol, a, copya, z, 1, 1,
984 $ desca, win( 1+iprepad ), wnew, ifail,
985 $ iclustr, gap, iprepad, ipostpad,
986 $ work( indwork ), llwork, rwork, lrwork,
987 $ lheevxsize, iwork, isizeheevx, res,
988 $ tstnrm, qtqnrm, nout )
991 maxtstnrm =
max( tstnrm, maxtstnrm )
992 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
993 passed =
'FAILED stest13'
1001 CALL igamx2d( context,
'All',
' ', 1, 1, info, 1, -1, -1, -1, -1,
1004 IF( info.EQ.1 )
THEN
1006 WRITE( nout, fmt = 9994 )
'C '
1007 WRITE( nout, fmt = 9993 )iseedin( 1 )
1008 WRITE( nout, fmt = 9992 )iseedin( 2 )
1009 WRITE( nout, fmt = 9991 )iseedin( 3 )
1010 WRITE( nout, fmt = 9990 )iseedin( 4 )
1011 IF( lsame( uplo,
'L' ) )
THEN
1012 WRITE( nout, fmt = 9994 )
' UPLO= ''L'' '
1014 WRITE( nout, fmt = 9994 )
' UPLO= ''U'' '
1016 IF( lsame( subtests,
'Y' ) )
THEN
1017 WRITE( nout, fmt = 9994 )
' SUBTESTS= ''Y'' '
1019 WRITE( nout, fmt = 9994 )
' SUBTESTS= ''N'' '
1021 WRITE( nout, fmt = 9989 )n
1022 WRITE( nout, fmt = 9988 )nprow
1023 WRITE( nout, fmt = 9987 )npcol
1024 WRITE( nout, fmt = 9986 )nb
1025 WRITE( nout, fmt = 9985 )mattype
1026 WRITE( nout, fmt = 9982 )abstol
1027 WRITE( nout, fmt = 9981 )thresh
1028 WRITE( nout, fmt = 9994 )
'C '
1032 CALL slcombine( context,
'All',
'>',
'W', 6, 1, wtime )
1033 CALL slcombine( context,
'All',
'>',
'C', 6, 1, ctime )
1035 IF( info.EQ.0 .OR. info.EQ.1 )
THEN
1036 IF( wtime( 1 ).GE.0.0 )
THEN
1037 WRITE( nout, fmt = 9999 )n, nb, nprow, npcol, mattype,
1038 $ subtests, wtime( 1 ), ctime( 1 ), maxtstnrm,
1041 WRITE( nout, fmt = 9998 )n, nb, nprow, npcol, mattype,
1042 $ subtests, ctime( 1 ), maxtstnrm, maxqtqnrm, passed
1044 ELSE IF( info.EQ.2 )
THEN
1045 IF( wtime( 1 ).GE.0.0 )
THEN
1046 WRITE( nout, fmt = 9997 )n, nb, nprow, npcol, mattype,
1047 $ subtests, wtime( 1 ), ctime( 1 )
1049 WRITE( nout, fmt = 9996 )n, nb, nprow, npcol, mattype,
1050 $ subtests, ctime( 1 )
1052 ELSE IF( info.EQ.3 )
THEN
1053 WRITE( nout, fmt = 9995 )n, nb, nprow, npcol, mattype,
1060 passed =
'PASSED EEVD'
1064 IF( info.EQ.0 )
THEN
1066 np0 = numroc( n, nb, 0, 0, nprow )
1067 nq0 = numroc(
max( n, 1 ), nb, 0, 0, npcol )
1068 lheevdsize = 1 + 9*n + 3*np0*nq0
1069 isizeheevd =
max( 1, 2+7*n+8*npcol )
1071 CALL pcsdpsubtst( wknown, uplo, n, thresh, abstol, a, copya, z,
1072 $ 1, 1, desca, win, wnew, iprepad, ipostpad,
1073 $ work( indwork ), llwork, rwork, lrwork,
1074 $ lheevdsize, iwork, isizeheevd, res, tstnrm,
1081 passed =
'FAILED EEVD'
1088 CALL igamx2d( context,
'All',
' ', 1, 1, info, 1, -1, -1, -1, -1,
1091 IF( info.EQ.1 )
THEN
1093 WRITE( nout, fmt = 9994 )
'C '
1094 WRITE( nout, fmt = 9993 )iseedin( 1 )
1095 WRITE( nout, fmt = 9992 )iseedin( 2 )
1096 WRITE( nout, fmt = 9991 )iseedin( 3 )
1097 WRITE( nout, fmt = 9990 )iseedin( 4 )
1098 IF( lsame( uplo,
'L' ) )
THEN
1099 WRITE( nout, fmt = 9994 )
' UPLO= ''L'' '
1101 WRITE( nout, fmt = 9994 )
' UPLO= ''U'' '
1103 IF( lsame( subtests,
'Y' ) )
THEN
1104 WRITE( nout, fmt = 9994 )
' SUBTESTS= ''Y'' '
1106 WRITE( nout, fmt = 9994 )
' SUBTESTS= ''N'' '
1108 WRITE( nout, fmt = 9989 )n
1109 WRITE( nout, fmt = 9988 )nprow
1110 WRITE( nout, fmt = 9987 )npcol
1111 WRITE( nout, fmt = 9986 )nb
1112 WRITE( nout, fmt = 9985 )mattype
1113 WRITE( nout, fmt = 9982 )abstol
1114 WRITE( nout, fmt = 9981 )thresh
1115 WRITE( nout, fmt = 9994 )
'C '
1119 CALL slcombine( context,
'All',
'>',
'W', 6, 1, wtime )
1120 CALL slcombine( context,
'All',
'>',
'C', 6, 1, ctime )
1122 IF( info.EQ.0 .OR. info.EQ.1 )
THEN
1123 IF( wtime( 1 ).GE.0.0 )
THEN
1124 WRITE( nout, fmt = 9999 )n, nb, nprow, npcol, mattype,
1125 $ subtests, wtime( 1 ), ctime( 1 ), maxtstnrm,
1128 WRITE( nout, fmt = 9998 )n, nb, nprow, npcol, mattype,
1129 $ subtests, ctime( 1 ), maxtstnrm, maxqtqnrm, passed
1131 ELSE IF( info.EQ.2 )
THEN
1132 IF( wtime( 1 ).GE.0.0 )
THEN
1133 WRITE( nout, fmt = 9997 )n, nb, nprow, npcol, mattype,
1134 $ subtests, wtime( 1 ), ctime( 1 )
1136 WRITE( nout, fmt = 9996 )n, nb, nprow, npcol, mattype,
1137 $ subtests, ctime( 1 )
1139 ELSE IF( info.EQ.3 )
THEN
1140 WRITE( nout, fmt = 9995 )n, nb, nprow, npcol, mattype,
1147 9999
FORMAT( 1x, i5, 1x, i3, 1x, i3, 1x, i3, 1x, i3, 3x, a1, 1x, f8.2,
1148 $ 1x, f8.2, 1x, g9.2, 1x, g9.2, 1x, a14 )
1149 9998
FORMAT( 1x, i5, 1x, i3, 1x, i3, 1x, i3, 1x, i3, 3x, a1, 1x, 8x,
1150 $ 1x, f8.2, 1x, g9.2, 1x, g9.2, a14 )
1151 9997
FORMAT( 1x, i5, 1x, i3, 1x, i3, 1x, i3, 1x, i3, 3x, a1, 1x, f8.2,
1152 $ 1x, f8.2, 21x,
'Bypassed' )
1153 9996
FORMAT( 1x, i5, 1x, i3, 1x, i3, 1x, i3, 1x, i3, 3x, a1, 1x, 8x,
1154 $ 1x, f8.2, 21x,
'Bypassed' )
1155 9995
FORMAT( 1x, i5, 1x, i3, 1x, i3, 1x, i3, 1x, i3, 3x, a1, 32x,
1156 $
'Bad MEMORY parameters' )
1158 9993
FORMAT(
' ISEED( 1 ) =', i8 )
1159 9992
FORMAT(
' ISEED( 2 ) =', i8 )
1160 9991
FORMAT(
' ISEED( 3 ) =', i8 )
1161 9990
FORMAT(
' ISEED( 4 ) =', i8 )
1162 9989
FORMAT(
' N=', i8 )
1163 9988
FORMAT(
' NPROW=', i8 )
1164 9987
FORMAT(
' NPCOL=', i8 )
1165 9986
FORMAT(
' NB=', i8 )
1166 9985
FORMAT(
' MATTYPE=', i8 )
1167 9984
FORMAT(
' IBTYPE=', i8 )
1168 9983
FORMAT(
' SUBTESTS=', a1 )
1169 9982
FORMAT(
' ABSTOL=', d16.6 )
1170 9981
FORMAT(
' THRESH=', d16.6 )
1171 9980
FORMAT(
' Increase TOTMEM in PCSEPDRIVER' )