4 CHARACTER*7 SNAMES( NSUBS )
6 DATA snames/
'PSGEMV ',
'PSSYMV ',
'PSTRMV ',
7 $
'PSTRSV ',
'PSGER ',
'PSSYR ',
119 INTEGER maxtests, maxgrids, gapmul, realsz, totmem,
121 REAL one, padval, zero, rogue
122 parameter( maxtests = 20, maxgrids = 20, gapmul = 10,
123 $ realsz = 4, totmem = 2000000,
124 $ memsiz = totmem / realsz, zero = 0.0e+0,
125 $ one = 1.0e+0, padval = -9923.0e+0,
126 $ nsubs = 7, rogue = -1.0e+10 )
127 INTEGER block_cyclic_2d_inb, csrc_, ctxt_, dlen_,
128 $ dtype_, imb_, inb_, lld_, mb_, m_, nb_, n_,
130 parameter( block_cyclic_2d_inb = 2, dlen_ = 11,
131 $ dtype_ = 1, ctxt_ = 2, m_ = 3, n_ = 4,
132 $ imb_ = 5, inb_ = 6, mb_ = 7, nb_ = 8,
133 $ rsrc_ = 9, csrc_ = 10, lld_ = 11 )
136 LOGICAL errflg, sof, tee
137 CHARACTER*1 aform, diag, diagdo, trans, uplo
138 INTEGER csrca, csrcx, csrcy, i, ia, iam, iaseed, ictxt,
139 $ igap, imba, imbx, imby, imida, imidx, imidy,
140 $ inba, inbx, inby, incx, incy, ipa, ipg, ipmata,
141 $ ipmatx, ipmaty, iposta, ipostx, iposty, iprea,
142 $ iprex, iprey, ipx, ipy, iverb, ix, ixseed, iy,
143 $ iyseed, j, ja, jx, jy, k, lda, ldx, ldy, m, ma,
144 $ mba, mbx, mby, memreqd, mpa, mpx, mpy, mx, my,
145 $ mycol, myrow, n, na, nba, nbx, nby, ncola,
146 $ ngrids, nlx, nly, nout, npcol, nprocs, nprow,
147 $ nqa, nqx, nqy, nrowa, ntests, nx, ny, offd,
148 $ rsrca, , rsrcy, tskip, tstcnt
149 REAL , beta, scale, thresh
152 LOGICAL ltest( nsubs ), ycheck( nsubs )
153 CHARACTER*1 ( maxtests ), tranval( maxtests ),
154 $ uploval( maxtests )
156 INTEGER cscaval( maxtests ), cscxval( maxtests ),
157 $ cscyval( ), desca( dlen_ ),
158 $ descar( dlen_ ), ( dlen_ ),
159 $ descxr( dlen_ ), descy( dlen_ ),
160 $ descyr( dlen_ ), iaval( maxtests ), ierr( 6 ),
161 $ imbaval( maxtests ), imbxval( maxtests ),
162 $ imbyval( maxtests ), inbaval( maxtests ),
163 $ inbxval( maxtests ), inbyval( maxtests ),
164 $ ( maxtests ), incyval( maxtests ),
165 $ ixval( maxtests ), iyval( maxtests ),
166 $ javal( maxtests ), jxval( maxtests ),
168 INTEGER kfail( nsubs ), kpass( nsubs ), kskip( nsubs ),
169 $ ktests( nsubs ), maval( maxtests ),
170 $ mbaval( maxtests ), mbxval( maxtests ),
171 $ mbyval( maxtests ), mval( maxtests ),
172 $ mxval( maxtests ), myval( maxtests ),
173 $ naval( maxtests ), nbaval( maxtests ),
174 $ nbxval( maxtests ), nbyval( maxtests ),
175 $ nval( maxtests ), nxval( maxtests ),
176 $ nyval( maxtests ), pval( maxtests ),
177 $ qval( maxtests ), rscaval( maxtests ),
178 $ rscxval( maxtests ), rscyval( maxtests )
189 $ pssymv, pssyr, pssyr2, pstrmv, pstrsv,
psvprnt,
197 INTRINSIC abs,
max, mod, real
200 CHARACTER*7 snames( nsubs )
203 COMMON /snamec/snames
204 COMMON /infoc/info, nblog
205 COMMON /pberrorc/nout, abrtflg
208 DATA ycheck/.true., .true., .false., .false.,
209 $ .true., .false., .true./
246 CALL blacs_pinfo( iam, nprocs )
248 $ uploval, mval, nval, maval, naval, imbaval,
249 $ mbaval, inbaval, nbaval, rscaval, cscaval,
250 $ iaval, javal, mxval, nxval, imbxval, mbxval,
251 $ inbxval, nbxval, rscxval, cscxval, ixval,
252 $ jxval, incxval, myval, nyval, imbyval,
253 $ mbyval, inbyval, nbyval, rscyval, cscyval,
254 $ iyval, jyval, incyval, maxtests, ngrids,
255 $ pval, maxgrids, qval, maxgrids, nblog, ltest,
256 $ sof, tee, iam, igap, iverb, nprocs, thresh,
260 WRITE( nout, fmt = 9975 )
261 WRITE( nout, fmt = * )
279 IF( nprow.LT.1 )
THEN
281 $
WRITE( nout, fmt = 9999 )
'GRID SIZE',
'NPROW', nprow
283 ELSE IF( npcol.LT.1 )
THEN
285 $
WRITE( nout, fmt = 999
'GRID SIZE',
'NPCOL', npcol
287 ELSE IF( nprow*npcol.GT.nprocs )
THEN
289 $
WRITE( nout, fmt = 9998 ) nprow*npcol, nprocs
293 IF( ierr( 1 ).GT.0 )
THEN
295 $
WRITE( nout, fmt = 9997 )
'GRID'
302 CALL blacs_get( -1, 0, ictxt )
309 IF( myrow.GE.nprow .OR. mycol.GE.npcol )
362 WRITE( nout, fmt = * )
363 WRITE( nout, fmt = 9996 ) tstcnt, nprow, npcol
364 WRITE( nout, fmt = * )
366 WRITE( nout, fmt = 9995 )
367 WRITE( nout, fmt = 9994 )
368 WRITE( nout, fmt = 9995 )
369 WRITE( nout, fmt = 9993 ) m, n, uplo, trans, diag
371 WRITE( nout, fmt = 9995 )
372 WRITE( nout, fmt = 9992 )
373 WRITE( nout, fmt = 9995 )
374 WRITE( nout, fmt = 9991 ) ia, ja, ma, na, imba, inba,
375 $ mba, nba, rsrca, csrca
377 WRITE( nout, fmt = 9995 )
378 WRITE( nout, fmt = 9990 )
379 WRITE( nout, fmt = 9995 )
380 WRITE( nout, fmt = 9989 ) ix, jx, mx, nx, imbx, inbx,
381 $ mbx, nbx, rsrcx, csrcx, incx
383 WRITE( nout, fmt = 9995 )
384 WRITE( nout, fmt = 9988 )
385 WRITE( nout, fmt = 9995 )
386 WRITE( nout, fmt = 9989 ) iy, jy, my, ny, imby, inby,
387 $ mby, nby, rsrcy, csrcy, incy
389 WRITE( nout, fmt = 9995 )
395 IF( .NOT.
lsame( uplo,
'U' ).AND.
396 $ .NOT.
lsame( uplo,
'L' ) )
THEN
398 $
WRITE( nout, fmt = 9997 )
'UPLO'
403 IF( .NOT.
lsame( trans,
'N' ).AND.
404 $ .NOT.
lsame( trans,
'T' ).AND.
405 $ .NOT.
lsame( trans,
'C' ) )
THEN
407 $
WRITE( nout, fmt = 9997 )
'TRANS'
412 IF( .NOT.
lsame(
'U' ).AND.
413 $ .NOT.
lsame( diag ,
'N' ) )
THEN
415 $
WRITE( nout, fmt = 9997 ) trans
416 WRITE( nout, fmt
'DIAG'
424 $ block_cyclic_2d_inb, ma, na
426 $ imida, iposta, igap, gapmul, ierr( 1 ) )
428 $ block_cyclic_2d_inb, mx, nx, imbx, inbx,
429 $ mbx, nbx, rsrcx, csrcx, incx, mpx, nqx,
430 $ iprex, imidx, ipostx, igap, gapmul,
433 $ block_cyclic_2d_inb, my, ny, imby, inby,
434 $ mby, nby, rsrcy, csrcy, incy, mpy, nqy,
435 $ iprey, imidy, iposty, igap, gapmul,
438 IF( ierr( 1 ).GT.0 .OR. ierr( 2 ).GT.0 .OR.
439 $ ierr( 3 ).GT.0 )
THEN
452 ipx = ipa + desca( lld_ )*nqa + iposta + iprex
453 ipy = ipx + descx( lld_ )*nqx + ipostx + iprey
454 ipmata = ipy + descy( lld_ )*nqy + iposty
455 ipmatx = ipmata + ma*na
456 ipmaty = ipmatx + mx*nx
457 ipg = ipmaty +
max( mx*nx, my*ny )
464 memreqd = ipg +
max( m, n ) - 1 +
467 $
max( imby, mby ) ) )
469 IF( memreqd.GT.memsiz )
THEN
471 $
WRITE( nout, fmt = 9986 ) memreqd*realsz
477 CALL igsum2d( ictxt,
'All',
' ', 1, 1, ierr, 1, -1, 0 )
479 IF( ierr( 1 ).GT.0 )
THEN
481 $
WRITE( nout, fmt = 9987 )
492 IF( .NOT.ltest( k ) )
496 WRITE( nout, fmt = * )
497 WRITE( nout, fmt = 9985 ) snames( k )
505 IF(
lsame( trans,
'N' ) )
THEN
512 ELSE IF( k.EQ.5 )
THEN
526 CALL pmdimchk( ictxt, nout, nrowa, ncola, 'a
', IA, JA,
528 CALL PVDIMCHK( ICTXT, NOUT, NLX, 'x
', IX, JX, DESCX,
530 CALL PVDIMCHK( ICTXT, NOUT, NLY, 'y
', IY, JY, DESCY,
533.NE..OR..NE..OR.
IF( IERR( 1 )0 IERR( 2 )0
534.NE.
$ IERR( 3 )0 ) THEN
535 KSKIP( K ) = KSKIP( K ) + 1
541.EQ..OR..EQ..OR..EQ.
IF( K2 K6 K7 ) THEN
545.EQ..AND.
ELSE IF( ( K4 )( LSAME( DIAG, 'n
' ) ) ) THEN
555 CALL PSLAGEN( .FALSE., AFORM, DIAGDO, OFFD, MA, NA,
556 $ 1, 1, DESCA, IASEED, MEM( IPA ),
558 CALL PSLAGEN( .FALSE., 'none
', 'no diag
', 0, MX, NX, 1,
559 $ 1, DESCX, IXSEED, MEM( IPX ),
562 $ CALL PSLAGEN( .FALSE., 'none',
'No diag', 0, my, ny,
563 $ 1, 1, descy, iyseed, mem( ipy ),
568 CALL pb_descset2( descar, ma, na, imba, inba, mba, nba,
569 $ -1, -1, ictxt,
max( 1, ma ) )
570 CALL pslagen( .false., aform, diagdo, offd, ma, na,
571 $ 1, 1, descar, iaseed, mem( ipmata ),
573 CALL pb_descset2( descxr, mx, nx, imbx, inbx, mbx, nbx,
574 $ -1, -1, ictxt,
max( 1, mx ) )
575 CALL pslagen( .false., 'none
', 'no diag
', 0, MX, NX, 1,
576 $ 1, DESCXR, IXSEED, MEM( IPMATX ),
578 IF( YCHECK( K ) ) THEN
580 CALL PB_DESCSET2( DESCYR, MY, NY, IMBY, INBY, MBY,
581 $ NBY, -1, -1, ICTXT, MAX( 1, MY ) )
582 CALL PSLAGEN( .FALSE., 'none
', 'no diag
', 0, MY, NY,
583 $ 1, 1, DESCYR, IYSEED, MEM( IPMATY ),
590 CALL PB_DESCSET2( DESCYR, MX, NX, IMBX, INBX, MBX,
591 $ NBX, -1, -1, ICTXT, MAX( 1, MX ) )
592 CALL PSLAGEN( .FALSE., 'none
', 'no diag
', 0, MX, NX,
593 $ 1, 1, DESCYR, IXSEED, MEM( IPMATY ),
600.EQ..OR..EQ..OR..EQ..AND.
IF( ( K2 K6 K7 )
601.GT.
$ ( MAX( NROWA, NCOLA )1 ) ) THEN
605 IF( LSAME( UPLO, 'l
' ) ) THEN
609 CALL PSLASET( 'upper
', NROWA-1, NCOLA-1, ROGUE,
610 $ ROGUE, MEM( IPA ), IA, JA+1, DESCA )
612 CALL PB_SLASET( 'upper
', NROWA-1, NCOLA-1, 0,
614 $ MEM( IPMATA+IA-1+JA*LDA ), LDA )
617 ELSE IF( LSAME( UPLO, 'u
' ) ) THEN
621 CALL PSLASET( 'lower
', NROWA-1, NCOLA-1, ROGUE,
622 $ ROGUE, MEM( IPA ), IA+1, JA, DESCA )
624 CALL PB_SLASET( 'lower
', NROWA-1, NCOLA-1, 0,
626 $ MEM( IPMATA+IA+(JA-1)*LDA ),
632.EQ..OR..EQ.
ELSE IF( K3 K4 ) THEN
634 IF( LSAME( UPLO, 'l
' ) ) THEN
638 IF( LSAME( DIAG, 'n
' ) ) THEN
640.GT.
IF( MAX( NROWA, NCOLA )1 ) THEN
641 CALL PSLASET( 'upper
', NROWA-1, NCOLA-1,
642 $ ROGUE, ROGUE, MEM( IPA ), IA,
644 CALL PB_SLASET( 'upper
', NROWA-1, NCOLA-1, 0,
646 $ MEM( IPMATA+IA-1+JA*LDA ),
652 CALL PSLASET( 'upper
', NROWA, NCOLA, ROGUE, ONE,
653 $ MEM( IPA ), IA, JA, DESCA )
654 CALL PB_SLASET( 'upper
', NROWA, NCOLA, 0, ZERO,
656 $ MEM( IPMATA+IA-1+(JA-1)*LDA ),
659.GT.
$ ( MAX( NROWA, NCOLA )1 ) ) THEN
660 SCALE = ONE / REAL( MAX( NROWA, NCOLA ) )
661 CALL PSLASCAL( 'lower
', NROWA-1, NCOLA-1,
662 $ SCALE, MEM( IPA ), IA+1, JA,
664 CALL PB_SLASCAL( 'lower
', NROWA-1, NCOLA-1,
666 $ MEM( IPMATA+IA+(JA-1)*LDA ),
672 ELSE IF( LSAME( UPLO, 'u
' ) ) THEN
676 IF( LSAME( DIAG, 'n
' ) ) THEN
678.GT.
IF( MAX( NROWA, NCOLA )1 ) THEN
679 CALL PSLASET( 'lower
', NROWA-1, NCOLA-1,
680 $ ROGUE, ROGUE, MEM( IPA ), IA+1,
682 CALL PB_SLASET( 'lower
', NROWA-1, NCOLA-1, 0,
684 $ MEM( IPMATA+IA+(JA-1)*LDA ),
690 CALL PSLASET( 'lower
', NROWA, NCOLA, ROGUE, ONE,
691 $ MEM( IPA ), IA, JA, DESCA )
692 CALL PB_SLASET( 'lower
', NROWA, NCOLA, 0, ZERO,
694 $ MEM( IPMATA+IA-1+(JA-1)*LDA ),
697.GT.
$ ( MAX( NROWA, NCOLA )1 ) ) THEN
698 SCALE = ONE / REAL( MAX( NROWA, NCOLA ) )
699 CALL PSLASCAL( 'upper
', NROWA-1, NCOLA-1,
700 $ SCALE, MEM( IPA ), IA, JA+1,
702 CALL PB_SLASCAL( 'upper
', NROWA-1, NCOLA-1,
704 $ MEM( IPMATA+IA-1+JA*LDA ), LDA )
715 CALL PB_SFILLPAD( ICTXT, MPA, NQA, MEM( IPA-IPREA ),
716 $ DESCA( LLD_ ), IPREA, IPOSTA, PADVAL )
718 CALL PB_SFILLPAD( ICTXT, MPX, NQX, MEM( IPX-IPREX ),
719 $ DESCX( LLD_ ), IPREX, IPOSTX, PADVAL )
721 IF( YCHECK( K ) ) THEN
722 CALL PB_SFILLPAD( ICTXT, MPY, NQY, MEM( IPY-IPREY ),
723 $ DESCY( LLD_ ), IPREY, IPOSTY,
730 CALL PSCHKARG2( ICTXT, NOUT, SNAMES( K ), UPLO, TRANS,
731 $ DIAG, M, N, ALPHA, IA, JA, DESCA, IX,
732 $ JX, DESCX, INCX, BETA, IY, JY, DESCY,
737.EQ.
IF( IVERB2 ) THEN
738 CALL PB_PSLAPRNT( NROWA, NCOLA, MEM( IPA ), IA, JA,
739 $ DESCA, 0, 0, 'parallel_initial_a
',
741.GE.
ELSE IF( IVERB3 ) THEN
742 CALL PB_PSLAPRNT( MA, NA, MEM( IPA ), 1, 1, DESCA, 0,
743 $ 0, 'parallel_initial_a
', NOUT,
747.EQ.
IF( IVERB2 ) THEN
748.EQ.
IF( INCXDESCX( M_ ) ) THEN
749 CALL PB_PSLAPRNT( 1, NLX, MEM( IPX ), IX, JX,
751 $ 'parallel_initial_x
', NOUT,
754 CALL PB_PSLAPRNT( NLX, 1, MEM( IPX ), IX, JX,
756 $ 'parallel_initial_x
', NOUT,
759.GE.
ELSE IF( IVERB3 ) THEN
760 CALL PB_PSLAPRNT( MX, NX, MEM( IPX ), 1, 1, DESCX, 0,
761 $ 0, 'parallel_initial_x
', NOUT,
765 IF( YCHECK( K ) ) THEN
766.EQ.
IF( IVERB2 ) THEN
767.EQ.
IF( INCYDESCY( M_ ) ) THEN
768 CALL PB_PSLAPRNT( 1, NLY, MEM( IPY ), IY, JY,
770 $ 'parallel_initial_y
', NOUT,
773 CALL PB_PSLAPRNT( NLY, 1, MEM( IPY ), IY, JY,
775 $ 'parallel_initial_y
', NOUT,
778.GE.
ELSE IF( IVERB3 ) THEN
779 CALL PB_PSLAPRNT( MY, NY, MEM( IPY ), 1, 1, DESCY,
780 $ 0, 0, 'parallel_initial_y
', NOUT,
792 CALL PSGEMV( TRANS, M, N, ALPHA, MEM( IPA ), IA, JA,
793 $ DESCA, MEM( IPX ), IX, JX, DESCX, INCX,
794 $ BETA, MEM( IPY ), IY, JY, DESCY, INCY )
796.EQ.
ELSE IF( K2 ) THEN
800 CALL PSSYMV( UPLO, N, ALPHA, MEM( IPA ), IA, JA,
801 $ DESCA, MEM( IPX ), IX, JX, DESCX, INCX,
802 $ BETA, MEM( IPY ), IY, JY, DESCY, INCY )
804.EQ.
ELSE IF( K3 ) THEN
808 CALL PSTRMV( UPLO, TRANS, DIAG, N, MEM( IPA ), IA, JA,
809 $ DESCA, MEM( IPX ), IX, JX, DESCX, INCX )
811.EQ.
ELSE IF( K4 ) THEN
815 CALL PSTRSV( UPLO, TRANS, DIAG, N, MEM( IPA ), IA, JA,
816 $ DESCA, MEM( IPX ), IX, JX, DESCX, INCX )
818.EQ.
ELSE IF( K5 ) THEN
822 CALL PSGER( M, N, ALPHA, MEM( IPX ), IX, JX, DESCX,
823 $ INCX, MEM( IPY ), IY, JY, DESCY, INCY,
824 $ MEM( IPA ), IA, JA, DESCA )
826.EQ.
ELSE IF( K6 ) THEN
830 CALL PSSYR( UPLO, N, ALPHA, MEM( IPX ), IX, JX, DESCX,
831 $ INCX, MEM( IPA ), IA, JA, DESCA )
833.EQ.
ELSE IF( K7 ) THEN
837 CALL PSSYR2( UPLO, N, ALPHA, MEM( IPX ), IX, JX,
838 $ DESCX, INCX, MEM( IPY ), IY, JY, DESCY,
839 $ INCY, MEM( IPA ), IA, JA, DESCA )
846 KSKIP( K ) = KSKIP( K ) + 1
848 $ WRITE( NOUT, FMT = 9974 ) INFO
854 CALL PB_SCHEKPAD( ICTXT, SNAMES( K ), MPA, NQA,
855 $ MEM( IPA-IPREA ), DESCA( LLD_ ), IPREA,
858 CALL PB_SCHEKPAD( ICTXT, SNAMES( K ), MPX, NQX,
859 $ MEM( IPX-IPREX ), DESCX( LLD_ ), IPREX,
862 IF( YCHECK( K ) ) THEN
863 CALL PB_SCHEKPAD( ICTXT, SNAMES( K ), MPY, NQY,
864 $ MEM( IPY-IPREY ), DESCY( LLD_ ),
865 $ IPREY, IPOSTY, PADVAL )
870 CALL PSBLAS2TSTCHK( ICTXT, NOUT, K, UPLO, TRANS, DIAG, M,
871 $ N, ALPHA, MEM( IPMATA ), MEM( IPA ),
872 $ IA, JA, DESCA, MEM( IPMATX ),
873 $ MEM( IPX ), IX, JX, DESCX, INCX,
874 $ BETA, MEM( IPMATY ), MEM( IPY ), IY,
875 $ JY, DESCY, INCY, THRESH, ROGUE,
877.EQ.
IF( MOD( INFO, 2 )1 ) THEN
879.EQ.
ELSE IF( MOD( INFO / 2, 2 )1 ) THEN
881.EQ.
ELSE IF( MOD( INFO / 4, 2 )1 ) THEN
883.NE.
ELSE IF( INFO0 ) THEN
892 CALL PSCHKARG2( ICTXT, NOUT, SNAMES( K ), UPLO, TRANS,
893 $ DIAG, M, N, ALPHA, IA, JA, DESCA, IX,
894 $ JX, DESCX, INCX, BETA, IY, JY, DESCY,
899 CALL PSCHKMOUT( NROWA, NCOLA, MEM( IPMATA ), MEM( IPA ),
900 $ IA, JA, DESCA, IERR( 4 ) )
901 CALL PSCHKVOUT( NLX, MEM( IPMATX ), MEM( IPX ), IX, JX,
902 $ DESCX, INCX, IERR( 5 ) )
904.NE.
IF( IERR( 4 )0 ) THEN
906 $ WRITE( NOUT, FMT = 9982 ) 'parallel_a
',
910.NE.
IF( IERR( 5 )0 ) THEN
912 $ WRITE( NOUT, FMT = 9982 ) 'parallel_x
',
916 IF( YCHECK( K ) ) THEN
917 CALL PSCHKVOUT( NLY, MEM( IPMATY ), MEM( IPY ), IY,
918 $ JY, DESCY, INCY, IERR( 6 ) )
919.NE.
IF( IERR( 6 )0 ) THEN
921 $ WRITE( NOUT, FMT = 9982 ) 'parallel_y
',
928.NE..OR..NE..OR.
IF( INFO0 IERR( 1 )0
929.NE..OR..NE..OR.
$ IERR( 2 )0 IERR( 3 )0
930.NE..OR..NE..OR.
$ IERR( 4 )0 IERR( 5 )0
931.NE.
$ IERR( 6 )0 ) THEN
933 $ WRITE( NOUT, FMT = 9984 ) SNAMES( K )
934 KFAIL( K ) = KFAIL( K ) + 1
938 $ WRITE( NOUT, FMT = 9983 ) SNAMES( K )
939 KPASS( K ) = KPASS( K ) + 1
944.GE..AND.
IF( IVERB1 ERRFLG ) THEN
945.NE..OR..GE.
IF( IERR( 4 )0 IVERB3 ) THEN
946 CALL PSMPRNT( ICTXT, NOUT, MA, NA, MEM( IPMATA ),
947 $ LDA, 0, 0, 'serial_a
' )
948 CALL PB_PSLAPRNT( MA, NA, MEM( IPA ), 1, 1, DESCA,
949 $ 0, 0, 'parallel_a
', NOUT,
951.NE.
ELSE IF( IERR( 1 )0 ) THEN
952.GT..AND..GT.
IF( ( NROWA0 )( NCOLA0 ) )
953 $ CALL PSMPRNT( ICTXT, NOUT, NROWA, NCOLA,
954 $ MEM( IPMATA+IA-1+(JA-1)*LDA ),
955 $ LDA, 0, 0, 'serial_a
' )
956 CALL PB_PSLAPRNT( NROWA, NCOLA, MEM( IPA ), IA, JA,
957 $ DESCA, 0, 0, 'parallel_a
',
958 $ NOUT, MEM( IPMATA ) )
960.NE..OR..GE.
IF( IERR( 5 )0 IVERB3 ) THEN
961 CALL PSMPRNT( ICTXT, NOUT, MX, NX, MEM( IPMATX ),
962 $ LDX, 0, 0, 'serial_x
' )
963 CALL PB_PSLAPRNT( MX, NX, MEM( IPX ), 1, 1, DESCX,
964 $ 0, 0, 'parallel_x
', NOUT,
966.NE.
ELSE IF( IERR( 2 )0 ) THEN
968 $ CALL PSVPRNT( ICTXT, NOUT, NLX,
969 $ MEM( IPMATX+IX-1+(JX-1)*LDX ),
970 $ INCX, 0, 0, 'serial_x
' )
971.EQ.
IF( INCXDESCX( M_ ) ) THEN
972 CALL PB_PSLAPRNT( 1, NLX, MEM( IPX ), IX, JX,
973 $ DESCX, 0, 0, 'parallel_x
',
974 $ NOUT, MEM( IPMATX ) )
976 CALL PB_PSLAPRNT( NLX, 1, MEM( IPX ), IX, JX,
977 $ DESCX, 0, 0, 'parallel_x
',
978 $ NOUT, MEM( IPMATX ) )
981 IF( YCHECK( K ) ) THEN
982.NE..OR..GE.
IF( IERR( 6 )0 IVERB3 ) THEN
983 CALL PSMPRNT( ICTXT, NOUT, MY, NY,
984 $ MEM( IPMATY ), LDY, 0, 0,
986 CALL PB_PSLAPRNT( MY, NY, MEM( IPY ), 1, 1,
987 $ DESCY, 0, 0, 'parallel_y
',
988 $ NOUT, MEM( IPMATX ) )
989.NE.
ELSE IF( IERR( 3 )0 ) THEN
991 $ CALL PSVPRNT( ICTXT, NOUT, NLY,
992 $ MEM( IPMATY+IY-1+(JY-1)*LDY ),
993 $ INCY, 0, 0, 'serial_y
' )
994.EQ.
IF( INCYDESCY( M_ ) ) THEN
995 CALL PB_PSLAPRNT( 1, NLY, MEM( IPY ), IY, JY,
996 $ DESCY, 0, 0, 'parallel_y
',
997 $ NOUT, MEM( IPMATX ) )
999 CALL PB_PSLAPRNT( NLY, 1, MEM( IPY ), IY, JY,
1000 $ DESCY, 0, 0, 'parallel_y
',
1001 $ NOUT, MEM( IPMATX ) )
1009.AND.
IF( SOFERRFLG )
1014.EQ.
40 IF( IAM0 ) THEN
1015 WRITE( NOUT, FMT = * )
1016 WRITE( NOUT, FMT = 9981 ) J
1021 CALL BLACS_GRIDEXIT( ICTXT )
1032 IF( LTEST( I ) ) THEN
1033 KSKIP( I ) = KSKIP( I ) + TSKIP
1034 KTESTS( I ) = KSKIP( I ) + KFAIL( I ) + KPASS( I )
1041 WRITE( NOUT, FMT = * )
1042 WRITE( NOUT, FMT = 9977 )
1043 WRITE( NOUT, FMT = * )
1044 WRITE( NOUT, FMT = 9979 )
1045 WRITE( NOUT, FMT = 9978 )
1048 WRITE( NOUT, FMT = 9980 ) '|
', SNAMES( I ), KTESTS( I ),
1049 $ KPASS( I ), KFAIL( I ), KSKIP( I )
1051 WRITE( NOUT, FMT = * )
1052 WRITE( NOUT, FMT = 9976 )
1053 WRITE( NOUT, FMT = * )
1057 CALL BLACS_EXIT( 0 )
1059 9999 FORMAT( 'illegal
', A, ':
', A, ' =
', I10,
1060 $ ' should be at least 1
' )
1061 9998 FORMAT( 'illegal grid: nprow*npcol =
', I4,
1062 $ '. it can be at most
', I4 )
1063 9997 FORMAT( 'bad
', A, ' parameters: going on to next test case.
' )
1064 9996 FORMAT( 2X, 'test number
', I4 , ' started on a
', I6, ' x
',
1065 $ I6, ' process grid.
' )
1066 9995 FORMAT( 2X, ' ------------------------------------------------
',
1067 $ '--------------------------
' )
1068 9994 FORMAT( 2X, ' m n uplo trans diag
' )
1069 9993 FORMAT( 5X,I6,1X,I6,9X,A1,11X,A1,10X,A1 )
1070 9992 FORMAT( 2X, ' ia ja ma na imba inba
',
1071 $ ' mba nba rsrca csrca
' )
1072 9991 FORMAT( 5X,I6,1X,I6,1X,I6,1X,I6,1X,I6,1X,I6,1X,I6,1X,I6,
1074 9990 FORMAT( 2X, ' ix jx mx nx imbx inbx
',
1075 $ ' mbx nbx rsrcx csrcx incx
' )
1076 9989 FORMAT( 5X,I6,1X,I6,1X,I6,1X,I6,1X,I6,1X,I6,1X,I6,1X,I6,
1077 $ 1X,I5,1X,I5,1X,I6 )
1078 9988 FORMAT( 2X, ' iy jy my ny imby inby
',
1079 $ ' mby nby rsrcy csrcy incy
' )
1080 9987 FORMAT( 'not enough memory
for this test: going on to
',
1081 $ ' next test case.
' )
1082 9986 FORMAT( 'not enough memory. need:
', I12 )
1083 9985 FORMAT( 2X, ' tested subroutine:
', A )
1084 9984 FORMAT( 2X, ' ***** computational check:
', A, ' ',
1085 $ ' failed
',' *****
' )
1086 9983 FORMAT( 2X, ' ***** computational check:
', A, ' ',
1087 $ ' passed
',' *****
' )
1088 9982 FORMAT( 2X, ' ***** error ***** matrix operand
', A,
1089 $ ' modified by
', A, ' *****
' )
1090 9981 FORMAT( 2X, 'test number
', I4, ' completed.
' )
1091 9980 FORMAT( 2X,A1,2X,A7,8X,I4,6X,I4,5X,I4,4X,I4 )
1092 9979 FORMAT( 2X, ' SUBROUTINE total tests passed failed
',
1094 9978 FORMAT( 2X, ' ---------- ----------- ------ ------
',
1096 9977 FORMAT( 2X, 'testing summary
')
1097 9976 FORMAT( 2X, 'end of tests.
' )
1098 9975 FORMAT( 2X, 'tests started.
' )
1099 9974 FORMAT( 2X, ' ***** operation not supported, error code:
',
1107 SUBROUTINE PSBLA2TSTINFO( SUMMRY, NOUT, NMAT, DIAGVAL, TRANVAL,
1108 $ UPLOVAL, MVAL, NVAL, MAVAL, NAVAL,
1109 $ IMBAVAL, MBAVAL, INBAVAL, NBAVAL,
1110 $ RSCAVAL, CSCAVAL, IAVAL, JAVAL,
1111 $ MXVAL, NXVAL, IMBXVAL, MBXVAL,
1112 $ INBXVAL, NBXVAL, RSCXVAL, CSCXVAL,
1113 $ IXVAL, JXVAL, INCXVAL, MYVAL, NYVAL,
1114 $ IMBYVAL, MBYVAL, INBYVAL, NBYVAL,
1115 $ RSCYVAL, CSCYVAL, IYVAL, JYVAL,
1116 $ INCYVAL, LDVAL, NGRIDS, PVAL, LDPVAL,
1117 $ QVAL, LDQVAL, NBLOG, LTEST, SOF, TEE,
1118 $ IAM, IGAP, IVERB, NPROCS, THRESH, ALPHA,
1128 INTEGER IAM, IGAP, IVERB, LDPVAL, LDQVAL, LDVAL, NBLOG,
1129 $ NGRIDS, NMAT, NOUT, NPROCS
1130 REAL ALPHA, BETA, THRESH
1133 CHARACTER*( * ) SUMMRY
1134 CHARACTER*1 DIAGVAL( LDVAL ), TRANVAL( LDVAL ),
1137 INTEGER CSCAVAL( LDVAL ), CSCXVAL( LDVAL ),
1138 $ CSCYVAL( LDVAL ), IAVAL( LDVAL ),
1139 $ IMBAVAL( LDVAL ), IMBXVAL( LDVAL ),
1140 $ IMBYVAL( LDVAL ), INBAVAL( LDVAL ),
1141 $ INBXVAL( LDVAL ), INBYVAL( LDVAL ),
1142 $ INCXVAL( LDVAL ), INCYVAL( LDVAL ),
1143 $ IXVAL( LDVAL ), IYVAL( LDVAL ), JAVAL( LDVAL ),
1144 $ JXVAL( LDVAL ), JYVAL( LDVAL ), MAVAL( LDVAL ),
1145 $ MBAVAL( LDVAL ), MBXVAL( LDVAL ),
1146 $ MBYVAL( LDVAL ), MVAL( LDVAL ), MXVAL( LDVAL ),
1147 $ MYVAL( LDVAL ), NAVAL( LDVAL ),
1148 $ NBAVAL( LDVAL ), NBXVAL( LDVAL ),
1149 $ NBYVAL( LDVAL ), NVAL( LDVAL ), NXVAL( LDVAL ),
1150 $ NYVAL( LDVAL ), PVAL( LDPVAL ), QVAL( LDQVAL ),
1151 $ RSCAVAL( LDVAL ), RSCXVAL( LDVAL ),
1152 $ RSCYVAL( LDVAL ), WORK( * )
1439 PARAMETER ( NIN = 11, NSUBS = 7 )
1448 CHARACTER*79 USRINFO
1451 EXTERNAL BLACS_ABORT, BLACS_GET, BLACS_GRIDEXIT,
1452 $ BLACS_GRIDINIT, BLACS_SETUP, ICOPY, IGEBR2D,
1453 $ IGEBS2D, SGEBR2D, SGEBS2D
1461 INTRINSIC CHAR, ICHAR, MAX, MIN
1464 CHARACTER*7 SNAMES( NSUBS )
1465 COMMON /SNAMEC/SNAMES
1476 OPEN( NIN, FILE='psblas2tst.dat
', STATUS='old
' )
1477 READ( NIN, FMT = * ) SUMMRY
1482 READ( NIN, FMT = 9999 ) USRINFO
1486 READ( NIN, FMT = * ) SUMMRY
1487 READ( NIN, FMT = * ) NOUT
1488.NE..AND..NE.
IF( NOUT0 NOUT6 )
1489 $ OPEN( NOUT, FILE = SUMMRY, STATUS = 'unknown
' )
1495 READ( NIN, FMT = * ) SOF
1499 READ( NIN, FMT = * ) TEE
1503 READ( NIN, FMT = * ) IVERB
1504.LT..OR..GT.
IF( IVERB0 IVERB3 )
1509 READ( NIN, FMT = * ) IGAP
1515 READ( NIN, FMT = * ) THRESH
1521 READ( NIN, FMT = * ) NBLOG
1527 READ( NIN, FMT = * ) NGRIDS
1528.LT..OR..GT.
IF( NGRIDS1 NGRIDSLDPVAL ) THEN
1529 WRITE( NOUT, FMT = 9998 ) 'grids
', LDPVAL
1531.GT.
ELSE IF( NGRIDSLDQVAL ) THEN
1532 WRITE( NOUT, FMT = 9998 ) 'grids
', LDQVAL
1538 READ( NIN, FMT = * ) ( PVAL( I ), I = 1, NGRIDS )
1539 READ( NIN, FMT = * ) ( QVAL( I ), I = 1, NGRIDS )
1543 READ( NIN, FMT = * ) ALPHA
1544 READ( NIN, FMT = * ) BETA
1548 READ( NIN, FMT = * ) NMAT
1549.LT..OR..GT.
IF( NMAT1 NMATLDVAL ) THEN
1550 WRITE( NOUT, FMT = 9998 ) 'tests
', LDVAL
1556 READ( NIN, FMT = * ) ( UPLOVAL( I ), I = 1, NMAT )
1557 READ( NIN, FMT = * ) ( TRANVAL( I ), I = 1, NMAT )
1558 READ( NIN, FMT = * ) ( DIAGVAL( I ), I = 1, NMAT )
1559 READ( NIN, FMT = * ) ( MVAL( I ), I = 1, NMAT )
1560 READ( NIN, FMT = * ) ( NVAL( I ), I = 1, NMAT )
1561 READ( NIN, FMT = * ) ( MAVAL( I ), I = 1, NMAT )
1562 READ( NIN, FMT = * ) ( NAVAL( I ), I = 1, NMAT )
1563 READ( NIN, FMT = * ) ( IMBAVAL( I ), I = 1, NMAT )
1564 READ( NIN, FMT = * ) ( INBAVAL( I ), I = 1, NMAT )
1565 READ( NIN, FMT = * ) ( MBAVAL( I ), I = 1, NMAT )
1566 READ( NIN, FMT = * ) ( NBAVAL( I ), I = 1, NMAT )
1567 READ( NIN, FMT = * ) ( RSCAVAL( I ), I = 1, NMAT )
1568 READ( NIN, FMT = * ) ( CSCAVAL( I ), I = 1, NMAT )
1569 READ( NIN, FMT = * ) ( IAVAL( I ), I = 1, NMAT )
1570 READ( NIN, FMT = * ) ( JAVAL( I ), I = 1, NMAT )
1571 READ( NIN, FMT = * ) ( MXVAL( I ), I = 1, NMAT )
1572 READ( NIN, FMT = * ) ( NXVAL( I ), I = 1, NMAT )
1573 READ( NIN, FMT = * ) ( IMBXVAL( I ), I = 1, NMAT )
1574 READ( NIN, FMT = * ) ( INBXVAL( I ), I = 1, NMAT )
1575 READ( NIN, FMT = * ) ( MBXVAL( I ), I = 1, NMAT )
1576 READ( NIN, FMT = * ) ( NBXVAL( I ), I = 1, NMAT )
1577 READ( NIN, FMT = * ) ( RSCXVAL( I ), I = 1, NMAT )
1578 READ( NIN, FMT = * ) ( CSCXVAL( I ), I = 1, NMAT )
1579 READ( NIN, FMT = * ) ( IXVAL( I ), I = 1, NMAT )
1580 READ( NIN, FMT = * ) ( JXVAL( I ), I = 1, NMAT )
1581 READ( NIN, FMT = * ) ( INCXVAL( I ), I = 1, NMAT )
1582 READ( NIN, FMT = * ) ( MYVAL( I ), I = 1, NMAT )
1583 READ( NIN, FMT = * ) ( NYVAL( I ), I = 1, NMAT )
1584 READ( NIN, FMT = * ) ( IMBYVAL( I ), I = 1, NMAT )
1585 READ( NIN, FMT = * ) ( INBYVAL( I ), I = 1, NMAT )
1586 READ( NIN, FMT = * ) ( MBYVAL( I ), I = 1, NMAT )
1587 READ( NIN, FMT = * ) ( NBYVAL( I ), I = 1, NMAT )
1588 READ( NIN, FMT = * ) ( RSCYVAL( I ), I = 1, NMAT )
1589 READ( NIN, FMT = * ) ( CSCYVAL( I ), I = 1, NMAT )
1590 READ( NIN, FMT = * ) ( IYVAL( I ), I = 1, NMAT )
1591 READ( NIN, FMT = * ) ( JYVAL( I ), I = 1, NMAT )
1592 READ( NIN, FMT = * ) ( INCYVAL( I ), I = 1, NMAT )
1598 LTEST( I ) = .FALSE.
1601 READ( NIN, FMT = 9996, END = 50 ) SNAMET, LTESTT
1603.EQ.
IF( SNAMETSNAMES( I ) )
1607 WRITE( NOUT, FMT = 9995 )SNAMET
1623.LT.
IF( NPROCS1 ) THEN
1626 NPROCS = MAX( NPROCS, PVAL( I )*QVAL( I ) )
1628 CALL BLACS_SETUP( IAM, NPROCS )
1634 CALL BLACS_GET( -1, 0, ICTXT )
1635 CALL BLACS_GRIDINIT( ICTXT, 'row-major
', 1, NPROCS )
1639 EPS = PSLAMCH( ICTXT, 'eps
' )
1643 CALL SGEBS2D( ICTXT, 'all
', ' ', 1, 1, THRESH, 1 )
1644 CALL SGEBS2D( ICTXT, 'all
', ' ', 1, 1, ALPHA, 1 )
1645 CALL SGEBS2D( ICTXT, 'all
', ' ', 1, 1, BETA, 1 )
1650 CALL IGEBS2D( ICTXT, 'all
', ' ', 3, 1, WORK, 3 )
1670 WORK( I ) = ICHAR( DIAGVAL( J ) )
1671 WORK( I+1 ) = ICHAR( TRANVAL( J ) )
1672 WORK( I+2 ) = ICHAR( UPLOVAL( J ) )
1675 CALL ICOPY( NGRIDS, PVAL, 1, WORK( I ), 1 )
1677 CALL ICOPY( NGRIDS, QVAL, 1, WORK( I ), 1 )
1679 CALL ICOPY( NMAT, MVAL, 1, WORK( I ), 1 )
1681 CALL ICOPY( NMAT, NVAL, 1, WORK( I ), 1 )
1683 CALL ICOPY( NMAT, MAVAL, 1, WORK( I ), 1 )
1685 CALL ICOPY( NMAT, NAVAL, 1, WORK( I ), 1 )
1687 CALL ICOPY( NMAT, IMBAVAL, 1, WORK( I ), 1 )
1689 CALL ICOPY( NMAT, INBAVAL, 1, WORK( I ), 1 )
1691 CALL ICOPY( NMAT, MBAVAL, 1, WORK( I ), 1 )
1693 CALL ICOPY( NMAT, NBAVAL, 1, WORK( I ), 1 )
1695 CALL ICOPY( NMAT, RSCAVAL, 1, WORK( I ), 1 )
1697 CALL ICOPY( NMAT, CSCAVAL, 1, WORK( I ), 1 )
1699 CALL ICOPY( NMAT, IAVAL, 1, WORK( I ), 1 )
1701 CALL ICOPY( NMAT, JAVAL, 1, WORK( I ), 1 )
1703 CALL ICOPY( NMAT, MXVAL, 1, WORK( I ), 1 )
1705 CALL ICOPY( NMAT, NXVAL, 1, WORK( I ), 1 )
1707 CALL ICOPY( NMAT, IMBXVAL, 1, WORK( I ), 1 )
1709 CALL ICOPY( NMAT, INBXVAL, 1, WORK( I ), 1 )
1711 CALL ICOPY( NMAT, MBXVAL, 1, WORK( I ), 1 )
1713 CALL ICOPY( NMAT, NBXVAL, 1, WORK( I ), 1 )
1715 CALL ICOPY( NMAT, RSCXVAL, 1, WORK( I ), 1 )
1717 CALL ICOPY( NMAT, CSCXVAL, 1, WORK( I ), 1 )
1719 CALL ICOPY( NMAT, IXVAL, 1, WORK( I ), 1 )
1721 CALL ICOPY( NMAT, JXVAL, 1, WORK( I ), 1 )
1723 CALL ICOPY( NMAT, INCXVAL, 1, WORK( I ), 1 )
1725 CALL ICOPY( NMAT, MYVAL, 1, WORK( I ), 1 )
1727 CALL ICOPY( NMAT, NYVAL, 1, WORK( I ), 1 )
1729 CALL ICOPY( NMAT, IMBYVAL, 1, WORK( I ), 1 )
1731 CALL ICOPY( NMAT, INBYVAL, 1, WORK( I ), 1 )
1733 CALL ICOPY( NMAT, MBYVAL, 1, WORK( I ), 1 )
1735 CALL ICOPY( NMAT, NBYVAL, 1, WORK( I ), 1 )
1737 CALL ICOPY( NMAT, RSCYVAL, 1, WORK( I ), 1 )
1739 CALL ICOPY( NMAT, CSCYVAL, 1, WORK( I ), 1 )
1741 CALL ICOPY( NMAT, IYVAL, 1, WORK( I ), 1 )
1743 CALL ICOPY( NMAT, JYVAL, 1, WORK( I ), 1 )
1745 CALL ICOPY( NMAT, INCYVAL, 1, WORK( I ), 1 )
1749 IF( LTEST( J ) ) THEN
1757 CALL IGEBS2D( ICTXT, 'all
', ' ', I, 1, WORK, I )
1761 WRITE( NOUT, FMT = 9999 ) 'level 2 pblas testing program.
'
1762 WRITE( NOUT, FMT = 9999 ) USRINFO
1763 WRITE( NOUT, FMT = * )
1764 WRITE( NOUT, FMT = 9999 )
1765 $ 'tests of
the real single precision
'//
1767 WRITE( NOUT, FMT = * )
1768 WRITE( NOUT, FMT = 9993 ) NMAT
1769 WRITE( NOUT, FMT = 9979 ) NBLOG
1770 WRITE( NOUT, FMT = 9992 ) NGRIDS
1771 WRITE( NOUT, FMT = 9990 )
1772 $ 'p
', ( PVAL(I), I = 1, MIN(NGRIDS, 5) )
1774 $ WRITE( NOUT, FMT = 9991 ) ( PVAL(I), I = 6,
1775 $ MIN( 10, NGRIDS ) )
1777 $ WRITE( NOUT, FMT = 9991 ) ( PVAL(I), I = 11,
1778 $ MIN( 15, NGRIDS ) )
1780 $ WRITE( NOUT, FMT = 9991 ) ( PVAL(I), I = 16, NGRIDS )
1781 WRITE( NOUT, FMT = 9990 )
1782 $ 'q
', ( QVAL(I), I = 1, MIN(NGRIDS, 5) )
1784 $ WRITE( NOUT, FMT = 9991 ) ( QVAL(I), I = 6,
1785 $ MIN( 10, NGRIDS ) )
1787 $ WRITE( NOUT, FMT = 9991 ) ( QVAL(I), I = 11,
1788 $ MIN( 15, NGRIDS ) )
1790 $ WRITE( NOUT, FMT = 9991 ) ( QVAL(I), I = 16, NGRIDS )
1791 WRITE( NOUT, FMT = 9988 ) SOF
1792 WRITE( NOUT, FMT = 9987 ) TEE
1793 WRITE( NOUT, FMT = 9983 ) IGAP
1794 WRITE( NOUT, FMT = 9986 ) IVERB
1795 WRITE( NOUT, FMT = 9980 ) THRESH
1796 WRITE( NOUT, FMT = 9982 ) ALPHA
1797 WRITE( NOUT, FMT = 9981 ) BETA
1798 IF( LTEST( 1 ) ) THEN
1799 WRITE( NOUT, FMT = 9985 ) SNAMES( 1 ), ' ... yes
'
1801 WRITE( NOUT, FMT = 9985 ) SNAMES( 1 ), ' ... no
'
1804 IF( LTEST( I ) ) THEN
1805 WRITE( NOUT, FMT = 9984 ) SNAMES( I ), ' ... yes
'
1807 WRITE( NOUT, FMT = 9984 ) SNAMES( I ), ' ... no
'
1810 WRITE( NOUT, FMT = 9994 ) EPS
1811 WRITE( NOUT, FMT = * )
1818 $ CALL BLACS_SETUP( IAM, NPROCS )
1823 CALL BLACS_GET( -1, 0, ICTXT )
1824 CALL BLACS_GRIDINIT( ICTXT, 'row-major
', 1, NPROCS )
1828 EPS = PSLAMCH( ICTXT, 'eps
' )
1830 CALL SGEBR2D( ICTXT, 'all
', ' ', 1, 1, THRESH, 1, 0, 0 )
1831 CALL SGEBR2D( ICTXT, 'all
', ' ', 1, 1, ALPHA, 1, 0, 0 )
1832 CALL SGEBR2D( ICTXT, 'all
', ' ', 1, 1, BETA, 1, 0, 0 )
1834 CALL IGEBR2D( ICTXT, 'all
', ' ', 3, 1, WORK, 3, 0, 0 )
1839 I = 2*NGRIDS + 37*NMAT + NSUBS + 4
1840 CALL IGEBR2D( ICTXT, 'all
', ' ', I, 1, WORK, I, 0, 0 )
1843.EQ.
IF( WORK( I )1 ) THEN
1849.EQ.
IF( WORK( I )1 ) THEN
1860 DIAGVAL( J ) = CHAR( WORK( I ) )
1861 TRANVAL( J ) = CHAR( WORK( I+1 ) )
1862 UPLOVAL( J ) = CHAR( WORK( I+2 ) )
1865 CALL ICOPY( NGRIDS, WORK( I ), 1, PVAL, 1 )
1867 CALL ICOPY( NGRIDS, WORK( I ), 1, QVAL, 1 )
1869 CALL ICOPY( NMAT, WORK( I ), 1, MVAL, 1 )
1871 CALL ICOPY( NMAT, WORK( I ), 1, NVAL, 1 )
1873 CALL ICOPY( NMAT, WORK( I ), 1, MAVAL, 1 )
1875 CALL ICOPY( NMAT, WORK( I ), 1, NAVAL, 1 )
1877 CALL ICOPY( NMAT, WORK( I ), 1, IMBAVAL, 1 )
1879 CALL ICOPY( NMAT, WORK( I ), 1, INBAVAL, 1 )
1881 CALL ICOPY( NMAT, WORK( I ), 1, MBAVAL, 1 )
1883 CALL ICOPY( NMAT, WORK( I ), 1, NBAVAL, 1 )
1885 CALL ICOPY( NMAT, WORK( I ), 1, RSCAVAL, 1 )
1887 CALL ICOPY( NMAT, WORK( I ), 1, CSCAVAL, 1 )
1889 CALL ICOPY( NMAT, WORK( I ), 1, IAVAL, 1 )
1891 CALL ICOPY( NMAT, WORK( I ), 1, JAVAL, 1 )
1893 CALL ICOPY( NMAT, WORK( I ), 1, MXVAL, 1 )
1895 CALL ICOPY( NMAT, WORK( I ), 1, NXVAL, 1 )
1897 CALL ICOPY( NMAT, WORK( I ), 1, IMBXVAL, 1 )
1899 CALL ICOPY( NMAT, WORK( I ), 1, INBXVAL, 1 )
1901 CALL ICOPY( NMAT, WORK( I ), 1, MBXVAL, 1 )
1903 CALL ICOPY( NMAT, WORK( I ), 1, NBXVAL, 1 )
1905 CALL ICOPY( NMAT, WORK( I ), 1, RSCXVAL, 1 )
1907 CALL ICOPY( NMAT, WORK( I ), 1, CSCXVAL, 1 )
1909 CALL ICOPY( NMAT, WORK( I ), 1, IXVAL, 1 )
1911 CALL ICOPY( NMAT, WORK( I ), 1, JXVAL, 1 )
1913 CALL ICOPY( NMAT, WORK( I ), 1, INCXVAL, 1 )
1915 CALL ICOPY( NMAT, WORK( I ), 1, MYVAL, 1 )
1917 CALL ICOPY( NMAT, WORK( I ), 1, NYVAL, 1 )
1919 CALL ICOPY( NMAT, WORK( I ), 1, IMBYVAL, 1 )
1921 CALL ICOPY( NMAT, WORK( I ), 1, INBYVAL, 1 )
1923 CALL ICOPY( NMAT, WORK( I ), 1, MBYVAL, 1 )
1925 CALL ICOPY( NMAT, WORK( I ), 1, NBYVAL, 1 )
1927 CALL ICOPY( NMAT, WORK( I ), 1, RSCYVAL, 1 )
1929 CALL ICOPY( NMAT, WORK( I ), 1, CSCYVAL, 1 )
1931 CALL ICOPY( NMAT, WORK( I ), 1, IYVAL, 1 )
1933 CALL ICOPY( NMAT, WORK( I ), 1, JYVAL, 1 )
1935 CALL ICOPY( NMAT, WORK( I ), 1, INCYVAL, 1 )
1939.EQ.
IF( WORK( I )1 ) THEN
1942 LTEST( J ) = .FALSE.
1949 CALL BLACS_GRIDEXIT( ICTXT )
1953 120 WRITE( NOUT, FMT = 9997 )
1955.NE..AND..NE.
IF( NOUT6 NOUT0 )
1957 CALL BLACS_ABORT( ICTXT, 1 )
1962 9998 FORMAT( ' number of values of
',5A, ' is less than 1 or greater
',
1964 9997 FORMAT( ' illegal input in file
',40A,'. aborting run.
' )
1965 9996 FORMAT( A7, L2 )
1966 9995 FORMAT( ' subprogram name
', A7, ' not recognized
',
1967 $ /' ******* tests abandoned *******
' )
1968 9994 FORMAT( 2X, 'relative machine precision (eps) is taken to be
',
1970 9993 FORMAT( 2X, 'number of tests :
', I6 )
1971 9992 FORMAT( 2X, 'number of process grids :
', I6 )
1972 9991 FORMAT( 2X, ' :
', 5I6 )
1973 9990 FORMAT( 2X, A1, ' :
', 5I6 )
1974 9988 FORMAT( 2X, 'stop on failure flag :
', L6 )
1975 9987 FORMAT( 2X, 'test
for error exits flag :
', L6 )
1976 9986 FORMAT( 2X, 'verbosity level :
', I6 )
1977 9985 FORMAT( 2X, 'routines to be tested :
', A, A8 )
1978 9984 FORMAT( 2X, ' ', A, A8 )
1979 9983 FORMAT( 2X, 'leading dimension gap :
', I6 )
1980 9982 FORMAT( 2X, 'alpha :
', G16.6 )
1981 9981 FORMAT( 2X, 'beta :
', G16.6 )
1982 9980 FORMAT( 2X, 'threshold value :
', G16.6 )
1983 9979 FORMAT( 2X, 'logical block size :
', I6 )
1988 SUBROUTINE PSBLAS2TSTCHKE( LTEST, INOUT, NPROCS )
1996 INTEGER INOUT, NPROCS
2066 PARAMETER ( NSUBS = 7 )
2070 INTEGER I, ICTXT, MYCOL, MYROW, NPCOL, NPROW
2073 INTEGER SCODE( NSUBS )
2076 EXTERNAL BLACS_GET, BLACS_GRIDEXIT, BLACS_GRIDINFO,
2077 $ BLACS_GRIDINIT, PSDIMEE, PSGEMV, PSGER,
2078 $ PSMATEE, PSOPTEE, PSSYMV, PSSYR, PSSYR2,
2079 $ PSTRMV, PSTRSV, PSVECEE
2084 CHARACTER*7 SNAMES( NSUBS )
2085 COMMON /SNAMEC/SNAMES
2086 COMMON /PBERRORC/NOUT, ABRTFLG
2089 DATA SCODE/21, 22, 23, 23, 24, 25, 27/
2096 CALL BLACS_GET( -1, 0, ICTXT )
2097 CALL BLACS_GRIDINIT( ICTXT, 'row-major
', 1, NPROCS )
2098 CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL )
2111 IF( LTEST( I ) ) THEN
2112 CALL PSOPTEE( ICTXT, NOUT, PSGEMV, SCODE( I ), SNAMES( I ) )
2113 CALL PSDIMEE( ICTXT, NOUT, PSGEMV, SCODE( I ), SNAMES( I ) )
2114 CALL PSMATEE( ICTXT, NOUT, PSGEMV, SCODE( I ), SNAMES( I ) )
2115 CALL PSVECEE( ICTXT, NOUT, PSGEMV, SCODE( I ), SNAMES( I ) )
2121 IF( LTEST( I ) ) THEN
2122 CALL PSOPTEE( ICTXT, NOUT, PSSYMV, SCODE( I ), SNAMES( I ) )
2123 CALL PSDIMEE( ICTXT, NOUT, PSSYMV, SCODE( I ), SNAMES( I ) )
2124 CALL PSMATEE( ICTXT, NOUT, PSSYMV, SCODE( I ), SNAMES( I ) )
2125 CALL PSVECEE( ICTXT, NOUT, PSSYMV, SCODE( I ), SNAMES( I ) )
2131 IF( LTEST( I ) ) THEN
2132 CALL PSOPTEE( ICTXT, NOUT, PSTRMV, SCODE( I ), SNAMES( I ) )
2133 CALL PSDIMEE( ICTXT, NOUT, PSTRMV, SCODE( I ), SNAMES( I ) )
2134 CALL PSMATEE( ICTXT, NOUT, PSTRMV, SCODE( I ), SNAMES( I ) )
2135 CALL PSVECEE( ICTXT, NOUT, PSTRMV, SCODE( I ), SNAMES( I ) )
2141 IF( LTEST( I ) ) THEN
2142 CALL PSOPTEE( ICTXT, NOUT, PSTRSV, SCODE( I ), SNAMES( I ) )
2143 CALL PSDIMEE( ICTXT, NOUT, PSTRSV, SCODE( I ), SNAMES( I ) )
2144 CALL PSMATEE( ICTXT, NOUT, PSTRSV, SCODE( I ), SNAMES( I ) )
2145 CALL PSVECEE( ICTXT, NOUT, PSTRSV, SCODE( I ), SNAMES( I ) )
2151 IF( LTEST( I ) ) THEN
2152 CALL PSDIMEE( ICTXT, NOUT, PSGER, SCODE( I ), SNAMES( I ) )
2153 CALL PSVECEE( ICTXT, NOUT, PSGER, SCODE( I ), SNAMES( I ) )
2154 CALL PSMATEE( ICTXT, NOUT, PSGER, SCODE( I ), SNAMES( I ) )
2160 IF( LTEST( I ) ) THEN
2161 CALL PSOPTEE( ICTXT, NOUT, PSSYR, SCODE( I ), SNAMES( I ) )
2162 CALL PSDIMEE( ICTXT, NOUT, PSSYR, SCODE( I ), SNAMES( I ) )
2163 CALL PSVECEE( ICTXT, NOUT, PSSYR, SCODE( I ), SNAMES( I ) )
2164 CALL PSMATEE( ICTXT, NOUT, PSSYR, SCODE( I ), SNAMES( I ) )
2170 IF( LTEST( I ) ) THEN
2171 CALL PSOPTEE( ICTXT, NOUT, PSSYR2, SCODE( I ), SNAMES( I ) )
2172 CALL PSDIMEE( ICTXT, NOUT, PSSYR2, SCODE( I ), SNAMES( I ) )
2173 CALL PSVECEE( ICTXT, NOUT, PSSYR2, SCODE( I ), SNAMES( I ) )
2174 CALL PSMATEE( ICTXT, NOUT, PSSYR2, SCODE( I ), SNAMES( I ) )
2177.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2178 $ WRITE( NOUT, FMT = 9999 )
2180 CALL BLACS_GRIDEXIT( ICTXT )
2186 9999 FORMAT( 2X, 'error-exit tests completed.
' )
2193 SUBROUTINE PSCHKARG2( ICTXT, NOUT, SNAME, UPLO, TRANS, DIAG, M,
2194 $ N, ALPHA, IA, JA, DESCA, IX, JX, DESCX,
2195 $ INCX, BETA, IY, JY, DESCY, INCY, INFO )
2203 CHARACTER*1 DIAG, TRANS, UPLO
2204 INTEGER IA, ICTXT, INCX, INCY, INFO, IX, IY, JA, JX,
2210 INTEGER DESCA( * ), DESCX( * ), DESCY( * )
2324 INTEGER BLOCK_CYCLIC_2D_INB, CSRC_, CTXT_, DLEN_,
2325 $ DTYPE_, IMB_, INB_, LLD_, MB_, M_, NB_, N_,
2327 PARAMETER ( BLOCK_CYCLIC_2D_INB = 2, DLEN_ = 11,
2328 $ DTYPE_ = 1, CTXT_ = 2, M_ = 3, N_ = 4,
2329 $ IMB_ = 5, INB_ = 6, MB_ = 7, NB_ = 8,
2330 $ RSRC_ = 9, CSRC_ = 10, LLD_ = 11 )
2333 CHARACTER*1 DIAGREF, TRANSREF, UPLOREF
2334 INTEGER I, IAREF, INCXREF, INCYREF, IXREF, IYREF,
2335 $ JAREF, JXREF, JYREF, MREF, MYCOL, MYROW, NPCOL,
2337 REAL ALPHAREF, BETAREF
2340 CHARACTER*15 ARGNAME
2341 INTEGER DESCAREF( DLEN_ ), DESCXREF( DLEN_ ),
2345 EXTERNAL BLACS_GRIDINFO, IGSUM2D
2358 CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL )
2362.EQ.
IF( INFO0 ) THEN
2373 DESCAREF( I ) = DESCA( I )
2378 DESCXREF( I ) = DESCX( I )
2385 DESCYREF( I ) = DESCY( I )
2394.NOT.
IF( LSAME( DIAG, DIAGREF ) ) THEN
2395 WRITE( ARGNAME, FMT = '(A)
' ) 'diag
'
2396.NOT.
ELSE IF( LSAME( TRANS, TRANSREF ) ) THEN
2397 WRITE( ARGNAME, FMT = '(A)
' ) 'trans
'
2398.NOT.
ELSE IF( LSAME( UPLO, UPLOREF ) ) THEN
2399 WRITE( ARGNAME, FMT = '(A)
' ) 'uplo
'
2400.NE.
ELSE IF( MMREF ) THEN
2401 WRITE( ARGNAME, FMT = '(A)
' ) 'm
'
2402.NE.
ELSE IF( NNREF ) THEN
2403 WRITE( ARGNAME, FMT = '(A)
' ) 'n
'
2404.NE.
ELSE IF( ALPHAALPHAREF ) THEN
2405 WRITE( ARGNAME, FMT = '(A)
' ) 'alpha'
2406.NE.
ELSE IF( IAIAREF ) THEN
2407 WRITE( ARGNAME, FMT = '(A)
' ) 'ia
'
2408.NE.
ELSE IF( JAJAREF ) THEN
2409 WRITE( ARGNAME, FMT = '(A)
' ) 'ja
'
2410.NE.
ELSE IF( DESCA( DTYPE_ )DESCAREF( DTYPE_ ) ) THEN
2411 WRITE( ARGNAME, FMT = '(A)
' ) 'desca( DTYPE_ )
'
2412.NE.
ELSE IF( DESCA( M_ )DESCAREF( M_ ) ) THEN
2413 WRITE( ARGNAME, FMT = '(A)
' ) 'desca( M_ )
'
2414.NE.
ELSE IF( DESCA( N_ )DESCAREF( N_ ) ) THEN
2415 WRITE( ARGNAME, FMT = '(A)
' ) 'desca( N_ )
'
2416.NE.
ELSE IF( DESCA( IMB_ )DESCAREF( IMB_ ) ) THEN
2417 WRITE( ARGNAME, FMT = '(A)
' ) 'desca( IMB_ )
'
2418.NE.
ELSE IF( DESCA( INB_ )DESCAREF( INB_ ) ) THEN
2419 WRITE( ARGNAME, FMT = '(A)
' ) 'desca( INB_ )
'
2420.NE.
ELSE IF( DESCA( MB_ )DESCAREF( MB_ ) ) THEN
2421 WRITE( ARGNAME, FMT = '(A)
' ) 'desca( MB_ )
'
2422.NE.
ELSE IF( DESCA( NB_ )DESCAREF( NB_ ) ) THEN
2423 WRITE( ARGNAME, FMT = '(A)
' ) 'desca( NB_ )
'
2424.NE.
ELSE IF( DESCA( RSRC_ )DESCAREF( RSRC_ ) ) THEN
2425 WRITE( ARGNAME, FMT = '(A)
' ) 'desca( RSRC_ )
'
2426.NE.
ELSE IF( DESCA( CSRC_ )DESCAREF( CSRC_ ) ) THEN
2427 WRITE( ARGNAME, FMT = '(A)
' ) 'desca( CSRC_ )
'
2428.NE.
ELSE IF( DESCA( CTXT_ )DESCAREF( CTXT_ ) ) THEN
2429 WRITE( ARGNAME, FMT = '(A)
' ) 'desca( CTXT_ )
'
2430.NE.
ELSE IF( DESCA( LLD_ )DESCAREF( LLD_ ) ) THEN
2431 WRITE( ARGNAME, FMT = '(A)
' ) 'desca( LLD_ )
'
2432.NE.
ELSE IF( IXIXREF ) THEN
2433 WRITE( ARGNAME, FMT = '(A)
' ) 'ix
'
2434.NE.
ELSE IF( JXJXREF ) THEN
2435 WRITE( ARGNAME, FMT = '(A)
' ) 'jx
'
2436.NE.
ELSE IF( DESCX( DTYPE_ )DESCXREF( DTYPE_ ) ) THEN
2437 WRITE( ARGNAME, FMT = '(A)
' ) 'descx( DTYPE_ )
'
2438.NE.
ELSE IF( DESCX( M_ )DESCXREF( M_ ) ) THEN
2439 WRITE( ARGNAME, FMT = '(A)
' ) 'descx( M_ )
'
2440.NE.
ELSE IF( DESCX( N_ )DESCXREF( N_ ) ) THEN
2441 WRITE( ARGNAME, FMT = '(A)
' ) 'descx( N_ )
'
2442.NE.
ELSE IF( DESCX( IMB_ )DESCXREF( IMB_ ) ) THEN
2443 WRITE( ARGNAME, FMT = '(A)
' ) 'descx( IMB_ )
'
2444.NE.
ELSE IF( DESCX( INB_ )DESCXREF( INB_ ) ) THEN
2445 WRITE( ARGNAME, FMT = '(A)
' ) 'descx( INB_ )
'
2446.NE.
ELSE IF( DESCX( MB_ )DESCXREF( MB_ ) ) THEN
2447 WRITE( ARGNAME, FMT = '(A)
' ) 'descx( MB_ )
'
2448.NE.
ELSE IF( DESCX( NB_ )DESCXREF( NB_ ) ) THEN
2449 WRITE( ARGNAME, FMT = '(A)
' ) 'descx( NB_ )
'
2450.NE.
ELSE IF( DESCX( RSRC_ )DESCXREF( RSRC_ ) ) THEN
2451 WRITE( ARGNAME, FMT = '(A)
' ) 'descx( RSRC_ )
'
2452.NE.
ELSE IF( DESCX( CSRC_ )DESCXREF( CSRC_ ) ) THEN
2453 WRITE( ARGNAME, FMT = '(A)
' ) 'descx( CSRC_ )
'
2454.NE.
ELSE IF( DESCX( CTXT_ )DESCXREF( CTXT_ ) ) THEN
2455 WRITE( ARGNAME, FMT = '(A)' )
'DESCX( CTXT_ )'
2456 ELSE IF( descx( lld_ ).NE.descxref( lld_ ) )
THEN
2457 WRITE( argname, fmt =
'(A)' )
'DESCX( LLD_ )'
2458 ELSE IF( incx.NE.incxref )
THEN
2459 WRITE( argname, fmt =
'(A)' )
'INCX'
2460 ELSE IF( beta.NE.betaref )
THEN
2461 WRITE( argname, fmt = '(a)
' ) 'beta
'
2462.NE.
ELSE IF( IYIYREF ) THEN
2463 WRITE( ARGNAME, FMT = '(a)
' ) 'iy
'
2464.NE.
ELSE IF( JYJYREF ) THEN
2465 WRITE( ARGNAME, FMT = '(a)
' ) 'jy
'
2466.NE.
ELSE IF( DESCY( DTYPE_ )DESCYREF( DTYPE_ ) ) THEN
2467 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( dtype_ )
'
2468.NE.
ELSE IF( DESCY( M_ )DESCYREF( M_ ) ) THEN
2469 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( m_ )
'
2470.NE.
ELSE IF( DESCY( N_ )DESCYREF( N_ ) ) THEN
2471 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( n_ )
'
2472.NE.
ELSE IF( DESCY( IMB_ )DESCYREF( IMB_ ) ) THEN
2473 WRITE( ARGNAME, FMT = '(a)' )
'DESCY( IMB_ )'
2474 ELSE IF( descy( inb_ ).NE.descyref( inb_ ) )
THEN
2475 WRITE( argname, fmt =
'(A)' )
'DESCY( INB_ )'
2476 ELSE IF( descy( mb_ ).NE.descyref( mb_ ) )
THEN
2477 WRITE( argname, fmt =
'(A)' )
'DESCY( MB_ )'
2478 ELSE IF( descy( nb_ ).NE.descyref( nb_ ) )
THEN
2479 WRITE( argname, fmt =
'(A)' )
'DESCY( NB_ )'
2480 ELSE IF( descy( rsrc_ ).NE.descyref( rsrc_ ) )
THEN
2481 WRITE( argname, fmt =
'(A)' )
'DESCY( RSRC_ )'
2482 ELSE IF( descy( csrc_ ).NE.descyref( csrc_ ) )
THEN
2483 WRITE( argname, fmt =
'(A)' )
'DESCY( CSRC_ )'
2484 ELSE IF( descy( ctxt_ ).NE.descyref( ctxt_ ) )
THEN
2485 WRITE( argname, fmt =
'(A)' )
'DESCY( CTXT_ )'
2486 ELSE IF( descy( lld_ ).NE.descyref( lld_ ) )
THEN
2487 WRITE( argname, fmt =
'(A)' )
'DESCY( LLD_ )'
2488 ELSE IF( incy.NE.incyref )
THEN
2489 WRITE( argname, fmt =
'(A)' )
'INCY'
2494 CALL igsum2d( ictxt,
'All',
' ', 1, 1, info, 1, -1, 0 )
2496 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
THEN
2498 IF( info.NE.0 )
THEN
2499 WRITE( nout, fmt = 9999 ) argname, sname
2501 WRITE( nout, fmt = 9998 ) sname
2508 9999
FORMAT( 2x,
' ***** Input-only parameter check: ', a,
2509 $
' FAILED changed ', a,
' *****' )
2510 9998
FORMAT( 2x,
' ***** Input-only parameter check: ', a,
2519 $ M, N, ALPHA, A, PA, IA, JA, DESCA, X,
2520 $ PX, IX, JX, DESCX, INCX, BETA, Y, PY,
2521 $ IY, JY, DESCY, INCY, THRESH, ROGUE,
2530 CHARACTER*1 DIAG, TRANS, UPLO
2531 INTEGER IA, ICTXT, INCX, INCY, INFO, IX, IY, JA, JX,
2532 $ JY, M, N, NOUT, NROUT
2533 REAL ALPHA, BETA, ROGUE, THRESH
2536 INTEGER DESCA( * ), DESCX( * ), DESCY( * )
2537 REAL A( * ), PA( * ), PX( * ), PY( * ), WORK( * ),
2752 PARAMETER ( ONE = 1.0e+0, zero = 0.0e+0 )
2753 INTEGER BLOCK_CYCLIC_2D_INB, CSRC_, CTXT_, DLEN_,
2754 $ DTYPE_, IMB_, INB_, LLD_, MB_, M_, NB_, N_,
2756 parameter( block_cyclic_2d_inb = 2, dlen_ = 11,
2757 $ dtype_ = 1, ctxt_ = 2, m_ = 3, n_ = 4,
2758 $ imb_ = 5, inb_ = 6, mb_ = 7, nb_ = 8,
2759 $ rsrc_ = 9, csrc_ = 10, lld_ = 11 )
2762 INTEGER I, MYCOL, MYROW, NPCOL, NPROW
2782 IF( ( m.LE.0 ).OR.( n.LE.0 ) )
2793 IF( nrout.EQ.1 )
THEN
2799 CALL psmvch( ictxt, trans, m, n, alpha, a, ia, ja, desca, x,
2800 $ ix, jx, descx, incx, beta, y, py, iy, jy, descy,
2801 $ incy, work, err, ierr( 3 ) )
2803 IF( ierr( 3 ).NE.0 )
THEN
2804 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2805 $
WRITE( nout, fmt = 9997 )
2806 ELSE IF( err.GT.thresh )
THEN
2807 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2808 $
WRITE( nout, fmt = 9996 ) err
2813 CALL pschkmin( err, m, n, a, pa, ia, ja, desca, ierr( 1 ) )
2814 IF( lsame( trans,
'N' ) )
THEN
2815 CALL pschkvin( err, n, x, px, ix, jx, descx, incx,
2818 CALL pschkvin( err, m, x, px, ix, jx, descx, incx,
2822 ELSE IF( nrout.EQ.2 )
THEN
2828 CALL psmvch( ictxt,
'No transpose', n, n, alpha, a, ia, ja,
2829 $ desca, x, ix, jx, descx, incx, beta, y, py, iy,
2830 $ jy, descy, incy, work, err, ierr( 3 ) )
2832 IF( ierr( 3 ).NE.0 )
THEN
2833 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2834 $
WRITE( nout, fmt = 9997 )
2835 ELSE IF( err.GT.thresh )
THEN
2836 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2837 $
WRITE( nout, fmt = 9996 ) err
2842 IF( lsame( uplo,
'L' ) )
THEN
2843 CALL pb_slaset(
'Upper', n-1, n-1, 0, rogue, rogue,
2844 $ a( ia+ja*desca( m_ ) ), desca( m_ ) )
2846 CALL pb_slaset(
'Lower', n-1, n-1, 0, rogue, rogue,
2847 $ a( ia+1+(ja-1)*desca( m_ ) ), desca( m_ ) )
2849 CALL pschkmin( err, n, n, a, pa, ia, ja, desca, ierr( 1 ) )
2850 CALL pschkvin( err, n, x, px, ix, jx, descx, incx, ierr( 2 ) )
2852 ELSE IF( nrout.EQ.3 )
THEN
2858 CALL psmvch( ictxt, trans, n, n, one, a, ia, ja, desca, y, ix,
2859 $ jx, descx, incx, zero, x, px, ix, jx, descx, incx,
2860 $ work, err, ierr( 2 ) )
2862 IF( ierr( 2 ).NE.0 )
THEN
2863 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2864 $
WRITE( nout, fmt = 9997 )
2865 ELSE IF( err.GT.thresh )
THEN
2866 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2867 $
WRITE( nout, fmt = 9996 ) err
2872 IF( lsame( uplo,
'L' ) )
THEN
2873 IF( lsame( diag,
'N' ) )
THEN
2874 CALL pb_slaset(
'Upper', n-1, n-1, 0, rogue, rogue,
2875 $ a( ia+ja*desca( m_ ) ), desca( m_ ) )
2877 CALL pb_slaset(
'Upper', n, n, 0, rogue, one,
2878 $ a( ia+(ja-1)*desca( m_ ) ), desca( m_ ) )
2881 IF( lsame( diag,
'N' ) )
THEN
2882 CALL pb_slaset(
'Lower', n-1, n-1, 0, rogue, rogue,
2883 $ a( ia+1+(ja-1)*desca( m_ ) ),
2886 CALL pb_slaset(
'Lower', n, n, 0, rogue, one,
2887 $ a( ia+(ja-1)*desca( m_ ) ), desca( m_ ) )
2890 CALL pschkmin( err, n, n, a, pa, ia, ja, desca, ierr( 1 ) )
2892 ELSE IF( nrout.EQ.4 )
THEN
2898 CALL strsv( uplo, trans, diag, n, a( ia+(ja-1)*desca( m_ ) ),
2899 $ desca( m_ ), x( ix+(jx-1)*descx( m_ ) ), incx )
2900 CALL pstrmv( uplo, trans, diag, n, pa, ia, ja, desca, px, ix,
2902 CALL psmvch( ictxt, trans, n, n, one, a, ia, ja, desca, x, ix,
2903 $ jx, descx, incx, zero, y, px, ix, jx, descx, incx,
2904 $ work, err, ierr( 2 ) )
2906 IF( ierr( 2 ).NE.0 )
THEN
2907 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2908 $
WRITE( nout, fmt = 9997 )
2909 ELSE IF( err.GT.thresh )
THEN
2910 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2911 $
WRITE( nout, fmt = 9996 ) err
2916 IF( lsame( uplo,
'L' ) )
THEN
2917 IF( lsame( diag,
'N' ) )
THEN
2918 CALL pb_slaset(
'Upper', n-1, n-1, 0, rogue, rogue,
2919 $ a( ia+ja*desca( m_ ) ), desca( m_ ) )
2921 CALL pb_slaset( 'upper
', N, N, 0, ROGUE, ONE,
2922 $ A( IA+(JA-1)*DESCA( M_ ) ), DESCA( M_ ) )
2925 IF( LSAME( DIAG, 'n
' ) ) THEN
2926 CALL PB_SLASET( 'lower
', N-1, N-1, 0, ROGUE, ROGUE,
2927 $ A( IA+1+(JA-1)*DESCA( M_ ) ),
2930 CALL PB_SLASET( 'lower
', N, N, 0, ROGUE, ONE,
2931 $ A( IA+(JA-1)*DESCA( M_ ) ), DESCA( M_ ) )
2934 CALL PSCHKMIN( ERR, N, N, A, PA, IA, JA, DESCA, IERR( 1 ) )
2936.EQ.
ELSE IF( NROUT5 ) THEN
2942 CALL PSVMCH( ICTXT, 'ge
', M, N, ALPHA, X, IX, JX, DESCX,
2943 $ INCX, Y, IY, JY, DESCY, INCY, A, PA, IA, JA,
2944 $ DESCA, WORK, ERR, IERR( 1 ) )
2945.NE.
IF( IERR( 1 )0 ) THEN
2946.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2947 $ WRITE( NOUT, FMT = 9997 )
2948.GT.
ELSE IF( ERRTHRESH ) THEN
2949.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2950 $ WRITE( NOUT, FMT = 9996 ) ERR
2955 CALL PSCHKVIN( ERR, M, X, PX, IX, JX, DESCX, INCX, IERR( 2 ) )
2956 CALL PSCHKVIN( ERR, N, Y, PY, IY, JY, DESCY, INCY, IERR( 3 ) )
2958.EQ.
ELSE IF( NROUT6 ) THEN
2964 CALL PSVMCH( ICTXT, UPLO, N, N, ALPHA, X, IX, JX, DESCX,
2965 $ INCX, X, IX, JX, DESCX, INCX, A, PA, IA, JA,
2966 $ DESCA, WORK, ERR, IERR( 1 ) )
2967.NE.
IF( IERR( 1 )0 ) THEN
2968.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2969 $ WRITE( NOUT, FMT = 9997 )
2970.GT.
ELSE IF( ERRTHRESH ) THEN
2971.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2972 $ WRITE( NOUT, FMT = 9996 ) ERR
2977 CALL PSCHKVIN( ERR, N, X, PX, IX, JX, DESCX, INCX, IERR( 2 ) )
2979.EQ.
ELSE IF( NROUT7 ) THEN
2985 CALL PSVMCH2( ICTXT, UPLO, N, N, ALPHA, X, IX, JX, DESCX, INCX,
2986 $ Y, IY, JY, DESCY, INCY, A, PA, IA, JA, DESCA,
2987 $ WORK, ERR, IERR( 1 ) )
2988.NE.
IF( IERR( 1 )0 ) THEN
2989.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2990 $ WRITE( NOUT, FMT = 9997 )
2991.GT.
ELSE IF( ERRTHRESH ) THEN
2992.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2993 $ WRITE( NOUT, FMT = 9996 ) ERR
2998 CALL PSCHKVIN( ERR, N, X, PX, IX, JX, DESCX, INCX, IERR( 2 ) )
2999 CALL PSCHKVIN( ERR, N, Y, PY, IY, JY, DESCY, INCY, IERR( 3 ) )
3003.NE.
IF( IERR( 1 )0 ) THEN
3005.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
3006 $ WRITE( NOUT, FMT = 9999 ) 'a
'
3009.NE.
IF( IERR( 2 )0 ) THEN
3011.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
3012 $ WRITE( NOUT, FMT = 9998 ) 'x
'
3015.NE.
IF( IERR( 3 )0 ) THEN
3017.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
3018 $ WRITE( NOUT, FMT = 9998 ) 'y
'
3021 9999 FORMAT( 2X, ' ***** error: matrix operand
', A,
3022 $ ' is incorrect.
' )
3023 9998 FORMAT( 2X, ' ***** error: vector operand
', A,
3024 $ ' is incorrect.
' )
3025 9997 FORMAT( 2X, ' *****
fatal error - computed result is less
',
3026 $ 'than half accurate *****
' )
3027 9996 FORMAT( 2X, ' ***** test completed with maximum test ratio:
',
3028 $ F11.5, ' suspect *****
' )
end diagonal values have been computed in the(sparse) matrix id.SOL
logical function lsame(ca, cb)
LSAME
subroutine strsv(uplo, trans, diag, n, a, lda, x, incx)
STRSV
subroutine blacs_gridinit(cntxt, c, nprow, npcol)
subroutine blacs_gridexit(cntxt)
subroutine blacs_gridinfo(cntxt, nprow, npcol, myrow, mycol)
for(i8=*sizetab-1;i8 >=0;i8--)
subroutine pmdimchk(ictxt, nout, m, n, matrix, ia, ja, desca, info)
subroutine pvdimchk(ictxt, nout, n, matrix, ix, jx, descx, incx, info)
subroutine pb_descset2(desc, m, n, imb, inb, mb, nb, rsrc, csrc, ctxt, lld)
subroutine pmdescchk(ictxt, nout, matrix, desca, dta, ma, na, imba, inba, mba, nba, rsrca, csrca, mpa, nqa, iprea, imida, iposta, igap, gapmul, info)
subroutine pvdescchk(ictxt, nout, matrix, descx, dtx, mx, nx, imbx, inbx, mbx, nbx, rsrcx, csrcx, incx, mpx, nqx, iprex, imidx, ipostx, igap, gapmul, info)
subroutine pschkarg2(ictxt, nout, sname, uplo, trans, diag, m, n, alpha, ia, ja, desca, ix, jx, descx, incx, beta, iy, jy, descy, incy, info)
subroutine psblas2tstchk(ictxt, nout, nrout, uplo, trans, diag, m, n, alpha, a, pa, ia, ja, desca, x, px, ix, jx, descx, incx, beta, y, py, iy, jy, descy, incy, thresh, rogue, work, info)
subroutine psblas2tstchke(ltest, inout, nprocs)
subroutine psbla2tstinfo(summry, nout, nmat, diagval, tranval, uploval, mval, nval, maval, naval, imbaval, mbaval, inbaval, nbaval, rscaval, cscaval, iaval, javal, mxval, nxval, imbxval, mbxval, inbxval, nbxval, rscxval, cscxval, ixval, jxval, incxval, myval, nyval, imbyval, mbyval, inbyval, nbyval, rscyval, cscyval, iyval, jyval, incyval, ldval, ngrids, pval, ldpval, qval, ldqval, nblog, ltest, sof, tee, iam, igap, iverb, nprocs, thresh, alpha, beta, work)
subroutine pschkmin(errmax, m, n, a, pa, ia, ja, desca, info)
subroutine pb_slascal(uplo, m, n, ioffd, alpha, a, lda)
subroutine pschkvin(errmax, n, x, px, ix, jx, descx, incx, info)
subroutine pslaset(uplo, m, n, alpha, beta, a, ia, ja, desca)
subroutine pb_sfillpad(ictxt, m, n, a, lda, ipre, ipost, chkval)
subroutine pb_slaset(uplo, m, n, ioffd, alpha, beta, a, lda)
subroutine psvmch(ictxt, uplo, m, n, alpha, x, ix, jx, descx, incx, y, iy, jy, descy, incy, a, pa, ia, ja, desca, g, err, info)
subroutine psvprnt(ictxt, nout, n, x, incx, irprnt, icprnt, cvecnm)
subroutine pslagen(inplace, aform, diag, offa, m, n, ia, ja, desca, iaseed, a, lda)
subroutine pslascal(type, m, n, alpha, a, ia, ja, desca)
subroutine pb_schekpad(ictxt, mess, m, n, a, lda, ipre, ipost, chkval)
subroutine psmvch(ictxt, trans, m, n, alpha, a, ia, ja, desca, x, ix, jx, descx, incx, beta, y, py, iy, jy, descy, incy, g, err, info)
subroutine pb_pslaprnt(m, n, a, ia, ja, desca, irprnt, icprnt, cmatnm, nout, work)
subroutine psmprnt(ictxt, nout, m, n, a, lda, irprnt, icprnt, cmatnm)
subroutine pschkvout(n, x, px, ix, jx, descx, incx, info)
subroutine psvmch2(ictxt, uplo, m, n, alpha, x, ix, jx, descx, incx, y, iy, jy, descy, incy, a, pa, ia, ja, desca, g, err, info)