4 CHARACTER*7 SNAMES( NSUBS )
6 DATA snames/
'PCGEMV ',
'PCHEMV ',
'PCTRMV ',
7 $
'PCTRSV ',
'PCGERU ',
'PCGERC ',
122 INTEGER maxtests, maxgrids, gapmul, cplxsz, totmem,
123 $ memsiz, nsubs, realsz
124 COMPLEX one, padval, zero, rogue
125 parameter( maxtests = 20, maxgrids = 20, gapmul = 10,
126 $ cplxsz = 8, totmem = 2000000,
127 $ memsiz = totmem / cplxsz, realsz = 4,
128 $ one = ( 1.0e+0, 0.0e+0 ),
129 $ padval = ( -9923.0e+0, -9923.0e+0 ),
130 $ rogue = ( -1.0e+10, 1.0e+10 ),
131 $ zero = ( 0.0e+0, 0.0e+0 ), nsubs = 8 )
132 INTEGER block_cyclic_2d_inb, csrc_, ctxt_, dlen_,
133 $ dtype_, imb_, inb_, lld_, mb_, m_, nb_, n_,
135 parameter( block_cyclic_2d_inb = 2, dlen_ = 11,
136 $ dtype_ = 1, ctxt_ = 2, m_ = 3, n_ = 4,
137 $ imb_ = 5, inb_ = 6, mb_ = 7, nb_ = 8,
138 $ rsrc_ = 9, csrc_ = 10, lld_ = 11 )
141 LOGICAL errflg, sof, tee
142 CHARACTER*1 aform, diag, diagdo, trans, uplo
143 INTEGER csrca, csrcx, csrcy, i, ia, iam, iaseed, ictxt,
144 $ igap, imba, imbx, imby, imida, imidx, imidy,
145 $ inba, inbx, inby, incx, incy, ipa, ipg, ipmata,
146 $ ipmatx, ipmaty, iposta, ipostx, iposty, iprea,
147 $ iprex, iprey, ipx, ipy, iverb, ix, ixseed, iy,
148 $ iyseed, j, ja, jx, jy, k, lda, ldx, ldy, m, ma,
149 $ mba, mbx, mby, memreqd, mpa, mpx, mpy, mx, my,
150 $ mycol, myrow, n, na, nba, nbx, nby, ncola,
151 $ ngrids, nlx, nly, nout, npcol, nprocs, nprow,
152 $ nqa, nqx, nqy, nrowa, ntests, nx, ny, offd,
153 $ rsrca, rsrcx, rsrcy, tskip, tstcnt
155 COMPLEX alpha, beta, scale
158 LOGICAL ltest( nsubs ), ycheck( nsubs )
159 CHARACTER*1 diagval( maxtests ), tranval( maxtests ),
160 $ uploval( maxtests )
162 INTEGER cscaval( maxtests ), cscxval( maxtests ),
163 $ cscyval( maxtests ), desca( dlen_ ),
164 $ descar( dlen_ ), descx( dlen_ ),
165 $ descxr( dlen_ ), descy( dlen_ ),
166 $ descyr( dlen_ ), iaval( maxtests ), ierr( 6 ),
167 $ imbaval( maxtests ), imbxval( maxtests ),
168 $ imbyval( maxtests ), inbaval( maxtests ),
169 $ inbxval( maxtests ), inbyval( maxtests ),
170 $ incxval( maxtests ), incyval( maxtests ),
171 $ ixval( maxtests ), iyval( maxtests ),
172 $ javal( maxtests ), jxval( maxtests ),
174 INTEGER kfail( nsubs ), kpass( nsubs ), kskip( nsubs ),
175 $ ktests( nsubs ), maval( maxtests ),
176 $ mbaval( maxtests ), mbxval( maxtests ),
177 $ mbyval( maxtests ), mval( maxtests ),
178 $ mxval( maxtests ), myval( maxtests ),
179 $ naval( maxtests ), nbaval( maxtests ),
180 $ nbxval( maxtests ), nbyval( maxtests ),
181 $ nval( maxtests ), nxval( maxtests ),
182 $ nyval( maxtests ), pval( maxtests ),
183 $ qval( maxtests ), rscaval( maxtests ),
184 $ rscxval( maxtests ), rscyval( maxtests )
185 COMPLEX mem( memsiz )
205 INTRINSIC abs,
cmplx,
max, mod, real
208 CHARACTER*7 snames( nsubs )
211 COMMON /snamec/snames
212 COMMON /infoc/info, nblog
213 COMMON /pberrorc/nout, abrtflg
216 DATA ycheck/.true., .true., .false., .false.,
217 $ .true., .true., .false., .true./
254 CALL blacs_pinfo( iam, nprocs )
256 $ uploval, mval, nval, maval, naval, imbaval,
257 $ mbaval, inbaval, nbaval, rscaval, cscaval,
258 $ iaval, javal, mxval, nxval, imbxval, mbxval,
259 $ inbxval, nbxval, rscxval, cscxval, ixval,
260 $ jxval, incxval, myval, nyval, imbyval,
261 $ mbyval, inbyval, nbyval, rscyval, cscyval,
262 $ iyval, jyval, incyval, maxtests, ngrids,
263 $ pval, maxgrids, qval, maxgrids, nblog, ltest,
264 $ sof, tee, iam, igap, iverb, nprocs, thresh,
268 WRITE( nout, fmt = 9975 )
269 WRITE( nout, fmt = * )
287 IF( nprow.LT.1 )
THEN
289 $
WRITE( nout, fmt = 9999 )
'GRID SIZE',
'NPROW', nprow
291 ELSE IF( npcol.LT.1 )
THEN
293 $
WRITE( nout, fmt = 9999 )
'GRID SIZE',
'NPCOL', npcol
295 ELSE IF( nprow*npcol.GT.nprocs )
THEN
297 $
WRITE( nout, fmt = 9998 ) nprow*npcol, nprocs
301 IF( ierr( 1 ).GT.0 )
THEN
303 $
WRITE( nout, fmt = 9997 )
'GRID'
310 CALL blacs_get( -1, 0, ictxt )
317 IF( myrow.GE.nprow .OR. mycol.GE.npcol )
370 WRITE( nout, fmt = * )
371 WRITE( nout, fmt = 9996 ) tstcnt, nprow, npcol
372 WRITE( nout, fmt = * )
374 WRITE( nout, fmt = 9995 )
375 WRITE( nout, fmt = 9994 )
376 WRITE( nout, fmt = 9995 )
377 WRITE( nout, fmt = 9993 ) m, n, uplo, trans, diag
379 WRITE( nout, fmt = 9995 )
380 WRITE( nout, fmt = 9992 )
381 WRITE( nout, fmt = 9995 )
382 WRITE( nout, fmt = 9991 ) ia, ja, ma, na, imba, inba,
383 $ mba, nba, rsrca, csrca
385 WRITE( nout, fmt = 9995 )
386 WRITE( nout, fmt = 9990 )
387 WRITE( nout, fmt = 9995 )
388 WRITE( nout, fmt = 9989 ) ix, jx, mx, nx, imbx, inbx,
389 $ mbx, nbx, rsrcx, csrcx, incx
391 WRITE( nout, fmt = 9995 )
392 WRITE( nout, fmt = 9988 )
393 WRITE( nout, fmt = 9995 )
394 WRITE( nout, fmt = 9989 ) iy, jy, my, ny, imby, inby,
395 $ mby, nby, rsrcy, csrcy, incy
397 WRITE( nout, fmt = 9995 )
403 IF( .NOT.
lsame( uplo,
'U' ).AND.
404 $ .NOT.
lsame( uplo,
'L' ) )
THEN
406 $
WRITE( nout, fmt = 9997 )
'UPLO'
411 IF( .NOT.
lsame( trans,
'N' ).AND.
412 $ .NOT.
lsame( trans,
'T' ).AND.
413 $ .NOT.
lsame( trans,
'C' ) )
THEN
415 $
WRITE( nout, fmt = 9997 )
'TRANS'
420 IF( .NOT.
lsame( diag ,
'U' ).AND.
421 $ .NOT.
lsame( diag ,
'N' ) )
THEN
423 $
WRITE( nout, fmt = 9997 ) trans
424 WRITE( nout, fmt = 9997 )
'DIAG'
432 $ block_cyclic_2d_inb, ma, na, imba, inba,
433 $ mba, nba, rsrca, csrca, mpa, nqa, iprea,
434 $ imida, iposta, igap, gapmul,
436 $ block_cyclic_2d_inb, mx, nx, imbx, inbx,
437 $ mbx, nbx, rsrcx, csrcx, incx, mpx, nqx,
438 $ iprex, imidx, ipostx, igap, gapmul,
441 $ block_cyclic_2d_inb, my, ny, imby, inby,
442 $ mby, nby, rsrcy, csrcy, incy, mpy, nqy,
443 $ iprey, imidy, iposty, igap, gapmul,
446 IF( ierr( 1 ).GT.0 .OR. ierr( 2 ).GT.0 .OR.
447 $ ierr( 3 ).GT.0 )
THEN
460 ipx = ipa + desca( lld_ )*nqa + iposta + iprex
461 ipy = ipx + descx( lld_ )*nqx + ipostx + iprey
462 ipmata = ipy + descy( lld_ )*nqy + iposty
463 ipmatx = ipmata + ma*na
464 ipmaty = ipmatx + mx*nx
465 ipg = ipmaty +
max( mx*nx, my*ny )
473 $ real( realsz ), real( cplxsz ) ) - 1 +
476 $
max( imby, mby ) ) )
478 IF( memreqd.GT.memsiz )
THEN
480 $
WRITE( nout, fmt = 9986 ) memreqd*cplxsz
486 CALL igsum2d( ictxt,
'All',
' ', 1, 1, ierr, 1, -1, 0 )
488 IF( ierr( 1 ).GT.0 )
THEN
490 $
WRITE( nout, fmt = 9987 )
501 IF( .NOT.ltest( k ) )
505 WRITE( nout, fmt = * )
506 WRITE( nout, fmt = 9985 ) snames( k )
514 IF(
lsame( trans,
'N' ) )
THEN
521 ELSE IF( k.EQ.5 .OR. k.EQ.6 )
THEN
535 CALL pmdimchk( ictxt, nout, nrowa, ncola,
'A', ia, ja
537 CALL pvdimchk( ictxt, nout, nlx,
'X', ix, jx, descx,
539 CALL pvdimchk( ictxt, nout, nly,
'Y', iy, jy, descy,
542 IF( ierr( 1 ).NE.0 .OR. ierr( 2 ).NE.0 .OR.
543 $ ierr( 3 ).NE.0 )
THEN
544 kskip( k ) = kskip( k ) + 1
550 IF( k.EQ.2 .OR. k.EQ.7 .OR. k.EQ.8 )
THEN
554 ELSE IF( ( k.EQ.4 ).AND.(
lsame( diag,
'N' ) ) )
THEN
564 CALL pclagen( .false., aform, diagdo, offd, ma, na,
565 $ 1, 1, desca, iaseed, mem( ipa ),
567 CALL pclagen( .false.,
'None',
'No diag', 0, mx, nx, 1,
568 $ 1, descx, ixseed, mem( ipx ),
571 $
CALL pclagen( .false.,
'None',
'No diag', 0, my, ny,
572 $ 1, 1, descy, iyseed, mem( ipy ),
577 CALL pb_descset2( descar, ma, na, imba, inba, mba, nba,
578 $ -1, -1, ictxt,
max( 1, ma ) )
579 CALL pclagen( .false., aform, diagdo, offd, ma, na,
580 $ 1, 1, descar, iaseed, mem( ipmata ),
582 CALL pb_descset2( descxr, mx, nx, imbx, inbx, mbx, nbx,
583 $ -1, -1, ictxt,
max( 1, mx ) )
584 CALL pclagen( .false.,
'None',
'No diag', 0, mx, nx, 1,
585 $ 1, descxr, ixseed, mem( ipmatx ),
587 IF( ycheck( k ) )
THEN
590 $ nby, -1, -1, ictxt,
max( 1, my ) )
591 CALL pclagen( .false.,
'None',
'No diag', 0, my, ny,
592 $ 1, 1, descyr, iyseed, mem( ipmaty ),
600 $ nbx, -1, -1, ictxt,
max( 1, mx ) )
601 CALL pclagen( .false.,
'None',
'No diag', 0, mx, nx,
602 $ 1, 1, descyr, ixseed, mem( ipmaty ),
609 IF( ( k.EQ.2 .OR. k.EQ.7 .OR. k.EQ.8 ).AND.
610 $ (
max( nrowa, ncola ).GT.1 ) )
THEN
614 IF(
lsame( uplo,
'L' ) )
THEN
618 CALL pclaset(
'Upper', nrowa-1, ncola-1, rogue,
619 $ rogue, mem( ipa ), ia, ja+1, desca )
621 CALL pb_claset(
'Upper', nrowa-1, ncola-1, 0,
623 $ mem( ipmata+ia-1+ja*lda ), lda )
626 ELSE IF(
lsame( uplo,
'U' ) )
THEN
630 CALL pclaset(
'Lower', nrowa-1, ncola-1, rogue,
631 $ rogue, mem( ipa ), ia+1, ja, desca )
633 CALL pb_claset(
'Lower', nrowa-1, ncola-1, 0,
635 $ mem( ipmata+ia+(ja-1)*lda ),
641 ELSE IF( k.EQ.3 .OR. k.EQ.4 )
THEN
643 IF(
lsame( uplo,
'L' ) )
THEN
647 IF(
lsame( diag,
'N' ) )
THEN
649 IF(
max( nrowa, ncola ).GT.1 )
THEN
650 CALL pclaset(
'Upper', nrowa-1, ncola-1,
651 $ rogue, rogue, mem( ipa ), ia,
653 CALL pb_claset(
'Upper', nrowa-1, ncola-1, 0,
655 $ mem( ipmata+ia-1+ja*lda ),
661 CALL pclaset(
'Upper', nrowa, ncola, rogue, one,
662 $ mem( ipa ), ia, ja, desca )
663 CALL pb_claset(
'Upper', nrowa, ncola, 0, zero,
665 $ mem( ipmata+ia-1+(ja-1)*lda ),
668 $ (
max( nrowa, ncola ).GT.1 ) )
THEN
670 $
cmplx( real(
max( nrowa, ncola ) ) )
671 CALL pclascal(
'Lower', nrowa-1, ncola-1,
672 $ scale, mem( ipa ), ia+1, ja,
676 $ mem( ipmata+ia+(ja-1)*lda ),
682 ELSE IF(
lsame( uplo,
'U' ) )
THEN
686 IF(
lsame( diag, 'n
' ) ) THEN
688.GT.
IF( MAX( NROWA, NCOLA )1 ) THEN
689 CALL PCLASET( 'lower
', NROWA-1, NCOLA-1,
690 $ ROGUE, ROGUE, MEM( IPA ), IA+1,
692 CALL PB_CLASET( 'lower
', NROWA-1, NCOLA-1, 0,
694 $ MEM( IPMATA+IA+(JA-1)*LDA ),
700 CALL PCLASET( 'lower
', NROWA, NCOLA, ROGUE, ONE,
701 $ MEM( IPA ), IA, JA, DESCA )
702 CALL PB_CLASET( 'lower
', NROWA, NCOLA, 0, ZERO,
704 $ MEM( IPMATA+IA-1+(JA-1)*LDA ),
707.GT.
$ ( MAX( NROWA, NCOLA )1 ) ) THEN
709 $ CMPLX( REAL( MAX( NROWA, NCOLA ) ) )
710 CALL PCLASCAL( 'upper
', NROWA-1, NCOLA-1,
711 $ SCALE, MEM( IPA ), IA, JA+1,
713 CALL PB_CLASCAL( 'upper
', NROWA-1, NCOLA-1,
715 $ MEM( IPMATA+IA-1+JA*LDA ), LDA )
726 CALL PB_CFILLPAD( ICTXT, MPA, NQA, MEM( IPA-IPREA ),
727 $ DESCA( LLD_ ), IPREA, IPOSTA, PADVAL )
729 CALL PB_CFILLPAD( ICTXT, MPX, NQX, MEM( IPX-IPREX ),
730 $ DESCX( LLD_ ), IPREX, IPOSTX, PADVAL )
732 IF( YCHECK( K ) ) THEN
733 CALL PB_CFILLPAD( ICTXT, MPY, NQY, MEM( IPY-IPREY ),
734 $ DESCY( LLD_ ), IPREY, IPOSTY,
741 CALL PCCHKARG2( ICTXT, NOUT, SNAMES( K ), UPLO, TRANS,
742 $ DIAG, M, N, ALPHA, IA, JA, DESCA, IX,
743 $ JX, DESCX, INCX, BETA, IY, JY, DESCY,
748.EQ.
IF( IVERB2 ) THEN
749 CALL PB_PCLAPRNT( NROWA, NCOLA, MEM( IPA ), IA, JA,
750 $ DESCA, 0, 0, 'parallel_initial_a
',
752.GE.
ELSE IF( IVERB3 ) THEN
753 CALL PB_PCLAPRNT( MA, NA, MEM( IPA ), 1, 1, DESCA, 0,
754 $ 0, 'parallel_initial_a
', NOUT,
758.EQ.
IF( IVERB2 ) THEN
759.EQ.
IF( INCXDESCX( M_ ) ) THEN
760 CALL PB_PCLAPRNT( 1, NLX, MEM( IPX ), IX, JX,
762 $ 'parallel_initial_x
', NOUT,
765 CALL PB_PCLAPRNT( NLX, 1, MEM( IPX ), IX, JX,
767 $ 'parallel_initial_x
', NOUT,
770.GE.
ELSE IF( IVERB3 ) THEN
771 CALL PB_PCLAPRNT( MX, NX, MEM( IPX ), 1, 1, DESCX, 0,
772 $ 0, 'parallel_initial_x
', NOUT,
776 IF( YCHECK( K ) ) THEN
777.EQ.
IF( IVERB2 ) THEN
778.EQ.
IF( INCYDESCY( M_ ) ) THEN
779 CALL PB_PCLAPRNT( 1, NLY, MEM( IPY ), IY, JY,
781 $ 'parallel_initial_y
', NOUT,
784 CALL PB_PCLAPRNT( NLY, 1, MEM( IPY ), IY, JY,
786 $ 'parallel_initial_y
', NOUT,
789.GE.
ELSE IF( IVERB3 ) THEN
790 CALL PB_PCLAPRNT( MY, NY, MEM( IPY ), 1, 1, DESCY,
791 $ 0, 0, 'parallel_initial_y
', NOUT,
803 CALL PCGEMV( TRANS, M, N, ALPHA, MEM( IPA ), IA, JA,
804 $ DESCA, MEM( IPX ), IX, JX, DESCX, INCX,
805 $ BETA, MEM( IPY ), IY, JY, DESCY, INCY )
807.EQ.
ELSE IF( K2 ) THEN
811 CALL PCIPSET( 'bignum
', N, MEM( IPA ), IA, JA, DESCA )
813 CALL PCHEMV( UPLO, N, ALPHA, MEM( IPA ), IA, JA,
814 $ DESCA, MEM( IPX ), IX, JX, DESCX, INCX,
815 $ BETA, MEM( IPY ), IY, JY, DESCY, INCY )
817 CALL PCIPSET( 'zero
', N, MEM( IPA ), IA, JA, DESCA )
819.EQ.
ELSE IF( K3 ) THEN
823 CALL PCTRMV( UPLO, TRANS, DIAG, N, MEM( IPA ), IA, JA,
824 $ DESCA, MEM( IPX ), IX, JX, DESCX, INCX )
826.EQ.
ELSE IF( K4 ) THEN
830 CALL PCTRSV( UPLO, TRANS, DIAG, N, MEM( IPA ), IA, JA,
831 $ DESCA, MEM( IPX ), IX, JX, DESCX, INCX )
833.EQ.
ELSE IF( K5 ) THEN
837 CALL PCGERU( M, N, ALPHA, MEM( IPX ), IX, JX, DESCX,
838 $ INCX, MEM( IPY ), IY, JY, DESCY, INCY,
839 $ MEM( IPA ), IA, JA, DESCA )
841.EQ.
ELSE IF( K6 ) THEN
845 CALL PCGERC( M, N, ALPHA, MEM( IPX ), IX, JX, DESCX,
846 $ INCX, MEM( IPY ), IY, JY, DESCY, INCY,
847 $ MEM( IPA ), IA, JA, DESCA )
849.EQ.
ELSE IF( K7 ) THEN
853.NE.
IF( CMPLX( REAL( ALPHA ) )ZERO )
854 $ CALL PCIPSET( 'bignum
', N, MEM( IPA ), IA, JA,
857 CALL PCHER( UPLO, N, REAL( ALPHA ), MEM( IPX ), IX,
858 $ JX, DESCX, INCX, MEM( IPA ), IA, JA,
861.EQ.
ELSE IF( K8 ) THEN
866 $ CALL PCIPSET( 'bignum
', N, MEM( IPA ), IA, JA,
869 CALL PCHER2( UPLO, N, ALPHA, MEM( IPX ), IX, JX,
870 $ DESCX, INCX, MEM( IPY ), IY, JY, DESCY,
871 $ INCY, MEM( IPA ), IA, JA, DESCA )
878 KSKIP( K ) = KSKIP( K ) + 1
880 $ WRITE( NOUT, FMT = 9974 ) INFO
886 CALL PB_CCHEKPAD( ICTXT, SNAMES( K ), MPA, NQA,
887 $ MEM( IPA-IPREA ), DESCA( LLD_ ), IPREA,
890 CALL PB_CCHEKPAD( ICTXT, SNAMES( K ), MPX, NQX,
891 $ MEM( IPX-IPREX ), DESCX( LLD_ ), IPREX,
894 IF( YCHECK( K ) ) THEN
895 CALL PB_CCHEKPAD( ICTXT, SNAMES( K ), MPY, NQY,
896 $ MEM( IPY-IPREY ), DESCY( LLD_ ),
897 $ IPREY, IPOSTY, PADVAL )
902 CALL PCBLAS2TSTCHK( ICTXT, NOUT, K, UPLO, TRANS, DIAG, M,
903 $ N, ALPHA, MEM( IPMATA ), MEM( IPA ),
904 $ IA, JA, DESCA, MEM( IPMATX ),
905 $ MEM( IPX ), IX, JX, DESCX, INCX,
906 $ BETA, MEM( IPMATY ), MEM( IPY ), IY,
907 $ JY, DESCY, INCY, THRESH, ROGUE,
909.EQ.
IF( MOD( INFO, 2 )1 ) THEN
911.EQ.
ELSE IF( MOD( INFO / 2, 2 )1 ) THEN
913.EQ.
ELSE IF( MOD( INFO / 4, 2 )1 ) THEN
915.NE.
ELSE IF( INFO0 ) THEN
924 CALL PCCHKARG2( ICTXT, NOUT, SNAMES( K ), UPLO, TRANS,
925 $ DIAG, M, N, ALPHA, IA, JA, DESCA, IX,
926 $ JX, DESCX, INCX, BETA, IY, JY, DESCY,
931 CALL PCCHKMOUT( NROWA, NCOLA, MEM( IPMATA ), MEM( IPA ),
932 $ IA, JA, DESCA, IERR( 4 ) )
933 CALL PCCHKVOUT( NLX, MEM( IPMATX ), MEM( IPX ), IX, JX,
934 $ DESCX, INCX, IERR( 5 ) )
936.NE.
IF( IERR( 4 )0 ) THEN
938 $ WRITE( NOUT, FMT = 9982 ) 'parallel_a
',
942.NE.
IF( IERR( 5 )0 ) THEN
944 $ WRITE( NOUT, FMT = 9982 ) 'parallel_x
',
948 IF( YCHECK( K ) ) THEN
949 CALL PCCHKVOUT( NLY, MEM( IPMATY ), MEM( IPY ), IY,
950 $ JY, DESCY, INCY, IERR( 6 ) )
951.NE.
IF( IERR( 6 )0 ) THEN
953 $ WRITE( NOUT, FMT = 9982 ) 'parallel_y
',
960.NE..OR..NE..OR.
IF( INFO0 IERR( 1 )0
961.NE..OR..NE..OR.
$ IERR( 2 )0 IERR( 3 )0
962.NE..OR..NE..OR.
$ IERR( 4 )0 IERR( 5 )0
963.NE.
$ IERR( 6 )0 ) THEN
965 $ WRITE( NOUT, FMT = 9984 ) SNAMES( K )
966 KFAIL( K ) = KFAIL( K ) + 1
970 $ WRITE( NOUT, FMT = 9983 ) SNAMES( K )
971 KPASS( K ) = KPASS( K ) + 1
976.GE..AND.
IF( IVERB1 ERRFLG ) THEN
977.NE..OR..GE.
IF( IERR( 4 )0 IVERB3 ) THEN
978 CALL PCMPRNT( ICTXT, NOUT, MA, NA, MEM( IPMATA ),
979 $ LDA, 0, 0, 'serial_a
' )
980 CALL PB_PCLAPRNT( MA, NA, MEM( IPA ), 1, 1, DESCA,
981 $ 0, 0, 'parallel_a
', NOUT,
983.NE.
ELSE IF( IERR( 1 )0 ) THEN
984.GT..AND..GT.
IF( ( NROWA0 )( NCOLA0 ) )
985 $ CALL PCMPRNT( ICTXT, NOUT, NROWA, NCOLA,
986 $ MEM( IPMATA+IA-1+(JA-1)*LDA ),
987 $ LDA, 0, 0, 'serial_a
' )
988 CALL PB_PCLAPRNT( NROWA, NCOLA, MEM( IPA ), IA, JA,
989 $ DESCA, 0, 0, 'parallel_a
',
990 $ NOUT, MEM( IPMATA ) )
992.NE..OR..GE.
IF( IERR( 5 )0 IVERB3 ) THEN
993 CALL PCMPRNT( ICTXT, NOUT, MX, NX, MEM( IPMATX ),
994 $ LDX, 0, 0, 'serial_x
' )
995 CALL PB_PCLAPRNT( MX, NX, MEM( IPX ), 1, 1, DESCX,
996 $ 0, 0, 'parallel_x
', NOUT,
998.NE.
ELSE IF( IERR( 2 )0 ) THEN
1000 $ CALL PCVPRNT( ICTXT, NOUT, NLX,
1001 $ MEM( IPMATX+IX-1+(JX-1)*LDX ),
1002 $ INCX, 0, 0, 'serial_x
' )
1003.EQ.
IF( INCXDESCX( M_ ) ) THEN
1004 CALL PB_PCLAPRNT( 1, NLX, MEM( IPX ), IX, JX,
1005 $ DESCX, 0, 0, 'parallel_x',
1006 $ nout, mem( ipmatx ) )
1009 $ descx, 0, 0,
'PARALLEL_X',
1010 $ nout, mem( ipmatx ) )
1013 IF( ycheck( k ) )
THEN
1014 IF( ierr( 6 ).NE.0 .OR. iverb.GE.3 )
THEN
1015 CALL pcmprnt( ictxt, nout, my, ny,
1016 $ mem( ipmaty ), ldy, 0, 0,
1019 $ descy, 0, 0,
'PARALLEL_Y',
1020 $ nout, mem( ipmatx ) )
1021 ELSE IF( ierr( 3 ).NE.0 )
THEN
1023 $
CALL pcvprnt( ictxt, nout, nly,
1024 $ mem( ipmaty+iy-1+(jy-1)*ldy ),
1025 $ incy, 0, 0,
'SERIAL_Y' )
1026 IF( incy.EQ.descy( m_ ) )
THEN
1028 $ descy, 0, 0,
'PARALLEL_Y',
1029 $ nout, mem( ipmatx ) )
1032 $ descy, 0, 0,
'PARALLEL_Y',
1033 $ nout, mem( ipmatx ) )
1041 IF( sof.AND.errflg )
1046 40
IF( iam.EQ.0 )
THEN
1047 WRITE( nout, fmt = * )
1048 WRITE( nout, fmt = 9981 ) j
1064 IF( ltest( i ) )
THEN
1065 kskip( i ) = kskip( i ) + tskip
1066 ktests( i ) = kskip( i ) + kfail( i ) + kpass( i )
1073 WRITE( nout, fmt = * )
1074 WRITE( nout, fmt = 9977 )
1075 WRITE( nout, fmt = * )
1076 WRITE( nout, fmt = 9979 )
1077 WRITE( nout, fmt = 9978 )
1080 WRITE( nout, fmt = 9980 )
'|', snames( i ), ktests( i ),
1081 $ kpass( i ), kfail( i ), kskip( i )
1083 WRITE( nout, fmt = * )
1084 WRITE( nout, fmt = 9976 )
1085 WRITE( nout, fmt = * )
1089 CALL blacs_exit( 0 )
1091 9999
FORMAT(
'ILLEGAL ', a,
': ', a,
' = ', i10,
1092 $
' should be at least 1' )
1093 9998
FORMAT(
'ILLEGAL GRID: NPROW*NPCOL = ', i4,
1094 $
'. It can be at most', i4 )
1095 9997
FORMAT(
'Bad ', a,
' parameters: going on to next test case.' )
1096 9996
FORMAT( 2x,
'Test number ', i4 ,
' started on a ', i6,
' x ',
1097 $ i6,
' process grid.' )
1098 9995
FORMAT( 2x,
' ------------------------------------------------',
1099 $
'--------------------------' )
1100 9994
FORMAT( 2x,
' M N UPLO TRANS DIAG' )
1101 9993
FORMAT( 5x,i6,1x,i6,9x,a1,11x,a1,10x,a1 )
1102 9992
FORMAT( 2x,
' IA JA MA NA IMBA INBA',
1103 $
' MBA NBA RSRCA CSRCA' )
1104 9991
FORMAT( 5x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,
1106 9990
FORMAT( 2x,
' IX JX MX NX IMBX INBX',
1107 $
' MBX NBX RSRCX CSRCX INCX' )
1108 9989
FORMAT( 5x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,
1109 $ 1x,i5,1x,i5,1x,i6 )
1110 9988
FORMAT( 2x,
' IY JY MY NY IMBY INBY',
1111 $
' MBY NBY RSRCY CSRCY INCY' )
1112 9987
FORMAT(
'Not enough memory for this test: going on to',
1113 $
' next test case.' )
1114 9986
FORMAT(
'Not enough memory. Need: '
1115 9985
FORMAT( 2x,
' Tested Subroutine: ', a )
1116 9984
FORMAT( 2x,
' ***** Computational check: ', a,
' ',
1117 $
' FAILED ',
' *****' )
1118 9983
FORMAT( 2x,
' ***** Computational check: ', a,
' ',
1119 $
' PASSED ',
' *****' )
1120 9982
FORMAT( 2x,
' ***** ERROR ***** Matrix operand ', a,
1121 $
' modified by ', a,
' *****' )
1122 9981
FORMAT( 2x,
'Test number ', i4,
' completed.' )
1123 9980
FORMAT( 2x,a1,2x,a7,8x,i4,6x,i4,5x,i4,4x,i4 )
1124 9979
FORMAT( 2x,
' SUBROUTINE TOTAL TESTS PASSED FAILED ',
1126 9978
FORMAT( 2x,
' ---------- ----------- ------ ------ ',
1128 9977
FORMAT( 2x,
'Testing Summary')
1129 9976
FORMAT( 2x,
'End of Tests.' )
1130 9975
FORMAT( 2x,
'Tests started.' )
1131 9974
FORMAT( 2x,
' ***** Operation not supported, error code: ',
1140 $ UPLOVAL, MVAL, NVAL, MAVAL, NAVAL,
1141 $ IMBAVAL, MBAVAL, INBAVAL, NBAVAL,
1142 $ RSCAVAL, CSCAVAL, IAVAL, JAVAL,
1143 $ MXVAL, NXVAL, IMBXVAL, MBXVAL,
1144 $ INBXVAL, NBXVAL, RSCXVAL, CSCXVAL,
1145 $ IXVAL, JXVAL, INCXVAL, MYVAL, NYVAL,
1146 $ IMBYVAL, MBYVAL, INBYVAL, NBYVAL,
1147 $ RSCYVAL, CSCYVAL, IYVAL, JYVAL,
1148 $ INCYVAL, LDVAL, NGRIDS, PVAL, LDPVAL,
1149 $ QVAL, LDQVAL, NBLOG, LTEST, SOF, TEE,
1150 $ IAM, IGAP, IVERB, NPROCS, THRESH, ALPHA,
1160 INTEGER IAM, IGAP, IVERB, LDPVAL, LDQVAL, LDVAL, NBLOG,
1161 $ NGRIDS, NMAT, NOUT, NPROCS
1166 CHARACTER*( * ) SUMMRY
1167 CHARACTER*1 DIAGVAL( LDVAL ), TRANVAL( LDVAL ),
1170 INTEGER CSCAVAL( LDVAL ), CSCXVAL( LDVAL ),
1171 $ cscyval( ldval ), iaval( ldval ),
1172 $ imbaval( ldval ), imbxval( ldval ),
1173 $ imbyval( ldval ), inbaval( ldval ),
1174 $ inbxval( ldval ), inbyval( ldval ),
1175 $ incxval( ldval ), incyval( ldval ),
1176 $ ixval( ldval ), iyval( ldval ), javal( ldval ),
1177 $ jxval( ldval ), jyval( ldval ), maval( ldval ),
1178 $ mbaval( ldval ), mbxval( ldval ),
1179 $ mbyval( ldval ), mval( ldval ), mxval( ldval ),
1180 $ myval( ldval ), naval( ldval ),
1181 $ nbaval( ldval ), nbxval( ldval ),
1182 $ nbyval( ldval ), nval( ldval ), nxval( ldval ),
1183 $ nyval( ldval ), pval( ldpval ), qval( ldqval ),
1185 $ rscyval( ldval ), work( * )
1472 PARAMETER ( NIN = 11, nsubs = 8 )
1481 CHARACTER*79 USRINFO
1494 INTRINSIC char, ichar,
max,
min
1497 CHARACTER*7 SNAMES( NSUBS )
1509 OPEN( nin, file=
'PCBLAS2TST.dat', status=
'OLD' )
1515 READ( nin, fmt = 9999 ) usrinfo
1519 READ( nin, fmt = * ) summry
1520 READ( nin, fmt = * ) nout
1522 $
OPEN( nout, file = summry, status =
'UNKNOWN' )
1532 READ( nin, fmt = * ) tee
1536 READ( nin, fmt = * ) iverb
1537 IF( iverb.LT.0 .OR. iverb.GT.3 )
1542 READ( nin, fmt = * ) igap
1548 READ( nin, fmt = * ) thresh
1554 READ( nin, fmt = * ) nblog
1560 READ( nin, fmt = * ) ngrids
1561 IF( ngrids.LT.1 .OR. ngrids.GT.ldpval )
THEN
1562 WRITE( nout, fmt = 9998 )
'Grids', ldpval
1564 ELSE IF( ngrids.GT.ldqval )
THEN
1565 WRITE( nout, fmt = 9998 )
'Grids', ldqval
1571 READ( nin, fmt = * ) ( pval( i ), i = 1, ngrids )
1572 READ( nin, fmt = * ) ( qval( i ), i = 1, ngrids )
1577 READ( nin, fmt = * ) beta
1581 READ( nin, fmt = * ) nmat
1582 IF( nmat.LT.1 .OR. nmat.GT.ldval )
THEN
1583 WRITE( nout, fmt = 9998 )
'Tests', ldval
1589 READ( nin, fmt = * ) ( uploval( i ), i = 1, nmat )
1590 READ( nin, fmt = * ) ( tranval( i ), i = 1, nmat )
1591 READ( nin, fmt = * ) ( diagval( i ), i = 1, nmat )
1592 READ( nin, fmt = * ) ( mval( i ), i = 1, nmat )
1593 READ( nin, fmt = * ) ( nval( i ), i = 1, nmat )
1594 READ( nin, fmt = * ) ( maval( i ), i = 1, nmat )
1595 READ( nin, fmt = * ) ( naval( i ), i = 1, nmat )
1596 READ( nin, fmt = * ) ( imbaval( i ), i = 1, nmat )
1597 READ( nin, fmt = * ) ( inbaval( i ), i = 1, nmat )
1598 READ( nin, fmt = * ) ( mbaval( i ), i = 1, nmat )
1599 READ( nin, fmt = * ) ( nbaval( i ), i = 1, nmat )
1600 READ( nin, fmt = * ) ( rscaval( i ), i = 1, nmat )
1601 READ( nin, fmt = * ) ( cscaval( i ), i = 1, nmat )
1602 READ( nin, fmt = * ) ( iaval( i ), i = 1, nmat )
1603 READ( nin, fmt = * ) ( javal( i ), i = 1, nmat )
1604 READ( nin, fmt = * ) ( mxval( i ), i = 1, nmat )
1605 READ( nin, fmt = * ) ( nxval( i ), i = 1, nmat )
1606 READ( nin, fmt = * ) ( imbxval( i ), i = 1, nmat )
1607 READ( nin, fmt = * ) ( inbxval( i ), i = 1, nmat )
1608 READ( nin, fmt = * ) ( mbxval( i ), i = 1, nmat )
1609 READ( nin, fmt = * ) ( nbxval( i ), i = 1, nmat )
1610 READ( nin, fmt = * ) ( rscxval( i ), i = 1, nmat )
1611 READ( nin, fmt = * ) ( cscxval( i ), i = 1, nmat )
1612 READ( nin, fmt = * ) ( ixval( i ), i = 1, nmat )
1613 READ( nin, fmt = * ) ( jxval( i ), i = 1, nmat )
1614 READ( nin, fmt = * ) ( incxval( i ), i = 1, nmat )
1615 READ( nin, fmt = * ) ( myval( i ), i = 1, nmat )
1616 READ( nin, fmt = * ) ( nyval( i ), i = 1, nmat )
1617 READ( nin, fmt = * ) ( imbyval( i ), i = 1, nmat )
1618 READ( nin, fmt = * ) ( inbyval( i ), i = 1, nmat )
1619 READ( nin, fmt = * ) ( mbyval( i ), i = 1, nmat )
1620 READ( nin, fmt = * ) ( nbyval( i ), i = 1, nmat )
1621 READ( nin, fmt = * ) ( rscyval( i ), i = 1, nmat )
1622 READ( nin, fmt = * ) ( cscyval( i ), i = 1, nmat )
1623 READ( nin, fmt = * ) ( iyval( i ), i = 1, nmat )
1624 READ( nin, fmt = * ) ( jyval( i ), i = 1, nmat )
1625 READ( nin, fmt = * ) ( incyval( i ), i = 1, nmat )
1631 ltest( i ) = .false.
1634 READ( nin, fmt = 9996,
END = 50 ) SNAMET, ltestt
1636 IF( snamet.EQ.snames( i ) )
1640 WRITE( nout, fmt = 9995 )snamet
1656 IF( nprocs.LT.1 )
THEN
1659 nprocs =
max( nprocs, pval( i )*qval( i ) )
1661 CALL blacs_setup( iam, nprocs )
1667 CALL blacs_get( -1, 0, ictxt )
1676 CALL sgebs2d( ictxt,
'All',
' ', 1, 1, thresh, 1 )
1678 CALL cgebs2d( ictxt,
'All',
' ', 1, 1, beta, 1 )
1683 CALL igebs2d( ictxt,
'All',
' ', 3, 1, work, 3 )
1703 work( i ) = ichar( diagval( j ) )
1704 work( i+1 ) = ichar( tranval( j ) )
1705 work( i+2 ) = ichar( uploval( j ) )
1708 CALL icopy( ngrids, pval, 1, work( i ), 1 )
1710 CALL icopy( ngrids, qval, 1, work( i
1712 CALL icopy( nmat, mval, 1, work( i ), 1 )
1714 CALL icopy( nmat, nval, 1, work( i ), 1 )
1716 CALL icopy( nmat, maval, 1, work( i ), 1 )
1718 CALL icopy( nmat, naval, 1, work( i ), 1 )
1720 CALL icopy( nmat, imbaval, 1, work( i ), 1 )
1722 CALL icopy( nmat, inbaval, 1, work( i ), 1 )
1724 CALL icopy( nmat, mbaval, 1, work( i ), 1 )
1726 CALL icopy( nmat, nbaval, 1, work( i ), 1 )
1728 CALL icopy( nmat, rscaval, 1, work( i ), 1 )
1730 CALL icopy( nmat, cscaval, 1, work( i ), 1 )
1732 CALL icopy( nmat, iaval, 1, work( i ), 1 )
1734 CALL icopy( nmat, javal, 1, work( i ), 1 )
1736 CALL icopy( nmat, mxval, 1, work
1738 CALL icopy( nmat, nxval, 1, work( i ), 1 )
1740 CALL icopy( nmat, imbxval, 1, work( i ), 1 )
1742 CALL icopy( nmat, inbxval, 1, work( i ), 1 )
1744 CALL icopy( nmat, mbxval, 1, work( i ), 1 )
1746 CALL icopy( nmat, nbxval, 1, work( i ), 1 )
1748 CALL icopy( nmat, rscxval, 1, work( i ), 1 )
1750 CALL icopy( nmat, cscxval, 1, work( i ), 1 )
1752 CALL icopy( nmat, ixval, 1, work( i ), 1 )
1754 CALL icopy( nmat, jxval, 1, work( i ), 1 )
1756 CALL icopy( nmat, incxval, 1, work( i ), 1 )
1758 CALL icopy( nmat, myval, 1, work( i ), 1 )
1760 CALL icopy( nmat, nyval, 1, work( i ), 1 )
1762 CALL icopy( nmat, imbyval, 1, work( i ), 1 )
1764 CALL icopy( nmat, inbyval, 1, work( i ), 1 )
1766 CALL icopy( nmat, mbyval, 1, work( i ), 1 )
1768 CALL icopy( nmat, nbyval, 1, work( i ), 1 )
1770 CALL icopy( nmat, rscyval, 1, work( i ), 1 )
1772 CALL icopy( nmat, cscyval, 1, work( i ), 1 )
1774 CALL icopy( nmat, iyval, 1, work( i ), 1 )
1776 CALL icopy( nmat, jyval, 1, work( i ), 1 )
1778 CALL icopy( nmat, incyval, 1, work( i ), 1 )
1782 IF( ltest( j ) )
THEN
1790 CALL igebs2d( ictxt,
'All',
' ', i, 1, work, i )
1794 WRITE( nout, fmt = 9999 )
'Level 2 PBLAS testing program.'
1795 WRITE( nout, fmt = 9999 ) usrinfo
1796 WRITE( nout, fmt = * )
1797 WRITE( nout, fmt = 9999 )
1798 $
'Tests of the complex single precision '//
1800 WRITE( NOUT, FMT = * )
1801 WRITE( NOUT, FMT = 9993 ) NMAT
1802 WRITE( NOUT, FMT = 9979 ) NBLOG
1803 WRITE( NOUT, FMT = 9992 ) NGRIDS
1804 WRITE( NOUT, FMT = 9990 )
1805 $ 'p
', ( PVAL(I), I = 1, MIN(NGRIDS, 5) )
1807 $ WRITE( NOUT, FMT = 9991 ) ( PVAL(I), I = 6,
1808 $ MIN( 10, NGRIDS ) )
1810 $ WRITE( NOUT, FMT = 9991 ) ( PVAL(I), I = 11,
1811 $ MIN( 15, NGRIDS ) )
1813 $ WRITE( NOUT, FMT = 9991 ) ( PVAL(I), I = 16, NGRIDS )
1814 WRITE( NOUT, FMT = 9990 )
1815 $ 'q
', ( QVAL(I), I = 1, MIN(NGRIDS, 5) )
1817 $ WRITE( NOUT, FMT = 9991 ) ( QVAL(I), I = 6,
1818 $ MIN( 10, NGRIDS ) )
1820 $ WRITE( NOUT, FMT = 9991 ) ( QVAL(I), I = 11,
1821 $ MIN( 15, NGRIDS ) )
1823 $ WRITE( NOUT, FMT = 9991 ) ( QVAL(I), I = 16, NGRIDS )
1824 WRITE( NOUT, FMT = 9988 ) SOF
1825 WRITE( NOUT, FMT = 9987 ) TEE
1826 WRITE( NOUT, FMT = 9983 ) IGAP
1827 WRITE( NOUT, FMT = 9986 ) IVERB
1828 WRITE( NOUT, FMT = 9980 ) THRESH
1829 WRITE( NOUT, FMT = 9982 ) ALPHA
1830 WRITE( NOUT, FMT = 9981 ) BETA
1831 IF( LTEST( 1 ) ) THEN
1832 WRITE( NOUT, FMT = 9985 ) SNAMES( 1 ), ' ... yes
'
1834 WRITE( NOUT, FMT = 9985 ) SNAMES( 1 ), ' ... no
'
1837 IF( LTEST( I ) ) THEN
1838 WRITE( NOUT, FMT = 9984 ) SNAMES( I ), ' ... yes
'
1840 WRITE( NOUT, FMT = 9984 ) SNAMES( I ), ' ... no
'
1843 WRITE( NOUT, FMT = 9994 ) EPS
1844 WRITE( NOUT, FMT = * )
1851 $ CALL BLACS_SETUP( IAM, NPROCS )
1856 CALL BLACS_GET( -1, 0, ICTXT )
1857 CALL BLACS_GRIDINIT( ICTXT, 'row-major
', 1, NPROCS )
1861 EPS = PSLAMCH( ICTXT, 'eps
' )
1863 CALL SGEBR2D( ICTXT, 'all
', ' ', 1, 1, THRESH, 1, 0, 0 )
1864 CALL CGEBR2D( ICTXT, 'all
', '', 1, 1, ALPHA, 1, 0, 0 )
1865 CALL CGEBR2D( ICTXT, 'all
', ' ', 1, 1, BETA, 1, 0, 0 )
1867 CALL IGEBR2D( ICTXT, 'all
', ' ', 3, 1, WORK, 3, 0, 0 )
1872 I = 2*NGRIDS + 37*NMAT + NSUBS + 4
1873 CALL IGEBR2D( ICTXT, 'all
', ' ', I, 1, WORK, I, 0, 0 )
1876.EQ.
IF( WORK( I )1 ) THEN
1882.EQ.
IF( WORK( I )1 ) THEN
1893 DIAGVAL( J ) = CHAR( WORK( I ) )
1894 TRANVAL( J ) = CHAR( WORK( I+1 ) )
1895 UPLOVAL( J ) = CHAR( WORK( I+2 ) )
1898 CALL ICOPY( NGRIDS, WORK( I ), 1, PVAL, 1 )
1900 CALL ICOPY( NGRIDS, WORK( I ), 1, QVAL, 1 )
1902 CALL ICOPY( NMAT, WORK( I ), 1, MVAL, 1 )
1904 CALL ICOPY( NMAT, WORK( I ), 1, NVAL, 1 )
1906 CALL ICOPY( NMAT, WORK( I ), 1, MAVAL, 1 )
1908 CALL ICOPY( NMAT, WORK( I ), 1, NAVAL, 1 )
1910 CALL ICOPY( NMAT, WORK( I ), 1, IMBAVAL, 1 )
1912 CALL ICOPY( NMAT, WORK( I ), 1, INBAVAL, 1 )
1914 CALL ICOPY( NMAT, WORK( I ), 1, MBAVAL, 1 )
1916 CALL ICOPY( NMAT, WORK( I ), 1, NBAVAL, 1 )
1918 CALL ICOPY( NMAT, WORK( I ), 1, RSCAVAL, 1 )
1920 CALL ICOPY( NMAT, WORK( I ), 1, CSCAVAL, 1 )
1922 CALL ICOPY( NMAT, WORK( I ), 1, IAVAL, 1 )
1924 CALL ICOPY( NMAT, WORK( I ), 1, JAVAL, 1 )
1926 CALL ICOPY( NMAT, WORK( I ), 1, MXVAL, 1 )
1928 CALL ICOPY( NMAT, WORK( I ), 1, NXVAL, 1 )
1930 CALL ICOPY( NMAT, WORK( I ), 1, IMBXVAL, 1 )
1932 CALL ICOPY( NMAT, WORK( I ), 1, INBXVAL, 1 )
1934 CALL ICOPY( NMAT, WORK( I ), 1, MBXVAL, 1 )
1936 CALL ICOPY( NMAT, WORK( I ), 1, NBXVAL, 1 )
1938 CALL ICOPY( NMAT, WORK( I ), 1, RSCXVAL, 1 )
1940 CALL ICOPY( NMAT, WORK( I ), 1, CSCXVAL, 1 )
1942 CALL ICOPY( NMAT, WORK( I ), 1, IXVAL, 1 )
1944 CALL ICOPY( NMAT, WORK( I ), 1, JXVAL, 1 )
1946 CALL ICOPY( NMAT, WORK( I ), 1, INCXVAL, 1 )
1948 CALL ICOPY( NMAT, WORK( I ), 1, MYVAL, 1 )
1950 CALL ICOPY( NMAT, WORK( I ), 1, NYVAL, 1 )
1952 CALL ICOPY( NMAT, WORK( I ), 1, IMBYVAL, 1 )
1954 CALL ICOPY( NMAT, WORK( I ), 1, INBYVAL, 1 )
1956 CALL ICOPY( NMAT, WORK( I ), 1, MBYVAL, 1 )
1958 CALL ICOPY( NMAT, WORK( I ), 1, NBYVAL, 1 )
1960 CALL ICOPY( NMAT, WORK( I ), 1, RSCYVAL, 1 )
1962 CALL ICOPY( NMAT, WORK( I ), 1, CSCYVAL, 1 )
1964 CALL ICOPY( NMAT, WORK( I ), 1, IYVAL, 1 )
1966 CALL ICOPY( NMAT, WORK( I ), 1, JYVAL, 1 )
1968 CALL ICOPY( NMAT, WORK( I ), 1, INCYVAL, 1 )
1972.EQ.
IF( WORK( I )1 ) THEN
1975 LTEST( J ) = .FALSE.
1982 CALL BLACS_GRIDEXIT( ICTXT )
1986 120 WRITE( NOUT, FMT = 9997 )
1988.NE..AND..NE.
IF( NOUT6 NOUT0 )
1990 CALL BLACS_ABORT( ICTXT, 1 )
1995 9998 FORMAT( ' number of values of
',5A, ' is less than 1 or greater
',
1997 9997 FORMAT( ' illegal input in file
',40A,'. aborting run.
' )
1998 9996 FORMAT( A7, L2 )
1999 9995 FORMAT( ' subprogram name
', A7, ' not recognized
',
2000 $ /' ******* tests abandoned *******
' )
2001 9994 FORMAT( 2X, 'relative machine precision(eps) is taken to be
',
2003 9993 FORMAT( 2X, 'number of tests :
', I6 )
2004 9992 FORMAT( 2X, 'number of process grids :
', I6 )
2005 9991 FORMAT( 2X, ' :
', 5I6 )
2006 9990 FORMAT( 2X, A1, ' :
', 5I6 )
2007 9988 FORMAT( 2X, 'stop on failure flag :
', L6 )
2008 9987 FORMAT( 2X, 'test
for error exits flag :
', L6 )
2009 9986 FORMAT( 2X, 'verbosity level :
', I6 )
2010 9985 FORMAT( 2X, 'routines to be tested : ', a, a8 )
2011 9984
FORMAT( 2x,
' ', a, a8 )
2012 9983
FORMAT( 2x,
'Leading dimension gap : '
2013 9982
FORMAT( 2x,
'Alpha : (', g16.6,
2015 9981
FORMAT( 2x,
'Beta : ('
2017 9980 FORMAT( 2X, 'threshold
value :
', G16.6 )
2018 9979 FORMAT( 2X, 'Logical block size :
', I6 )
2023 SUBROUTINE PCBLAS2TSTCHKE( LTEST, INOUT, NPROCS )
2031 INTEGER INOUT, NPROCS
2102 PARAMETER ( NSUBS = 8 )
2106 INTEGER I, ICTXT, MYCOL, MYROW, NPCOL, NPROW
2109 INTEGER SCODE( NSUBS )
2112 EXTERNAL BLACS_GET, BLACS_GRIDEXIT, BLACS_GRIDINFO,
2113 $ BLACS_GRIDINIT, PCDIMEE, PCGEMV, PCGERC,
2114 $ PCGERU, PCHEMV, PCHER, PCHER2, PCMATEE,
2115 $ PCOPTEE, PCTRMV, PCTRSV, PCVECEE
2120 CHARACTER*7 SNAMES( NSUBS )
2121 COMMON /SNAMEC/SNAMES
2122 COMMON /PBERRORC/NOUT, ABRTFLG
2125 DATA SCODE/21, 22, 23, 23, 24, 24, 26, 27/
2132 CALL BLACS_GET( -1, 0, ICTXT )
2133 CALL BLACS_GRIDINIT( ICTXT, 'Row-major
', 1, NPROCS )
2134 CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL )
2147 IF( LTEST( I ) ) THEN
2148 CALL PCOPTEE( ICTXT, NOUT, PCGEMV, SCODE( I ), SNAMES( I ) )
2149 CALL PCDIMEE( ICTXT, NOUT, PCGEMV, SCODE( I ), SNAMES( I ) )
2150 CALL PCMATEE( ICTXT, NOUT, PCGEMV, SCODE( I ), SNAMES( I ) )
2151 CALL PCVECEE( ICTXT, NOUT, PCGEMV, SCODE( I ), SNAMES( I ) )
2157 IF( LTEST( I ) ) THEN
2158 CALL PCOPTEE( ICTXT, NOUT, PCHEMV, SCODE( I ), SNAMES( I ) )
2159 CALL PCDIMEE( ICTXT, NOUT, PCHEMV, SCODE( I ), SNAMES( I ) )
2160 CALL PCMATEE( ICTXT, NOUT, PCHEMV, SCODE( I ), SNAMES( I ) )
2161 CALL PCVECEE( ICTXT, NOUT, PCHEMV, SCODE( I ), SNAMES( I ) )
2167 IF( LTEST( I ) ) THEN
2168 CALL PCOPTEE( ICTXT, NOUT, PCTRMV, SCODE( I ), SNAMES( I ) )
2169 CALL PCDIMEE( ICTXT, NOUT, PCTRMV, SCODE( I ), SNAMES( I ) )
2170 CALL PCMATEE( ICTXT, NOUT, PCTRMV, SCODE( I ), SNAMES( I ) )
2171 CALL PCVECEE( ICTXT, NOUT, PCTRMV, SCODE( I ), SNAMES( I ) )
2177 IF( LTEST( I ) ) THEN
2178 CALL PCOPTEE( ICTXT, NOUT, PCTRSV, SCODE( I ), SNAMES( I ) )
2179 CALL PCDIMEE( ICTXT, NOUT, PCTRSV, SCODE( I ), SNAMES( I ) )
2180 CALL PCMATEE( ICTXT, NOUT, PCTRSV, SCODE( I ), SNAMES( I ) )
2181 CALL PCVECEE( ICTXT, NOUT, PCTRSV, SCODE( I ), SNAMES( I ) )
2187 IF( LTEST( I ) ) THEN
2188 CALL PCDIMEE( ICTXT, NOUT, PCGERU, SCODE( I ), SNAMES( I ) )
2189 CALL PCVECEE( ICTXT, NOUT, PCGERU, SCODE( I ), SNAMES( I ) )
2190 CALL PCMATEE( ICTXT, NOUT, PCGERU, SCODE( I ), SNAMES( I ) )
2196 IF( LTEST( I ) ) THEN
2197 CALL PCDIMEE( ICTXT, NOUT, PCGERC, SCODE( I ), SNAMES( I ) )
2198 CALL PCVECEE( ICTXT, NOUT, PCGERC, SCODE( I ), SNAMES( I ) )
2199 CALL PCMATEE( ICTXT, NOUT, PCGERC, SCODE( I ), SNAMES( I ) )
2205 IF( LTEST( I ) ) THEN
2206 CALL PCOPTEE( ICTXT, NOUT, PCHER, SCODE( I ), SNAMES( I ) )
2207 CALL PCDIMEE( ICTXT, NOUT, PCHER, SCODE( I ), SNAMES( I ) )
2208 CALL PCVECEE( ICTXT, NOUT, PCHER, SCODE( I ), SNAMES( I ) )
2209 CALL PCMATEE( ICTXT, NOUT, PCHER, SCODE( I ), SNAMES( I ) )
2215 IF( LTEST( I ) ) THEN
2216 CALL PCOPTEE( ICTXT, NOUT, PCHER2, SCODE( I ), SNAMES( I ) )
2217 CALL PCDIMEE( ICTXT, NOUT, PCHER2, SCODE( I ), SNAMES( I ) )
2218 CALL PCVECEE( ICTXT, NOUT, PCHER2, SCODE( I ), SNAMES( I ) )
2219 CALL PCMATEE( ICTXT, NOUT, PCHER2, SCODE( I ), SNAMES( I ) )
2222.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2223 $ WRITE( NOUT, FMT = 9999 )
2225 CALL BLACS_GRIDEXIT( ICTXT )
2231 9999 FORMAT( 2X, 'Error-exit tests completed.
' )
2238 SUBROUTINE PCCHKARG2( ICTXT, NOUT, SNAME, UPLO, TRANS, DIAG, M,
2239 $ N, ALPHA, IA, JA, DESCA, IX, JX, DESCX,
2240 $ INCX, BETA, IY, JY, DESCY, INCY, INFO )
2248 CHARACTER*1 DIAG, TRANS, UPLO
2249 INTEGER IA, ICTXT, INCX, INCY, INFO, IX, IY, JA, JX,
2255 INTEGER DESCA( * ), DESCX( * ), DESCY( * )
2369 INTEGER BLOCK_CYCLIC_2D_INB, CSRC_, CTXT_, DLEN_,
2370 $ DTYPE_, IMB_, INB_, LLD_, MB_, M_, NB_, N_,
2372 PARAMETER ( BLOCK_CYCLIC_2D_INB = 2, DLEN_ = 11,
2373 $ DTYPE_ = 1, CTXT_ = 2, M_ = 3, N_ = 4,
2374 $ IMB_ = 5, INB_ = 6, MB_ = 7, NB_ = 8,
2375 $ RSRC_ = 9, CSRC_ = 10, LLD_ = 11 )
2378 CHARACTER*1 DIAGREF, TRANSREF, UPLOREF
2379 INTEGER I, IAREF, INCXREF, INCYREF, IXREF, IYREF,
2380 $ JAREF, JXREF, JYREF, MREF, MYCOL, MYROW, NPCOL,
2382 COMPLEX ALPHAREF, BETAREF
2385 CHARACTER*15 ARGNAME
2386 INTEGER DESCAREF( DLEN_ ), DESCXREF( DLEN_ ),
2390 EXTERNAL BLACS_GRIDINFO, IGSUM2D
2403 CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL )
2407.EQ.
IF( INFO0 ) THEN
2418 DESCAREF( I ) = DESCA( I )
2423 DESCXREF( I ) = DESCX( I )
2430 DESCYREF( I ) = DESCY( I )
2439.NOT.
IF( LSAME( DIAG, DIAGREF ) ) THEN
2440 WRITE( ARGNAME, FMT = '(A)
' ) 'DIAG
'
2441.NOT.
ELSE IF( LSAME( TRANS, TRANSREF ) ) THEN
2442 WRITE( ARGNAME, FMT = '(A)
' ) 'TRANS
'
2443.NOT.
ELSE IF( LSAME( UPLO, UPLOREF ) ) THEN
2444 WRITE( ARGNAME, FMT = '(A)
' ) 'UPLO
'
2445.NE.
ELSE IF( MMREF ) THEN
2446 WRITE( ARGNAME, FMT = '(A)
' ) 'M
'
2447.NE.
ELSE IF( NNREF ) THEN
2448 WRITE( ARGNAME, FMT = '(A)
' ) 'N
'
2449.NE.
ELSE IF( ALPHAALPHAREF ) THEN
2450 WRITE( ARGNAME, FMT = '(A)
' ) 'ALPHA
'
2451.NE.
ELSE IF( IAIAREF ) THEN
2452 WRITE( ARGNAME, FMT = '(A)
' ) 'IA
'
2453.NE.
ELSE IF( JAJAREF ) THEN
2454 WRITE( ARGNAME, FMT = '(A)
' ) 'JA
'
2455.NE.
ELSE IF( DESCA( DTYPE_ )DESCAREF( DTYPE_ ) ) THEN
2456 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( DTYPE_ )
'
2457.NE.
ELSE IF( DESCA( M_ )DESCAREF( M_ ) ) THEN
2458 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( M_ )
'
2459.NE.
ELSE IF( DESCA( N_ )DESCAREF( N_ ) ) THEN
2460 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( N_ )
'
2461.NE.
ELSE IF( DESCA( IMB_ )DESCAREF( IMB_ ) ) THEN
2462 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( IMB_ )
'
2463.NE.
ELSE IF( DESCA( INB_ )DESCAREF( INB_ ) ) THEN
2464 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( )
'
2465.NE.
ELSE IF( DESCA( MB_ )DESCAREF( MB_ ) ) THEN
2466 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( MB_ )
'
2467.NE.
ELSE IF( DESCA( NB_ )DESCAREF( NB_ ) ) THEN
2468 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( NB_ )
'
2469.NE.
ELSE IF( DESCA( RSRC_ )DESCAREF( RSRC_ ) ) THEN
2470 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( RSRC_ )
'
2471.NE.
ELSE IF( DESCA( CSRC_ )DESCAREF( CSRC_ ) ) THEN
2472 WRITE( ARGNAME, FMT = '()
' ) 'DESCA( CSRC_ )
'
2473.NE.
ELSE IF( DESCA( CTXT_ )DESCAREF( CTXT_ ) ) THEN
2474 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( CTXT_ )
'
2475.NE.
ELSE IF( DESCA( LLD_ )DESCAREF( LLD_ ) ) THEN
2476 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( LLD_ )
'
2477.NE.
ELSE IF( IXIXREF ) THEN
2478 WRITE( ARGNAME, FMT = '(A)
' ) 'IX
'
2479.NE.
ELSE IF( JXJXREF ) THEN
2480 WRITE( ARGNAME, FMT = '(A)
' ) 'JX
'
2481.NE.
ELSE IF( DESCX( DTYPE_ )DESCXREF( DTYPE_ ) ) THEN
2482 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCX( DTYPE_ )
'
2483.NE.
ELSE IF( DESCX( M_ )DESCXREF( M_ ) ) THEN
2484 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCX( M_ )
'
2485.NE.
ELSE IF( DESCX( N_ )DESCXREF( N_ ) ) THEN
2486 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCX( N_ )
'
2487.NE.
ELSE IF( DESCX( IMB_ )DESCXREF( IMB_ ) ) THEN
2488 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCX( IMB_ )
'
2489.NE.
ELSE IF( DESCX( INB_ )DESCXREF( INB_ ) ) THEN
2490 WRITE( ARGNAME, FMT = '(A)' )
'DESCX( INB_ )'
2491 ELSE IF( descx( mb_ ).NE.descxref( mb_ ) )
THEN
2492 WRITE( argname, fmt =
'(A)' )
'DESCX( MB_ )'
2493 ELSE IF( descx( nb_ ).NE.descxref( nb_ ) )
THEN
2494 WRITE( argname, fmt =
'(A)' )
'DESCX( NB_ )'
2495 ELSE IF( descx( rsrc_ ).NE.descxref( rsrc_ )
THEN
2496 WRITE( argname, fmt =
'(A)' )
'DESCX( RSRC_ )'
2497 ELSE IF( descx( csrc_ ).NE.descxref( csrc_ ) )
THEN
2498 WRITE( argname, fmt =
'(A)' )
'DESCX( CSRC_ )'
2499 ELSE IF( descx( ctxt_ ).NE.descxref( ctxt_ ) )
THEN
2500 WRITE( argname, fmt =
'(A)' )
'DESCX( CTXT_ )'
2501 ELSE IF( descx( lld_ ).NE.descxref( lld_ ) )
THEN
2502 WRITE( argname, fmt =
'(A)' )
'DESCX( LLD_ )'
2503 ELSE IF( incx.NE.incxref )
THEN
2504 WRITE( argname, fmt =
'(A)' )
'INCX'
2505 ELSE IF( beta.NE.betaref )
THEN
2506 WRITE( argname, fmt =
'(A)' )
'BETA'
2507 ELSE IF( iy.NE.iyref )
THEN
2508 WRITE( argname, fmt =
'(A)' )
'IY'
2509 ELSE IF( jy.NE.jyref )
THEN
2510 WRITE( argname, fmt =
'(A)' )
'JY'
2511 ELSE IF( descy( dtype_ ).NE.descyref( dtype_ ) )
THEN
2512 WRITE( argname, fmt =
'(A)' )
'DESCY( DTYPE_ )'
2513 ELSE IF( descy( m_ ).NE.descyref( m_ ) )
THEN
2514 WRITE( argname, fmt =
'(A)' )
'DESCY( M_ )'
2515 ELSE IF( descy( n_ ).NE.descyref( n_ ) )
THEN
2516 WRITE( argname, fmt =
'(A)' )
'DESCY( N_ )'
2517 ELSE IF( descy( imb_ ).NE.descyref( imb_ ) )
THEN
2518 WRITE( argname, fmt =
'(A)' ) 'descy( imb_ )
'
2519.NE.
ELSE IF( DESCY( INB_ )DESCYREF( INB_ ) ) THEN
2520 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( inb_ )
'
2521.NE.
ELSE IF( DESCY( MB_ )DESCYREF( MB_ ) ) THEN
2522 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( mb_ )
'
2523.NE.
ELSE IF( DESCY( NB_ )DESCYREF( NB_ ) ) THEN
2524 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( nb_ )
'
2525.NE.
ELSE IF( DESCY( RSRC_ )DESCYREF( RSRC_ ) ) THEN
2526 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( rsrc_ )
'
2527.NE.
ELSE IF( DESCY( CSRC_ )DESCYREF( CSRC_ ) ) THEN
2528 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( csrc_ )
'
2529.NE.
ELSE IF( DESCY( CTXT_ )DESCYREF( CTXT_ ) ) THEN
2530 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( ctxt_ )
'
2531.NE.
ELSE IF( DESCY( LLD_ )DESCYREF( LLD_ ) ) THEN
2532 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( lld_ )
'
2533.NE.
ELSE IF( INCYINCYREF ) THEN
2534 WRITE( ARGNAME, FMT = '(a)
' ) 'incy
'
2539 CALL IGSUM2D( ICTXT, 'all
', ' ', 1, 1, info, 1, -1, 0 )
2541 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
THEN
2543 IF( info.NE.0 )
THEN
2544 WRITE( nout, fmt = 9999 ) argname, sname
2546 WRITE( nout, fmt = 9998 ) sname
2553 9999
FORMAT( 2x,
' ***** Input-only parameter check: ', a,
2554 $
' FAILED changed ', a,
' *****' )
2555 9998
FORMAT( 2x,
' ***** Input-only parameter check: ', a,
2564 $ M, N, ALPHA, A, PA, IA, JA, DESCA, X,
2565 $ PX, IX, JX, DESCX, INCX, BETA, Y, PY,
2566 $ IY, JY, DESCY, INCY, THRESH, ROGUE,
2575 CHARACTER*1 DIAG, TRANS, UPLO
2576 INTEGER IA, ICTXT, INCX, INCY, INFO, IX, IY, JA, JX,
2577 $ JY, M, N, NOUT, NROUT
2579 COMPLEX ALPHA, BETA, ROGUE
2582 INTEGER DESCA( * ), DESCX( * ), DESCY( * )
2801 PARAMETER ( RZERO = 0.0e+0 )
2803 PARAMETER ( ONE = ( 1.0e+0, 0.0e+0 ),
2804 $ zero = ( 0.0e+0, 0.0e+0 ) )
2805 INTEGER BLOCK_CYCLIC_2D_INB, CSRC_, CTXT_, DLEN_,
2806 $ DTYPE_, IMB_, INB_, LLD_, MB_, M_, NB_, N_,
2808 PARAMETER ( BLOCK_CYCLIC_2D_INB = 2, dlen_ = 11,
2809 $ dtype_ = 1, ctxt_ = 2, m_ = 3, n_ = 4,
2810 $ imb_ = 5, inb_ = 6, mb_ = 7, nb_ = 8,
2811 $ rsrc_ = 9, csrc_ = 10, lld_ = 11 )
2814 INTEGER I, MYCOL, MYROW, NPCOL, NPROW
2838 IF( ( m.LE.0 ).OR.( n.LE.0 ) )
2849 IF( nrout.EQ.1 )
THEN
2855 CALL pcmvch( ictxt, trans, m, n, alpha, a, ia, ja, desca, x,
2856 $ ix, jx, descx, incx, beta, y, py, iy, jy, descy,
2857 $ incy, work, err, ierr( 3 ) )
2859 IF( ierr( 3 ).NE.0 )
THEN
2860 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2861 $
WRITE( nout, fmt = 9997 )
2862 ELSE IF( err.GT.thresh )
THEN
2863 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2864 $
WRITE( nout, fmt = 9996 ) err
2869 CALL pcchkmin( err, m, n, a, pa, ia, ja, desca, ierr( 1 ) )
2870 IF( lsame( trans,
'N' ) )
THEN
2871 CALL pcchkvin( err, n, x, px, ix, jx, descx, incx,
2874 CALL pcchkvin( err, m, x, px, ix, jx, descx, incx,
2878 ELSE IF( nrout.EQ.2 )
THEN
2884 CALL pcmvch( ictxt,
'No transpose', n, n, alpha, a, ia, ja,
2885 $ desca, x, ix, jx, descx, incx, beta, y, py, iy,
2886 $ jy, descy, incy, work, err, ierr( 3 ) )
2888 IF( ierr( 3 ).NE.0 )
THEN
2889 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2890 $
WRITE( nout, fmt = 9997 )
2891 ELSE IF( err.GT.thresh )
THEN
2892 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2893 $
WRITE( nout, fmt = 9996 ) err
2898 IF( lsame( uplo,
'L' ) )
THEN
2899 CALL pb_claset(
'Upper', n-1, n-1, 0, rogue, rogue,
2900 $ a( ia+ja*desca( m_ ) ), desca( m_ ) )
2902 CALL pb_claset(
'Lower', n-1, n-1, 0, rogue, rogue,
2903 $ a( ia+1+(ja-1)*desca( m_ ) ), desca( m_ ) )
2905 CALL pcchkmin( err, n, n, a, pa, ia, ja, desca, ierr( 1 ) )
2906 CALL pcchkvin( err, n, x, px, ix, jx, descx, incx, ierr( 2 ) )
2908 ELSE IF( nrout.EQ.3 )
THEN
2914 CALL pcmvch( ictxt, trans, n, n, one, a, ia, ja, desca, y, ix,
2915 $ jx, descx, incx, zero, x, px, ix, jx, descx, incx,
2916 $ work, err, ierr( 2 ) )
2918 IF( ierr( 2 ).NE.0 )
THEN
2919 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2920 $
WRITE( nout, fmt = 9997 )
2921 ELSE IF( err.GT.thresh )
THEN
2922 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2923 $
WRITE( nout, fmt = 9996 ) err
2928 IF( lsame( uplo,
'L' ) )
THEN
2929 IF( lsame( diag,
'N' ) )
THEN
2930 CALL pb_claset(
'Upper', n-1, n-1, 0, rogue, rogue,
2931 $ a( ia+ja*desca( m_ ) ), desca( m_ ) )
2933 CALL pb_claset(
'Upper', n, n, 0, rogue, one,
2934 $ a( ia+(ja-1)*desca( m_ ) ), desca( m_ ) )
2937 IF( lsame( diag,
'N' ) )
THEN
2938 CALL pb_claset(
'Lower', n-1, n-1, 0, rogue, rogue,
2939 $ a( ia+1+(ja-1)*desca( m_ ) ),
2942 CALL pb_claset(
'Lower', n, n, 0, rogue, one,
2943 $ a( ia+(ja-1)*desca( m_ ) ), desca( m_ ) )
2946 CALL pcchkmin( err, n, n, a, pa, ia, ja, desca, ierr( 1 ) )
2948 ELSE IF( nrout.EQ.4 )
THEN
2954 CALL ctrsv( uplo, trans, diag, n, a( ia+(ja-1)*desca( m_ ) ),
2955 $ desca( m_ ), x( ix+(jx-1)*descx( m_ ) ), incx )
2956 CALL pctrmv( uplo, trans, diag, n, pa, ia, ja, desca, px, ix,
2958 CALL pcmvch( ictxt, trans, n, n, one, a, ia, ja, desca, x, ix,
2959 $ jx, descx, incx, zero, y, px, ix, jx, descx, incx,
2960 $ work, err, ierr( 2 ) )
2962 IF( ierr( 2 ).NE.0 )
THEN
2963 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2964 $
WRITE( nout, fmt = 9997 )
2965 ELSE IF( err.GT.thresh )
THEN
2966 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2967 $
WRITE( nout, fmt = 9996 ) err
2972 IF( lsame( uplo,
'L' ) )
THEN
2973 IF( lsame( diag,
'N' ) )
THEN
2974 CALL pb_claset(
'Upper', n-1, n-1, 0, rogue, rogue,
2975 $ a( ia+ja*desca( m_ ) ), desca( m_ ) )
2978 $ a( ia+(ja-1)*desca( m_ ) ), desca( m_ ) )
2981 IF( lsame( diag,
'N' ) )
THEN
2982 CALL pb_claset(
'Lower', n-1, n-1, 0, rogue, rogue,
2983 $ a( ia+1+(ja-1)*desca( m_ ) ),
2986 CALL pb_claset(
'Lower', n, n, 0, rogue, one,
2987 $ a( ia+(ja-1)*desca( m_ ) ), desca( m_ ) )
2990 CALL pcchkmin( err, n, n, a, pa, ia, ja, desca, ierr( 1 ) )
2992 ELSE IF( nrout.EQ.5 )
THEN
2998 CALL pcvmch( ictxt,
'No transpose',
'Ge', m, n, alpha, x, ix,
2999 $ jx, descx, incx, y, iy, jy, descy, incy, a, pa,
3000 $ ia, ja, desca, work, err, ierr( 1 ) )
3001 IF( ierr( 1 ).NE.0 )
THEN
3002 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3003 $
WRITE( nout, fmt = 9997 )
3004 ELSE IF( err.GT.thresh )
THEN
3005 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3006 $
WRITE( nout, fmt = 9996 ) err
3011 CALL pcchkvin( err, m, x, px, ix, jx, descx, incx, ierr( 2 ) )
3012 CALL pcchkvin( err, n, y, py, iy, jy, descy, incy, ierr( 3 ) )
3014 ELSE IF( nrout.EQ.6 )
THEN
3020 CALL pcvmch( ictxt,
'Conjugate transpose',
'Ge', m, n, alpha,
3021 $ x, ix, jx, descx, incx, y, iy, jy, descy, incy,
3022 $ a, pa, ia, ja, desca, work, err, ierr( 1 ) )
3023 IF( ierr( 1 ).NE.0 )
THEN
3024 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3025 $
WRITE( nout, fmt = 9997 )
3026 ELSE IF( err.GT.thresh )
THEN
3027 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3033 CALL pcchkvin( err, m, x, px, ix, jx, descx, incx, ierr( 2 ) )
3034 CALL pcchkvin( err, n, y, py, iy, jy, descy, incy, ierr( 3 ) )
3036 ELSE IF( nrout.EQ.7 )
THEN
3042 alpha1 =
cmplx( real( alpha ), rzero )
3043 CALL pcvmch( ictxt, 'conjugate transpose
', UPLO, N, N, ALPHA1,
3044 $ X, IX, JX, DESCX, INCX, X, IX, JX, DESCX, INCX, A,
3045 $ PA, IA, JA, DESCA, WORK, ERR, IERR( 1 ) )
3046.NE.
IF( IERR( 1 )0 ) THEN
3047.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
3048 $ WRITE( NOUT, FMT = 9997 )
3049.GT.
ELSE IF( ERRTHRESH ) THEN
3050.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
3051 $ WRITE( NOUT, FMT = 9996 ) ERR
3056 CALL PCCHKVIN( ERR, N, X, PX, IX, JX, DESCX, INCX, IERR( 2 ) )
3058.EQ.
ELSE IF( NROUT8 ) THEN
3064 CALL PCVMCH2( ICTXT, UPLO, N, N, ALPHA, X, IX, JX, DESCX, INCX,
3065 $ Y, IY, JY, DESCY, INCY, A, PA, IA, JA, DESCA,
3066 $ WORK, ERR, IERR( 1 ) )
3067.NE.
IF( IERR( 1 )0 ) THEN
3068.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
3069 $ WRITE( NOUT, FMT = 9997 )
3070.GT.
ELSE IF( ERRTHRESH ) THEN
3071.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
3072 $ WRITE( NOUT, FMT = 9996 ) ERR
3077 CALL PCCHKVIN( ERR, N, X, PX, IX, JX, DESCX, INCX, IERR( 2 ) )
3078 CALL PCCHKVIN( ERR, N, Y, PY, IY, JY, DESCY, INCY, IERR( 3 ) )
3082.NE.
IF( IERR( 1 )0 ) THEN
3084.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
3085 $ WRITE( NOUT, FMT = 9999 ) 'a
'
3088.NE.
IF( IERR( 2 )0 ) THEN
3090.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
3091 $ WRITE( NOUT, FMT = 9998 ) 'x
'
3094.NE.
IF( IERR( 3 )0 ) THEN
3096.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
3097 $ WRITE( NOUT, FMT = 9998 ) 'y
'
3100 9999 FORMAT( 2X, ' ***** error: matrix operand
', A,
3101 $ ' is incorrect.
' )
3102 9998 FORMAT( 2X, ' ***** error: vector operand
', A,
3103 $ ' is incorrect.
' )
3104 9997 FORMAT( 2X, ' *****
fatal error - computed result is less
',
3105 $ 'than half accurate *****
' )
3106 9996 FORMAT( 2X, ' ***** test completed with maximum test ratio:
',
3107 $ F11.5, ' suspect *****
' )
logical function lsame(ca, cb)
LSAME
subroutine icopy(n, sx, incx, sy, incy)
ICOPY
subroutine ctrsv(uplo, trans, diag, n, a, lda, x, incx)
CTRSV
subroutine cgebs2d(contxt, scope, top, m, n, a, lda)
subroutine sgebs2d(contxt, scope, top, m, n, a, lda)
subroutine blacs_gridinit(cntxt, c, nprow, npcol)
subroutine sgebr2d(contxt, scope, top, m, n, a, lda)
subroutine cgebr2d(contxt, scope, top, m, n, a, lda)
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)
integer function pb_fceil(num, denom)
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 pcblas2tstchke(ltest, inout, nprocs)
subroutine pcbla2tstinfo(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 pcchkarg2(ictxt, nout, sname, uplo, trans, diag, m, n, alpha, ia, ja, desca, ix, jx, descx, incx, beta, iy, jy, descy, incy, info)
subroutine pcblas2tstchk(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 pclagen(inplace, aform, diag, offa, m, n, ia, ja, desca, iaseed, a, lda)
subroutine pcchkvout(n, x, px, ix, jx, descx, incx, info)
subroutine pcchkvin(errmax, n, x, px, ix, jx, descx, incx, info)
subroutine pclascal(type, m, n, alpha, a, ia, ja, desca)
subroutine pcipset(toggle, n, a, ia, ja, desca)
subroutine pb_cchekpad(ictxt, mess, m, n, a, lda, ipre, ipost, chkval)
subroutine pb_pclaprnt(m, n, a, ia, ja, desca, irprnt, icprnt, cmatnm, nout, work)
subroutine pcchkmin(errmax, m, n, a, pa, ia, ja, desca, info)
subroutine pcmprnt(ictxt, nout, m, n, a, lda, irprnt, icprnt, cmatnm)
subroutine pcvmch(ictxt, trans, uplo, m, n, alpha, x, ix, jx, descx, incx, y, iy, jy, descy, incy, a, pa, ia, ja, desca, g, err, info)
subroutine pb_clascal(uplo, m, n, ioffd, alpha, a, lda)
subroutine pb_cfillpad(ictxt, m, n, a, lda, ipre, ipost, chkval)
subroutine pcvmch2(ictxt, uplo, m, n, alpha, x, ix, jx, descx, incx, y, iy, jy, descy, incy, a, pa, ia, ja, desca, g, err, info)
subroutine pcmvch(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_claset(uplo, m, n, ioffd, alpha, beta, a, lda)
subroutine pcvprnt(ictxt, nout, n, x, incx, irprnt, icprnt, cvecnm)
subroutine pclaset(uplo, m, n, alpha, beta, a, ia, ja, desca)
real function pslamch(ictxt, cmach)