1 SUBROUTINE psseptst( DESCA, UPLO, N, MATTYPE, SUBTESTS, THRESH,
2 $ ORDER, ABSTOL, ISEED, A, COPYA, Z, LDA, WIN,
3 $ WNEW, IFAIL, ICLUSTR, GAP, IPREPAD, IPOSTPAD,
4 $ WORK, LWORK, IWORK, LIWORK, HETERO, NOUT,
13 CHARACTER HETERO, SUBTESTS, UPLO
14 INTEGER INFO, IPOSTPAD, IPREPAD, LDA, LIWORK, LWORK,
15 $ MATTYPE, N, NOUT, ORDER
19 INTEGER DESCA( * ), ICLUSTR( * ), IFAIL( * ),
20 $ iseed( 4 ), iwork( * )
21 REAL A( LDA, * ), COPYA( LDA, * ), GAP( * ),
22 $ WIN( * ), WNEW( * ), WORK( * ), Z( LDA, * )
196 INTEGER BLOCK_CYCLIC_2D, , DT_, CTXT_, M_, N_,
198PARAMETER ( BLOCK_CYCLIC_2D = 1, dlen_ = 9, dt_ = 1,
199 $ ctxt_ = 2, m_ = 3, n_ = 4, mb_ = 5, nb_ = 6,
200 $ rsrc_ = 7, csrc_ = 8, lld_ = 9 )
201 REAL HALF, ONE, TEN, ZERO
202 parameter( zero = 0.0e+0, one = 1.0e+0,
205 PARAMETER ( padval = 19.25e+0 )
207 PARAMETER ( MAXTYP = 22 )
212 CHARACTER JOBZ, RANGE
214 INTEGER CONTEXT, I, IAM, IHETERO, IINFO, IL, IMODE, IN,
215 $ indd, indwork, isizesubtst, isizesyevx,
216 $ isizetst, itype, iu, j, llwork, lsyevxsize,
218 $ nnodes, np, npcol, nprow, nq, res, sizechk,
219 $ sizemqrleft, sizemqrright, sizeqrf, sizeqtq,
220 $ sizesubtst, sizesyev, sizesyevx, sizetms,
221 $ sizetst, valsize, vecsize,isizesyevd, sizesyevd
227 INTEGER ISEEDIN( 4 ), KMAGN( MAXTYP ), KMODE( MAXTYP ),
229 DOUBLE PRECISION CTIME( 10 ), WTIME( 10 )
235 EXTERNAL LSAME, NUMROC, PSLAMCH, SLARAN
245 INTRINSIC abs, real, int,
max,
min, sqrt
248 DATA ktype / 1, 2, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 8,
249 $ 8, 8, 9, 9, 9, 9, 9, 10, 11 /
250 DATA kmagn / 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 3, 1,
251 $ 2, 3, 1, 1, 1, 2, 3, 1, 1 /
252 DATA kmode / 0, 0, 4, 3, 1, 4, 4, 4, 3, 1, 4, 4, 0,
253 $ 0, 0, 4, 3, 1, 4, 4, 3, 0 /
257 IF( block_cyclic_2d*csrc_*ctxt_*dlen_*dt_*lld_*mb_*m_*nb_*n_*
261 passed =
'PASSED EVX'
262 context = desca( ctxt_ )
265 CALL blacs_pinfo( iam, nnodes )
271 IF( lsame( hetero,
'Y' ) )
THEN
276 CALL igebs2d( context,
'All', '
', 1, 1, IHETERO, 1 )
278 CALL IGEBR2D( CONTEXT, 'all
', ' ', 1, 1, IHETERO, 1, 0, 0 )
280.EQ.
IF( IHETERO2 ) THEN
288 CALL PSLASIZESQP( DESCA, IPREPAD, IPOSTPAD, SIZEMQRLEFT,
289 $ SIZEMQRRIGHT, SIZEQRF, SIZETMS, SIZEQTQ,
290 $ SIZECHK, SIZESYEVX, ISIZESYEVX, SIZESYEV,
291 $ SIZESYEVD, ISIZESYEVD,
292 $ SIZESUBTST, ISIZESUBTST, SIZETST, ISIZETST )
294.LT.
IF( LWORKSIZETST ) THEN
298 CALL IGAMX2D( CONTEXT, 'a
', ' ', 1, 1, INFO, 1, 1, 1, -1, -1, 0 )
304 LLWORK = LWORK - INDWORK + 1
306 ULP = PSLAMCH( CONTEXT, 'p
' )
308 UNFL = PSLAMCH( CONTEXT, 'safe
min' )
310 CALL SLABAD( UNFL, OVFL )
311 RTUNFL = SQRT( UNFL )
312 RTOVFL = SQRT( OVFL )
313 ANINV = ONE / REAL( MAX( 1, N ) )
317.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
318 CALL IGEBS2D( CONTEXT, 'a
', ' ', 4, 1, ISEED, 4 )
320 CALL IGEBR2D( CONTEXT, 'a
', ' ', 4, 1, ISEED, 4, 0, 0 )
322 ISEEDIN( 1 ) = ISEED( 1 )
323 ISEEDIN( 2 ) = ISEED( 2 )
324 ISEEDIN( 3 ) = ISEED( 3 )
325 ISEEDIN( 4 ) = ISEED( 4 )
344 ITYPE = KTYPE( MATTYPE )
345 IMODE = KMODE( MATTYPE )
349 GO TO ( 10, 20, 30 )KMAGN( MATTYPE )
356 ANORM = ( RTOVFL*ULP )*ANINV
360 ANORM = RTUNFL*N*ULPINV
364.LE.
IF( MATTYPE15 ) THEN
367 COND = ULPINV*ANINV / TEN
375.EQ.
IF( ITYPE1 ) THEN
380 WORK( INDD+I-1 ) = ZERO
382 CALL PSLASET( 'all
', N, N, ZERO, ZERO, COPYA, 1, 1, DESCA )
385.EQ.
ELSE IF( ITYPE2 ) THEN
390 WORK( INDD+I-1 ) = ONE
392 CALL PSLASET( 'all
', N, N, ZERO, ONE, COPYA, 1, 1, DESCA )
395.EQ.
ELSE IF( ITYPE4 ) THEN
399 CALL PSFILLPAD( DESCA( CTXT_ ), SIZETMS, 1, WORK( INDWORK ),
400 $ SIZETMS, IPREPAD, IPOSTPAD, PADVAL+1.0E+0 )
402 CALL PSLATMS( N, N, 's
', ISEED, 's
', WORK( INDD ), IMODE,
403 $ COND, ANORM, 0, 0, 'n
', COPYA, 1, 1, DESCA,
404 $ ORDER, WORK( INDWORK+IPREPAD ), SIZETMS,
408 CALL PSCHEKPAD( DESCA( CTXT_ ), 'pslatms1-work
', SIZETMS, 1,
409 $ WORK( INDWORK ), SIZETMS, IPREPAD, IPOSTPAD,
412.EQ.
ELSE IF( ITYPE5 ) THEN
416 CALL PSFILLPAD( DESCA( CTXT_ ), SIZETMS, 1, WORK( INDWORK ),
417 $ SIZETMS, IPREPAD, IPOSTPAD, PADVAL+2.0E+0 )
419 CALL PSLATMS( N, N, 's
', ISEED, 's
', WORK( INDD ), IMODE,
420 $ COND, ANORM, N, N, 'n
', COPYA, 1, 1, DESCA,
421 $ ORDER, WORK( INDWORK+IPREPAD ), SIZETMS,
424 CALL PSCHEKPAD( DESCA( CTXT_ ), 'pslatms2-work
', SIZETMS, 1,
425 $ WORK( INDWORK ), SIZETMS, IPREPAD, IPOSTPAD,
430.EQ.
ELSE IF( ITYPE8 ) THEN
434 NP = NUMROC( N, DESCA( MB_ ), MYROW, 0, NPROW )
435 NQ = NUMROC( N, DESCA( NB_ ), MYCOL, 0, NPCOL )
436 CALL PSMATGEN( DESCA( CTXT_ ), 's
', 'n
', N, N, DESCA( MB_ ),
437 $ DESCA( NB_ ), COPYA, DESCA( LLD_ ),
438 $ DESCA( RSRC_ ), DESCA( CSRC_ ), ISEED( 1 ),
439 $ 0, NP, 0, NQ, MYROW, MYCOL, NPROW, NPCOL )
443.EQ.
ELSE IF( ITYPE9 ) THEN
448 CALL PSFILLPAD( DESCA( CTXT_ ), SIZETMS, 1, WORK( INDWORK ),
449 $ SIZETMS, IPREPAD, IPOSTPAD, PADVAL+3.0E+0 )
451 CALL PSLATMS( N, N, 's
', ISEED, 's
', WORK( INDD ), IMODE,
452 $ COND, ANORM, N, N, 'n
', COPYA, 1, 1, DESCA,
453 $ ORDER, WORK( INDWORK+IPREPAD ), SIZETMS,
458 CALL PSCHEKPAD( DESCA( CTXT_ ), 'pslatms3-work
', SIZETMS, 1,
459 $ WORK( INDWORK ), SIZETMS, IPREPAD, IPOSTPAD,
462.EQ.
ELSE IF( ITYPE10 ) THEN
467 CALL PSLASET( 'all
', N, N, ZERO, ZERO, COPYA, 1, 1, DESCA )
468 NP = NUMROC( N, DESCA( MB_ ), 0, 0, NPROW )
469 NQ = NUMROC( N, DESCA( NB_ ), 0, 0, NPCOL )
475 IN = MIN( 1+INT( SLARAN( ISEED )*REAL( NLOC ) ), N-NGEN )
477 CALL SLATMS( IN, IN, 's
', ISEED, 'p
', WORK( INDD ),
478 $ IMODE, COND, ANORM, 1, 1, 'n
', A, LDA,
479 $ WORK( INDWORK ), IINFO )
482 TEMP1 = ABS( A( I-1, I ) ) /
483 $ SQRT( ABS( A( I-1, I-1 )*A( I, I ) ) )
484.GT.
IF( TEMP1HALF ) THEN
485 A( I-1, I ) = HALF*SQRT( ABS( A( I-1, I-1 )*A( I,
487 A( I, I-1 ) = A( I-1, I )
490 CALL PSELSET( COPYA, NGEN+1, NGEN+1, DESCA, A( 1, 1 ) )
492 CALL PSELSET( COPYA, NGEN+I, NGEN+I, DESCA,
494 CALL PSELSET( COPYA, NGEN+I-1, NGEN+I, DESCA,
496 CALL PSELSET( COPYA, NGEN+I, NGEN+I-1, DESCA,
504.EQ.
ELSE IF( ITYPE11 ) THEN
513 IN = MIN( J, N-NGEN )
515 WORK( INDD+NGEN+I ) = TEMP1
524 CALL PSFILLPAD( DESCA( CTXT_ ), SIZETMS, 1, WORK( INDWORK ),
525 $ SIZETMS, IPREPAD, IPOSTPAD, PADVAL+4.0E+0 )
527 CALL PSLATMS( N, N, 's
', ISEED, 's
', WORK( INDD ), IMODE,
528 $ COND, ANORM, 0, 0, 'n
', COPYA, 1, 1, DESCA,
529 $ ORDER, WORK( INDWORK+IPREPAD ), SIZETMS,
532 CALL PSCHEKPAD( DESCA( CTXT_ ), 'pslatms4-work
', SIZETMS, 1,
533 $ WORK( INDWORK ), SIZETMS, IPREPAD, IPOSTPAD,
546 $ CALL SLASRT( 'i
', N, WORK( INDD ), IINFO )
556 CALL PSLASIZESYEVX( WKNOWN, 'a
', N, DESCA, VL, VU, IL, IU,
557 $ ISEED, WORK( INDD ), MAXSIZE, VECSIZE,
560 LSYEVXSIZE = MIN( MAXSIZE, LLWORK )
562 CALL PSSEPSUBTST( WKNOWN, 'v
', 'a
', UPLO, N, VL, VU, IL, IU,
563 $ THRESH, ABSTOL, A, COPYA, Z, 1, 1, DESCA,
564 $ WORK( INDD ), WIN, IFAIL, ICLUSTR, GAP,
565 $ IPREPAD, IPOSTPAD, WORK( INDWORK ), LLWORK,
566 $ LSYEVXSIZE, IWORK, ISIZESYEVX, RES, TSTNRM,
574.LE.
IF( THRESHZERO ) THEN
577.NE.
ELSE IF( RES0 ) THEN
583.GT..AND.
IF( THRESHZERO LSAME( SUBTESTS, 'y
' ) ) THEN
591 CALL PSLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
592 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
597 CALL PSSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
598 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
599 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
600 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
601 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
602 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
606 PASSED = 'failed
stest 1
'
607 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
608 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
618 CALL PSLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
619 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
622 LSYEVXSIZE = VECSIZE + INT( SLARAN( ISEED )*
623 $ REAL( MAXSIZE-VECSIZE ) )
625 CALL PSSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
626 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
627 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
628 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
629 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
630 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
634 PASSED = 'failed
stest 2
'
635 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
636 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
647 CALL PSLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
648 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
653 CALL PSSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
654 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
655 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
656 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
657 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
658 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
662 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
663 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
664 PASSED = 'failed
stest 3
'
680 CALL PSLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
681 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
686 CALL PSSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
687 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
688 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
689 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
690 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
691 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
695 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
696 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
697 PASSED = 'failed
stest 4
'
713 CALL PSLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
714 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
719 CALL PSSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
720 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
721 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
722 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
723 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
724 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
728 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
729 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
730 PASSED = 'failed
stest 5
'
745 CALL PSLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
746 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
751 CALL PSSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
752 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
753 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
754 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
755 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
756 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
760 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
761 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
762 PASSED = 'failed
stest 6
'
777 CALL PSLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
778 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
780 LSYEVXSIZE = VECSIZE + INT( SLARAN( ISEED )*
781 $ REAL( MAXSIZE-VECSIZE ) )
783 CALL PSSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
784 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
785 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
786 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
787 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
788 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
792 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
793 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
794 PASSED = 'failed
stest 7
'
809 CALL PSLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
810 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
815 CALL PSSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
816 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
817 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
818 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
819 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
820 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
824 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
825 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
826 PASSED = 'failed
stest 8
'
841 CALL PSLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
842 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
847 CALL PSSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
848 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
849 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
850 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
851 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
852 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
856 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
857 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
858 PASSED = 'failed
stest 9
'
874 CALL PSLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
875 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
880 CALL PSSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
881 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
882 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
883 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
884 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
885 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
889 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
890 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
891 PASSED = 'failed stest10
'
908 CALL PSLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
909 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
912 LSYEVXSIZE = VECSIZE + INT( SLARAN( ISEED )*
913 $ REAL( MAXSIZE-VECSIZE ) )
915 CALL PSSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
916 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
917 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
918 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
919 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
920 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
924 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
925 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
926 PASSED = 'failed stest11
'
942 CALL PSLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
943 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
948 CALL PSSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
949 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
950 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
951 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
952 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
953 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
957 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
958 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
959 PASSED = 'failed stest12
'
976 CALL PSLASIZESYEVX( .TRUE., RANGE, N, DESCA, VL, VU, IL, IU,
977 $ ISEED, WIN( 1+IPREPAD ), MAXSIZE,
980 LSYEVXSIZE = VALSIZE + INT( SLARAN( ISEED )*
981 $ REAL( VECSIZE-VALSIZE ) )
983 CALL PSSEPSUBTST( .TRUE., JOBZ, RANGE, UPLO, N, VL, VU, IL,
984 $ IU, THRESH, ABSTOL, A, COPYA, Z, 1, 1,
985 $ DESCA, WIN( 1+IPREPAD ), WNEW, IFAIL,
986 $ ICLUSTR, GAP, IPREPAD, IPOSTPAD,
987 $ WORK( INDWORK ), LLWORK, LSYEVXSIZE,
988 $ IWORK, ISIZESYEVX, RES, TSTNRM, QTQNRM,
992 MAXTSTNRM = MAX( TSTNRM, MAXTSTNRM )
993 MAXQTQNRM = MAX( QTQNRM, MAXQTQNRM )
994 PASSED = 'failed stest13
'
1002 CALL IGAMX2D( CONTEXT, 'all
', ' ', 1, 1, INFO, 1, -1, -1, -1, -1,
1005.EQ.
IF( INFO1 ) THEN
1007 WRITE( NOUT, FMT = 9994 )'c
'
1008 WRITE( NOUT, FMT = 9993 )ISEEDIN( 1 )
1009 WRITE( NOUT, FMT = 9992 )ISEEDIN( 2 )
1010 WRITE( NOUT, FMT = 9991 )ISEEDIN( 3 )
1011 WRITE( NOUT, FMT = 9990 )ISEEDIN( 4 )
1012 IF( LSAME( UPLO, 'l
' ) ) THEN
1013 WRITE( NOUT, FMT = 9994 )' uplo= '
'L'' '
1015 WRITE( nout, fmt = 9994 )
' UPLO= ''U'' '
1017 IF( lsame( subtests,
'Y' ) )
THEN
1018 WRITE( nout, fmt = 9994 )
' SUBTESTS= ''Y'' '
1020 WRITE( nout, fmt = 9994 )
' SUBTESTS= ''N'' '
1022 WRITE( nout, fmt = 9989 )n
1023 WRITE( nout, fmt = 9988 )nprow
1024 WRITE( nout, fmt = 9987 )npcol
1025 WRITE( nout, fmt = 9986 )nb
1026 WRITE( nout, fmt = 9985 )mattype
1027 WRITE( nout, fmt = 9982 )abstol
1028 WRITE( nout, fmt = 9981 )thresh
1029 WRITE( nout, fmt = 9994 )
'C '
1033 CALL slcombine( context,
'All',
'>',
'W', 6, 1, wtime )
1034 CALL slcombine( context,
'All',
'>',
'C', 6, 1, ctime )
1036 IF( info.EQ.0 .OR. info.EQ.1 )
THEN
1037 IF( wtime( 1 ).GE.0.0 )
THEN
1038 WRITE( nout, fmt = 9999 )n, nb, nprow, npcol, mattype,
1039 $ subtests, wtime( 1 ), ctime( 1 ), maxtstnrm,
1042 WRITE( nout, fmt = 9998 )n, nb, nprow, npcol, mattype,
1043 $ subtests, ctime( 1 ), maxtstnrm, maxqtqnrm, passed
1045 ELSE IF( info.EQ.2 )
THEN
1046 IF( wtime( 1 ).GE.0.0 )
THEN
1047 WRITE( nout, fmt = 9997 )n, nb, nprow, npcol, mattype,
1048 $ subtests, wtime( 1 ), ctime( 1 )
1050 WRITE( nout, fmt = 9996 )n, nb, nprow, npcol, mattype,
1051 $ subtests, ctime( 1 )
1053 ELSE IF( info.EQ.3 )
THEN
1054 WRITE( nout, fmt = 9995 )n, nb, nprow, npcol, mattype,
1063 passed =
'PASSED EV'
1068 IF( info.NE.0 )
THEN
1072 passed =
'SKIPPED EV'
1076 CALL pssyev( jobz, uplo, n, a, 1, 1, desca,
1077 $ work( indwork ), z, 1, 1, desca,
1078 $ work( indwork ), -1, info )
1079 minsize = int( work( indwork ) )
1081 CALL pssqpsubtst( wknown, jobz, uplo, n, thresh, abstol, a,
1082 $ copya, z, 1, 1, desca, win, wnew, iprepad,
1083 $ ipostpad, work( indwork ), llwork,
1084 $ minsize, res, tstnrm, qtqnrm, nout )
1087 maxtstnrm =
max( tstnrm, maxtstnrm )
1088 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
1089 passed =
'FAIL EV test1'
1097 IF( info.EQ.0 )
THEN
1101 $ work( indwork ), z, 1, 1, desca,
1102 $ work( indwork ), -1, info )
1103 minsize = int( work( indwork ) )
1105 CALL pssqpsubtst( wknown, jobz, uplo, n, thresh, abstol, a,
1106 $ copya, z, 1, 1, desca, win, wnew, iprepad,
1107 $ ipostpad, work( indwork ), llwork,
1108 $ minsize, res, tstnrm, qtqnrm, nout )
1111 maxtstnrm =
max( tstnrm, maxtstnrm )
1112 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
1113 passed =
'FAIL EV test2'
1117 IF( info.EQ.1 )
THEN
1119 WRITE( nout, fmt = 9994 )
'C '
1120 WRITE( nout, fmt = 9993 )iseedin( 1 )
1121 WRITE( nout, fmt = 9992 )iseedin( 2 )
1122 WRITE( nout, fmt = 9991 )iseedin( 3 )
1123 WRITE( nout, fmt = 9990 )iseedin( 4 )
1124 IF( lsame( uplo,
'L' ) )
THEN
1125 WRITE( nout, fmt = 9994 )
' UPLO= ''L'' '
1127 WRITE( nout, fmt
' UPLO= ''U'' '
1129 WRITE( nout, fmt = 9989 )n
1130 WRITE( nout, fmt = 9988 )nprow
1131 WRITE( nout, fmt = 9987 )npcol
1132 WRITE( nout, fmt = 9986 )nb
1133 WRITE( nout, fmt = 9985 )mattype
1134 WRITE( nout, fmt = 9982 )abstol
1135 WRITE( nout, fmt = 9981 )thresh
1136 WRITE( nout, fmt = 9994 )
'C '
1140 CALL slcombine( context,
'All',
'>',
'W', 6, 1, wtime )
1141 CALL slcombine( context,
'All',
'>',
'C', 6, 1, ctime )
1143 IF( info.EQ.0 .OR. info.EQ.1 )
THEN
1144 IF( wtime( 1 ).GE.0.0 )
THEN
1145 WRITE( nout, fmt = 9999 )n, nb, nprow, npcol, mattype,
1146 $ subtests, wtime( 1 ), ctime( 1 ), maxtstnrm,
1149 WRITE( nout, fmt = 9998 )n, nb, nprow, npcol, mattype,
1150 $ subtests, ctime( 1 ), maxtstnrm, maxqtqnrm,
1153 ELSE IF( info.EQ.2 )
THEN
1154 IF( wtime( 1 ).GE.0.0 )
THEN
1155 WRITE( nout, fmt = 9997 )n, nb, nprow, npcol, mattype,
1156 $ subtests, wtime( 1 ), ctime( 1 )
1158 WRITE( nout, fmt = 9996 )n, nb, nprow, npcol, mattype,
1159 $ subtests, ctime( 1 )
1161 ELSE IF( info.EQ.3 )
THEN
1162 WRITE( nout, fmt = 9995 )n, nb, nprow, npcol, mattype,
1171 IF( lsame( hetero,
'N' ) .AND. lsame( subtests,
'N' ) )
THEN
1172 passed =
'PASSED EVD'
1176 IF( info.NE.0 )
THEN
1180 passed =
'SKIPPED EVD'
1183 np = numroc( n, desca( mb_ ), 0, 0, nprow )
1184 nq = numroc( n, desca( nb_ ), 0, 0, npcol )
1185 minsize =
max( 1+6*n+2*np*nq,
1186 $ 3*n +
max( nb*( np+1 ), 3*nb ) ) + 2*n
1188 CALL pssdpsubtst( wknown, uplo, n, thresh, abstol, a,
1189 $ copya, z, 1, 1, desca, win, wnew, iprepad,
1190 $ ipostpad, work( indwork ), llwork,
1191 $ minsize, iwork, isizesyevd,
1192 $ res, tstnrm, qtqnrm, nout )
1195 maxtstnrm =
max( tstnrm, maxtstnrm )
1196 maxqtqnrm =
max( qtqnrm, maxqtqnrm )
1197 passed =
'FAIL EVD test1'
1201 IF( info.EQ.1 )
THEN
1203 WRITE( nout, fmt = 9994 )
'C '
1204 WRITE( nout, fmt = 9993 )iseedin( 1 )
1205 WRITE( nout, fmt = 9992 )iseedin( 2 )
1206 WRITE( nout, fmt = 9991 )iseedin( 3 )
1207 WRITE( nout, fmt = 9990 )iseedin( 4 )
1208 IF( lsame( uplo,
'L' ) )
THEN
1209 WRITE( nout, fmt = 9994 )
' UPLO= ''L'' '
1211 WRITE( nout, fmt = 9994 )
' UPLO= ''U'' '
1213 WRITE( nout, fmt = 9989 )n
1214 WRITE( nout, fmt = 9988 )nprow
1215 WRITE( nout, fmt = 9987 )npcol
1216 WRITE( nout, fmt = 9986 )nb
1217 WRITE( nout, fmt = 9985 )mattype
1218 WRITE( nout, fmt = 9982 )abstol
1219 WRITE( nout, fmt = 9981 )thresh
1220 WRITE( nout, fmt = 9994 )
'C '
1224 CALL slcombine( context,
'All',
'>',
'W', 6, 1, wtime )
1225 CALL slcombine( context,
'All',
'>',
'C', 6, 1, ctime )
1227 IF( info.EQ.0 .OR. info.EQ.1 )
THEN
1228 IF( wtime( 1 ).GE.0.0 )
THEN
1229 WRITE( nout, fmt = 9999 )n, nb, nprow, npcol, mattype,
1230 $ subtests, wtime( 1 ), ctime( 1 ), tstnrm,
1233 WRITE( nout, fmt = 9998 )n, nb, nprow, npcol, mattype,
1234 $ subtests, ctime( 1 ), maxtstnrm, maxqtqnrm,
1237 ELSE IF( info.EQ.2 )
THEN
1238 IF( wtime( 1 ).GE.0.0 )
THEN
1239 WRITE( nout, fmt = 9997 )n, nb, nprow, npcol, mattype,
1240 $ subtests, wtime( 1 ), ctime( 1 )
1242 WRITE( nout, fmt = 9996 )n, nb, nprow, npcol, mattype,
1243 $ subtests, ctime( 1 )
1245 ELSE IF( info.EQ.3 )
THEN
1246 WRITE( nout, fmt = 9995 )n, nb, nprow, npcol, mattype,
1252 9999
FORMAT( 1x, i5, 1x, i3, 1x, i3, 1x, i3, 1x, i3, 3x, a1, 1x,
1253 $ f8.2, 1x, f8.2, 1x, g9.2, 1x, g9.2, 1x, a14 )
1254 9998
FORMAT( 1x, i5, 1x, i3, 1x, i3, 1x, i3, 1x, i3, 3x, a1, 1x, 8x,
1255 $ 1x, f8.2, 1x, g9.2, 1x, g9.2, a14 )
1256 9997
FORMAT( 1x, i5, 1x, i3, 1x, i3, 1x, i3, 1x, i3, 3x, a1, 1x, f8.2,
1257 $ 1x, f8.2, 21x,
'Bypassed' )
1258 9996
FORMAT( 1x, i5, 1x, i3, 1x, i3, 1x, i3, 1x, i3, 3x, a1, 1x, 8x,
1259 $ 1x, f8.2, 21x, 'bypassed
' )
1260 9995 FORMAT( 1X, I5, 1X, I3, 1X, I3, 1X, I3, 1X, I3, 3X, A1, 32X,
1261 $ 'bad memory parameters
' )
1263 9993 FORMAT( ' iseed( 1 ) =
', I8 )
1264 9992 FORMAT( ' iseed( 2 ) =
', I8 )
1265 9991 FORMAT( ' iseed( 3 ) =
', I8 )
1266 9990 FORMAT( ' iseed( 4 ) =
', I8 )
1267 9989 FORMAT( ' n=
', I8 )
1268 9988 FORMAT( ' nprow=
', I8 )
1269 9987 FORMAT( ' npcol=
', I8 )
1270 9986 FORMAT( ' nb=
', I8 )
1271 9985 FORMAT( ' mattype=
', I8 )
1272 9984 FORMAT( ' ibtype=
', I8 )
1273 9983 FORMAT( ' subtests=
', A1 )
1274 9982 FORMAT( ' abstol=
', D16.6 )
1275 9981 FORMAT( ' thresh=
', D16.6 )