4 CHARACTER*7 SNAMES( NSUBS )
6 DATA snames/
'PZGEMV ',
'PZHEMV ',
'PZTRMV ',
7 $
'PZTRSV ',
'PZGERU ',
'PZGERC ',
122 INTEGER maxtests, maxgrids, gapmul, zplxsz, totmem,
123 $ memsiz, nsubs, dblesz
124 COMPLEX*16 one, padval, zero, rogue
125 parameter( maxtests = 20, maxgrids = 20, gapmul = 10,
126 $ zplxsz = 16, totmem = 2000000,
127 $ memsiz = totmem / zplxsz, dblesz = 8,
128 $ padval = ( -9923.0d+0, -9923.0d+0 ),
129 $ zero = ( 0.0d+0, 0.0d+0 ),
130 $ rogue = ( -1.0d+10, 1.0d+10 ),
131 $ one = ( 1.0d+0, 0.0d+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 $ , imba, imbx, imby, imida, imidx, ,
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, , 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*16 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 $ ( maxtests ), incyval( maxtests ),
171 $ ixval( maxtests ), iyval( maxtests ),
172 $ javal( maxtests ), jxval( maxtests ),
174 INTEGER kfail( nsubs ), kpass( ), kskip( nsubs ),
175 $ ktests( nsubs ), maval( maxtests ),
176 $ mbaval( maxtests ), mbxval( maxtests ),
177 $ mbyval( maxtests ), ( 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*16 mem( memsiz )
194 $
pzchkvout, pzgemv, pzgerc, pzgeru, pzhemv,
204 INTRINSIC abs, dble, dcmplx,
max, mod, real
207 CHARACTER*7 snames( nsubs )
210 COMMON /snamec/snames
211 COMMON /infoc/info, nblog
212 COMMON /pberrorc/nout, abrtflg
215 DATA ycheck/.true., .true., .false., .false.,
216 $ .true., .true., .false., .true./
253 CALL blacs_pinfo( iam, nprocs )
255 $ uploval, mval, nval, maval, naval, imbaval,
256 $ mbaval, inbaval, nbaval, rscaval, cscaval,
257 $ iaval, javal, mxval, nxval, imbxval, mbxval,
258 $ inbxval, nbxval, rscxval, cscxval, ixval,
260 $ mbyval, inbyval, nbyval, rscyval, cscyval,
262 $ pval, maxgrids, qval, maxgrids, nblog, ltest,
263 $ sof, tee, iam, igap, iverb, nprocs, thresh,
267 WRITE( nout, fmt = 9975 )
268 WRITE( nout, fmt = * )
286 IF( nprow.LT.1 )
THEN
288 $
WRITE( nout, fmt = 9999 )
'GRID SIZE',
'NPROW', nprow
290 ELSE IF( npcol.LT.1 )
THEN
292 $
WRITE( nout, fmt = 9999 )
'GRID SIZE',
'NPCOL', npcol
294 ELSE IF( nprow*npcol.GT.nprocs )
THEN
296 $
WRITE( nout, fmt = 9998 ) nprow*npcol, nprocs
300 IF( ierr( 1 ).GT.0 )
THEN
302 $
WRITE( nout, fmt = 9997 )
'GRID'
309 CALL blacs_get( -1, 0, ictxt )
316 IF( myrow.GE.nprow .OR. mycol.GE.npcol )
369 WRITE( nout, fmt = * )
370 WRITE( nout, fmt = 9996 ) tstcnt, nprow,
371 WRITE( nout, fmt = * )
373 WRITE( nout, fmt = 9995 )
374 WRITE( nout, fmt = 9994 )
375 WRITE( nout, fmt = 9995 )
376 WRITE( nout, fmt = 9993 ) m, n, uplo, trans, diag
378 WRITE( nout, fmt = 9995 )
379 WRITE( nout, fmt = 9992 )
380 WRITE( nout, fmt = 9995 )
382 $ mba, nba, rsrca, csrca
384 WRITE( nout, fmt = 9995 )
385 WRITE( nout, fmt = 9990 )
386 WRITE( nout, fmt = 9995 )
387 WRITE( nout, fmt = 9989 ) ix, jx, mx, nx, imbx, inbx,
388 $ mbx, nbx, rsrcx, csrcx, incx
390 WRITE( nout, fmt = 9995 )
391 WRITE( nout, fmt = 9988 )
392 WRITE( nout, fmt = 9995 )
393 WRITE( nout, fmt = 9989 ) iy, jy, my, ny, imby, inby,
394 $ mby, nby, rsrcy, csrcy, incy
396 WRITE( nout, fmt = 9995 )
402 IF( .NOT.
lsame( uplo,
'U' ).AND.
403 $ .NOT.
lsame( uplo,
'L' ) )
THEN
405 $
WRITE( nout, fmt = 9997 )
'UPLO'
410 IF( .NOT.
lsame( trans,
'N' ).AND.
411 $ .NOT.
lsame( trans, 't.AND.
' )
412.NOT.
$ LSAME( TRANS, 'c
' ) ) THEN
414 $ WRITE( NOUT, FMT = 9997 ) 'trans
'
419.NOT.
IF( LSAME( DIAG , 'u.AND.
' )
420.NOT.
$ LSAME( DIAG , 'n
' ) )THEN
422 $ WRITE( NOUT, FMT = 9997 ) TRANS
423 WRITE( NOUT, FMT = 9997 ) 'diag
'
430 CALL PMDESCCHK( ICTXT, NOUT, 'a
', DESCA,
431 $ BLOCK_CYCLIC_2D_INB, MA, NA, IMBA, INBA,
432 $ MBA, NBA, RSRCA, CSRCA, MPA, NQA, IPREA,
433 $ IMIDA, IPOSTA, IGAP, GAPMUL, IERR( 1 ) )
434 CALL PVDESCCHK( ICTXT, NOUT, 'x
', DESCX,
435 $ BLOCK_CYCLIC_2D_INB, MX, NX, IMBX, INBX,
436 $ MBX, NBX, RSRCX, CSRCX, INCX, MPX, NQX,
437 $ IPREX, IMIDX, IPOSTX, IGAP, GAPMUL,
439 CALL PVDESCCHK( ICTXT, NOUT, 'y
', DESCY,
440 $ BLOCK_CYCLIC_2D_INB, MY, NY, IMBY, INBY,
441 $ MBY, NBY, RSRCY, CSRCY, INCY, MPY, NQY,
442 $ IPREY, IMIDY, IPOSTY, IGAP, GAPMUL,
445.GT..OR..GT..OR.
IF( IERR( 1 )0 IERR( 2 )0
446.GT.
$ IERR( 3 )0 ) THEN
459 IPX = IPA + DESCA( LLD_ )*NQA + IPOSTA + IPREX
460 IPY = IPX + DESCX( LLD_ )*NQX + IPOSTX + IPREY
461 IPMATA = IPY + DESCY( LLD_ )*NQY + IPOSTY
462 IPMATX = IPMATA + MA*NA
463 IPMATY = IPMATX + MX*NX
464 IPG = IPMATY + MAX( MX*NX, MY*NY )
471 MEMREQD = IPG + PB_FCEIL( REAL( MAX( M, N ) ) *
472 $ REAL( DBLESZ ), REAL( ZPLXSZ ) ) - 1 +
473 $ MAX( MAX( IMBA, MBA ),
474 $ MAX( MAX( IMBX, MBX ),
475 $ MAX( IMBY, MBY ) ) )
477.GT.
IF( MEMREQDMEMSIZ ) THEN
479 $ WRITE( NOUT, FMT = 9986 ) MEMREQD*ZPLXSZ
485 CALL IGSUM2D( ICTXT, 'all
', ' ', 1, 1, IERR, 1, -1, 0 )
487.GT.
IF( IERR( 1 )0 ) THEN
489 $ WRITE( NOUT, FMT = 9987 )
500.NOT.
IF( LTEST( K ) )
504 WRITE( NOUT, FMT = * )
505 WRITE( NOUT, FMT = 9985 ) SNAMES( K )
513 IF( LSAME( TRANS, 'n
' ) ) THEN
520.EQ..OR..EQ.
ELSE IF( K5 K6 ) THEN
534 CALL PMDIMCHK( ICTXT, NOUT, NROWA, NCOLA, 'a
', IA, JA,
536 CALL PVDIMCHK( ICTXT, NOUT, NLX, 'x
', IX, JX, DESCX,
538 CALL PVDIMCHK( ICTXT, NOUT, NLY, 'y
', IY, JY, DESCY,
541.NE..OR..NE..OR.
IF( IERR( 1 )0 IERR( 2 )0
542.NE.
$ IERR( 3 )0 ) THEN
543 KSKIP( K ) = KSKIP( K ) + 1
549.EQ..OR..EQ..OR..EQ.
IF( K2 K7 K8 ) THEN
553.EQ..AND.
ELSE IF( ( K4 )( LSAME( DIAG, 'n
' ) ) ) THEN
563 CALL PZLAGEN( .FALSE., AFORM, DIAGDO, OFFD, MA, NA,
564 $ 1, 1, DESCA, IASEED, MEM( IPA ),
566 CALL PZLAGEN( .FALSE., 'none
', 'no diag
', 0, MX, NX, 1,
567 $ 1, DESCX, IXSEED, MEM( IPX ),
570 $ CALL PZLAGEN( .FALSE., 'none
', 'no diag
', 0, MY, NY,
571 $ 1, 1, DESCY, IYSEED, MEM( IPY ),
576 CALL PB_DESCSET2( DESCAR, MA, NA, IMBA, INBA, MBA, NBA,
577 $ -1, -1, ICTXT, MAX( 1, MA ) )
578 CALL PZLAGEN( .FALSE., AFORM, DIAGDO, OFFD, MA, NA,
579 $ 1, 1, DESCAR, IASEED, MEM( IPMATA ),
581 CALL PB_DESCSET2( DESCXR, MX, NX, IMBX, INBX, MBX, NBX,
582 $ -1, -1, ICTXT, MAX( 1, MX ) )
583 CALL PZLAGEN( .FALSE., 'none
', 'no diag
', 0, MX, NX, 1,
584 $ 1, DESCXR, IXSEED, MEM( IPMATX ),
586 IF( YCHECK( K ) ) THEN
588 CALL PB_DESCSET2( DESCYR, MY, NY, IMBY, INBY, MBY,
589 $ NBY, -1, -1, ICTXT, MAX( 1, MY ) )
590 CALL PZLAGEN( .FALSE., 'none
', 'no diag
', 0, MY, NY,
591 $ 1, 1, DESCYR, IYSEED, MEM( IPMATY ),
598 CALL PB_DESCSET2( DESCYR, MX, NX, IMBX, INBX, MBX,
599 $ NBX, -1, -1, ICTXT, MAX( 1, MX ) )
600 CALL PZLAGEN( .FALSE., 'none
', 'no diag
', 0, MX, NX,
601 $ 1, 1, DESCYR, IXSEED, MEM( IPMATY ),
608.EQ..OR..EQ..OR..EQ..AND.
IF( ( K2 K7 K8 )
609.GT.
$ ( MAX( NROWA, NCOLA )1 ) ) THEN
613 IF( LSAME( UPLO, 'l
' ) ) THEN
617 CALL PZLASET( 'upper
', NROWA-1, NCOLA-1, ROGUE,
618 $ ROGUE, MEM( IPA ), IA, JA+1, DESCA )
620 CALL PB_ZLASET( 'upper
', NROWA-1, NCOLA-1, 0,
622 $ MEM( IPMATA+IA-1+JA*LDA ), LDA )
625 ELSE IF( LSAME( UPLO, 'u
' ) ) THEN
629 CALL PZLASET( 'lower
', NROWA-1, NCOLA-1, ROGUE,
630 $ ROGUE, MEM( IPA ), IA+1, JA, DESCA )
632 CALL PB_ZLASET( 'lower
', NROWA-1, NCOLA-1, 0,
634 $ MEM( IPMATA+IA+(JA-1)*LDA ),
640.EQ..OR..EQ.
ELSE IF( K3 K4 ) THEN
642 IF( LSAME( UPLO, 'l
' ) ) THEN
646 IF( LSAME( DIAG, 'n
' ) ) THEN
648.GT.
IF( MAX( NROWA, NCOLA )1 ) THEN
649 CALL PZLASET( 'upper
', NROWA-1, NCOLA-1,
650 $ ROGUE, ROGUE, MEM( IPA ), IA,
652 CALL PB_ZLASET( 'upper
', NROWA-1, NCOLA-1, 0,
654 $ MEM( IPMATA+IA-1+JA*LDA ),
660 CALL PZLASET( 'upper
', NROWA, NCOLA, ROGUE, ONE,
661 $ MEM( IPA ), IA, JA, DESCA )
662 CALL PB_ZLASET( 'upper
', NROWA, NCOLA, 0, ZERO,
664 $ MEM( IPMATA+IA-1+(JA-1)*LDA ),
667.GT.
$ ( MAX( NROWA, NCOLA )1 ) ) THEN
669 $ DCMPLX( DBLE( MAX( NROWA, NCOLA ) ) )
670 CALL PZLASCAL( 'lower
', NROWA-1, NCOLA-1,
671 $ SCALE, MEM( IPA ), IA+1, JA,
673 CALL PB_ZLASCAL( 'lower', nrowa-1, ncola-1,
675 $ mem( ipmata+ia+(ja-1)*lda ),
681 ELSE IF(
lsame( uplo,
'U' ) )
THEN
685 IF(
lsame( diag,
'N' ) )
THEN
687 IF(
max( nrowa, ncola ).GT.1 )
THEN
688 CALL pzlaset(
'Lower', nrowa-1, ncola-1,
689 $ rogue, rogue, mem( ipa ), ia+1,
691 CALL pb_zlaset(
'Lower', nrowa-1, ncola-1, 0,
693 $ mem( ipmata+ia+(ja-1)*lda ),
699 CALL pzlaset(
'Lower', nrowa, ncola, rogue, one,
701 CALL pb_zlaset(
'Lower', nrowa, ncola, 0, zero,
706 $ (
max( nrowa, ncola ).GT.1 ) )
THEN
708 $ dcmplx( dble(
max( nrowa, ncola ) ) )
709 CALL pzlascal(
'Upper', nrowa-1, ncola-1,
710 $ scale, mem( ipa ), ia, ja+1,
714 $ mem( ipmata+ia-1+ja*lda ), lda )
725 CALL pb_zfillpad( ictxt, mpa, nqa, mem( ipa-iprea ),
728 CALL pb_zfillpad( ictxt, mpx, nqx, mem( ipx-iprex ),
731 IF( ycheck( k ) )
THEN
732 CALL pb_zfillpad( ictxt, mpy, nqy, mem( ipy-iprey ),
733 $ descy( lld_ ), iprey, iposty,
740 CALL pzchkarg2( ictxt, nout, snames( k ), uplo, trans
741 $ diag, m, n,
alpha, ia, ja, desca, ix,
742 $ jx, descx, incx, beta, iy, jy, descy,
747 IF( iverb.EQ.2 )
THEN
748 CALL pb_pzlaprnt( nrowa, ncola, mem( ipa ), ia, ja,
749 $ desca, 0, 0,
'PARALLEL_INITIAL_A',
751 ELSE IF( iverb.GE.3 )
THEN
752 CALL pb_pzlaprnt( ma, na, mem( ipa ), 1, 1, desca, 0,
753 $ 0,
'PARALLEL_INITIAL_A'
757 IF( iverb.EQ.2 )
THEN
758 IF( incx.EQ.descx( m_ ) )
THEN
761 $
'PARALLEL_INITIAL_X', nout,
766 $
'PARALLEL_INITIAL_X', nout,
769 ELSE IF( iverb.GE.3 )
THEN
770 CALL pb_pzlaprnt( mx, nx, mem( ipx ), 1, 1, descx, 0,
771 $ 0,
'PARALLEL_INITIAL_X', nout,
775 IF( ycheck( k ) )
THEN
776 IF( iverb.EQ.2 )
THEN
777 IF( incy.EQ.descy( m_ ) )
THEN
780 $
'PARALLEL_INITIAL_Y', nout,
785 $
'PARALLEL_INITIAL_Y', nout,
788 ELSE IF( iverb.GE.3 )
THEN
790 $ 0, 0,
'PARALLEL_INITIAL_Y', nout,
802 CALL pzgemv( trans, m, n,
alpha, mem( ipa ), ia, ja,
803 $ desca, mem( ipx ), ix, jx, descx, incx,
806 ELSE IF( k.EQ.2 )
THEN
810 CALL pzipset( 'bignum
', N, MEM( IPA ), IA, JA, DESCA )
812 CALL PZHEMV( UPLO, N, ALPHA, MEM( IPA ), IA, JA,
813 $ DESCA, MEM( IPX ), IX, JX, DESCX, INCX,
814 $ BETA, MEM( IPY ), IY, JY, DESCY, INCY )
816 CALL PZIPSET( 'zero
', N, MEM( IPA ), IA, JA, DESCA )
818.EQ.
ELSE IF( K3 ) THEN
822 CALL PZTRMV( UPLO, TRANS, DIAG, N, MEM( IPA ), IA, JA,
823 $ DESCA, MEM( IPX ), IX, JX, DESCX, INCX )
825.EQ.
ELSE IF( K4 ) THEN
829 CALL PZTRSV( UPLO, TRANS, DIAG, N, MEM( IPA ), IA, JA,
830 $ DESCA, MEM( IPX ), IX, JX, DESCX, INCX )
832.EQ.
ELSE IF( K5 ) THEN
836 CALL PZGERU( M, N, ALPHA, MEM( IPX ), IX, JX, DESCX,
837 $ INCX, MEM( IPY ), IY, JY, DESCY, INCY,
838 $ MEM( IPA ), IA, JA, DESCA )
840.EQ.
ELSE IF( K6 ) THEN
844 CALL PZGERC( M, N, ALPHA, MEM( IPX ), IX, JX, DESCX,
845 $ INCX, MEM( IPY ), IY, JY, DESCY, INCY,
846 $ MEM( IPA ), IA, JA, DESCA )
848.EQ.
ELSE IF( K7 ) THEN
852.NE.
IF( DCMPLX( DBLE( ALPHA ) )ZERO )
853 $ CALL PZIPSET( 'bignum
', N, MEM( IPA ), IA, JA,
856 CALL PZHER( UPLO, N, DBLE( ALPHA ), MEM( IPX ), IX,
857 $ JX, DESCX, INCX, MEM( IPA ), IA, JA,
860.EQ.
ELSE IF( K8 ) THEN
865 $ CALL PZIPSET( 'bignum
', N, MEM( IPA ), IA, JA,
868 CALL PZHER2( UPLO, N, ALPHA, MEM( IPX ), IX, JX,
869 $ DESCX, INCX, MEM( IPY ), IY, JY, DESCY,
870 $ INCY, MEM( IPA ), IA, JA, DESCA )
877 KSKIP( K ) = KSKIP( K ) + 1
879 $ WRITE( NOUT, FMT = 9974 ) INFO
885 CALL PB_ZCHEKPAD( ICTXT, SNAMES( K ), MPA, NQA,
886 $ MEM( IPA-IPREA ), DESCA( LLD_ ), IPREA,
889 CALL PB_ZCHEKPAD( ICTXT, SNAMES( K ), MPX, NQX,
890 $ MEM( IPX-IPREX ), DESCX( LLD_ ), IPREX,
893 IF( YCHECK( K ) ) THEN
894 CALL PB_ZCHEKPAD( ICTXT, SNAMES( K ), MPY, NQY,
895 $ MEM( IPY-IPREY ), DESCY( LLD_ ),
896 $ IPREY, IPOSTY, PADVAL )
901 CALL PZBLAS2TSTCHK( ICTXT, NOUT, K, UPLO, TRANS, DIAG, M,
902 $ N, ALPHA, MEM( IPMATA ), MEM( IPA ),
903 $ IA, JA, DESCA, MEM( IPMATX ),
904 $ MEM( IPX ), IX, JX, DESCX, INCX,
905 $ BETA, MEM( IPMATY ), MEM( IPY ), IY,
906 $ JY, DESCY, INCY, THRESH, ROGUE,
908.EQ.
IF( MOD( INFO, 2 )1 ) THEN
910.EQ.
ELSE IF( MOD( INFO / 2, 2 )1 ) THEN
912.EQ.
ELSE IF( MOD( INFO / 4, 2 )1 ) THEN
914.NE.
ELSE IF( INFO0 ) THEN
923 CALL PZCHKARG2( ICTXT, NOUT, SNAMES( K ), UPLO, TRANS,
924 $ DIAG, M, N, ALPHA, IA, JA, DESCA, IX,
925 $ JX, DESCX, INCX, BETA, IY, JY, DESCY,
930 CALL PZCHKMOUT( NROWA, NCOLA, MEM( IPMATA ), MEM( IPA ),
931 $ IA, JA, DESCA, IERR( 4 ) )
932 CALL PZCHKVOUT( NLX, MEM( IPMATX ), MEM( IPX ), IX, JX,
933 $ DESCX, INCX, IERR( 5 ) )
935.NE.
IF( IERR( 4 )0 ) THEN
937 $ WRITE( NOUT, FMT = 9982 ) 'parallel_a
',
941.NE.
IF( IERR( 5 )0 ) THEN
943 $ WRITE( NOUT, FMT = 9982 ) 'parallel_x
',
947 IF( YCHECK( K ) ) THEN
948 CALL PZCHKVOUT( NLY, MEM( IPMATY ), MEM( IPY ), IY,
949 $ JY, DESCY, INCY, IERR( 6 ) )
950.NE.
IF( IERR( 6 )0 ) THEN
952 $ WRITE( NOUT, FMT = 9982 ) 'parallel_y
',
959.NE..OR..NE..OR.
IF( INFO0 IERR( 1 )0
960.NE..OR..NE..OR.
$ IERR( 2 )0 IERR( 3 )0
961.NE..OR..NE..OR.
$ IERR( 4 )0 IERR( 5 )0
962.NE.
$ IERR( 6 )0 ) THEN
964 $ WRITE( NOUT, FMT = 9984 ) SNAMES( K )
965 KFAIL( K ) = KFAIL( K ) + 1
969 $ WRITE( NOUT, FMT = 9983 ) SNAMES( K )
970 KPASS( K ) = KPASS( K ) + 1
975.GE..AND.
IF( IVERB1 ERRFLG ) THEN
976.NE..OR..GE.
IF( IERR( 4 )0 IVERB3 ) THEN
977 CALL PZMPRNT( ICTXT, NOUT, MA, NA, MEM( IPMATA ),
978 $ LDA, 0, 0, 'serial_a
' )
979 CALL PB_PZLAPRNT( MA, NA, MEM( IPA ), 1, 1, DESCA,
980 $ 0, 0, 'parallel_a
', NOUT,
982.NE.
ELSE IF( IERR( 1 )0 ) THEN
983.GT..AND..GT.
IF( ( NROWA0 )( NCOLA0 ) )
984 $ CALL PZMPRNT( ICTXT, NOUT, NROWA, NCOLA,
985 $ MEM( IPMATA+IA-1+(JA-1)*LDA ),
986 $ LDA, 0, 0, 'serial_a
' )
987 CALL PB_PZLAPRNT( NROWA, NCOLA, MEM( IPA ), IA, JA,
988 $ DESCA, 0, 0, 'parallel_a
',
989 $ NOUT, MEM( IPMATA ) )
991.NE..OR..GE.
IF( IERR( 5 )0 IVERB3 ) THEN
992 CALL PZMPRNT( ICTXT, NOUT, MX, NX, MEM( IPMATX ),
993 $ LDX, 0, 0, 'serial_x
' )
994 CALL PB_PZLAPRNT( MX, NX, MEM( IPX ), 1, 1, DESCX,
995 $ 0, 0, 'parallel_x
', NOUT,
997.NE.
ELSE IF( IERR( 2 )0 ) THEN
999 $ CALL PZVPRNT( ICTXT, NOUT, NLX,
1000 $ MEM( IPMATX+IX-1+(JX-1)*LDX ),
1001 $ INCX, 0, 0, 'serial_x
' )
1002.EQ.
IF( INCXDESCX( M_ ) ) THEN
1003 CALL PB_PZLAPRNT( 1, NLX, MEM( IPX ), IX, JX,
1004 $ DESCX, 0, 0, 'parallel_x
',
1005 $ NOUT, MEM( IPMATX ) )
1007 CALL PB_PZLAPRNT( NLX, 1, MEM( IPX ), IX, JX,
1008 $ DESCX, 0, 0, 'parallel_x
',
1009 $ NOUT, MEM( IPMATX ) )
1012 IF( YCHECK( K ) ) THEN
1013.NE..OR..GE.
IF( IERR( 6 )0 IVERB3 ) THEN
1014 CALL PZMPRNT( ICTXT, NOUT, MY, NY,
1015 $ MEM( IPMATY ), LDY, 0, 0,
1017 CALL PB_PZLAPRNT( MY, NY, MEM( IPY ), 1, 1,
1018 $ DESCY, 0, 0, 'parallel_y
',
1019 $ NOUT, MEM( IPMATX ) )
1020.NE.
ELSE IF( IERR( 3 )0 ) THEN
1022 $ CALL PZVPRNT( ICTXT, NOUT, NLY,
1023 $ MEM( IPMATY+IY-1+(JY-1)*LDY ),
1024 $ INCY, 0, 0, 'serial_y
' )
1025.EQ.
IF( INCYDESCY( M_ ) ) THEN
1026 CALL PB_PZLAPRNT( 1, NLY, MEM( IPY ), IY, JY,
1027 $ DESCY, 0, 0, 'parallel_y
',
1028 $ NOUT, MEM( IPMATX ) )
1030 CALL PB_PZLAPRNT( NLY, 1, MEM( IPY ), IY, JY,
1031 $ DESCY, 0, 0, 'parallel_y
',
1032 $ NOUT, MEM( IPMATX ) )
1040.AND.
IF( SOFERRFLG )
1045.EQ.
40 IF( IAM0 ) THEN
1046 WRITE( NOUT, FMT = * )
1047 WRITE( NOUT, FMT = 9981 ) J
1052 CALL BLACS_GRIDEXIT( ICTXT )
1063 IF( LTEST( I ) ) THEN
1064 KSKIP( I ) = KSKIP( I ) + TSKIP
1065 KTESTS( I ) = KSKIP( I ) + KFAIL( I ) + KPASS( I )
1072 WRITE( NOUT, FMT = * )
1073 WRITE( NOUT, FMT = 9977 )
1074 WRITE( NOUT, FMT = * )
1075 WRITE( NOUT, FMT = 9979 )
1076 WRITE( NOUT, FMT = 9978 )
1079 WRITE( NOUT, FMT = 9980 ) '|
', SNAMES( I ), KTESTS( I ),
1080 $ KPASS( I ), KFAIL( I ), KSKIP( I )
1082 WRITE( NOUT, FMT = * )
1083 WRITE( NOUT, FMT = 9976 )
1084 WRITE( NOUT, FMT = * )
1088 CALL BLACS_EXIT( 0 )
1090 9999 FORMAT( 'illegal
', A, ':
', A, ' =
', I10,
1091 $ ' should be at least 1
' )
1092 9998 FORMAT( 'illegal grid: nprow*npcol =
', I4,
1093 $ '. it can be at most
', I4 )
1094 9997 FORMAT( 'bad
', A, ' parameters: going on to next test case.
' )
1095 9996 FORMAT( 2X, 'test number
', I4 , ' started on a
', I6, ' x
',
1096 $ I6, ' process grid.
' )
1097 9995 FORMAT( 2X, ' ------------------------------------------------
',
1098 $ '--------------------------
' )
1099 9994 FORMAT( 2X, '' )
1100 9993 FORMAT( 5X,I6,1X,I6,9X,A1,11X,A1,10X,A1 )
1101 9992 FORMAT( 2X, ' ia ja ma na imba inba
',
1102 $ ' mba nba rsrca csrca
' )
1103 9991 FORMAT( 5X,I6,1X,I6,1X,I6,1X,I6,1X,I6,1X,I6,1X,I6,1X,I6,
1105 9990 FORMAT( 2X, ' ix jx mx nx imbx inbx
',
1106 $ ' mbx nbx rsrcx csrcx incx
' )
1107 9989 FORMAT( 5X,I6,1X,I6,1X,I6,1X,I6,1X,I6,1X,I6,1X,I6,1X,I6,
1108 $ 1X,I5,1X,I5,1X,I6 )
1109 9988 FORMAT( 2X, ' iy jy my ny imby inby
',
1110 $ ' mby nby rsrcy csrcy incy
' )
1111 9987 FORMAT( 'not enough memory
for this test: going on to
',
1112 $ ' next test case.
' )
1113 9986 FORMAT( 'not enough memory. need:
', I12 )
1114 9985 FORMAT( 2X, ' tested subroutine:
', A )
1115 9984 FORMAT( 2X, ' ***** computational check:
', A, ' ',
1116 $ ' failed
',' *****
' )
1117 9983 FORMAT( 2X, ' ***** computational check:
', A, ' ',
1118 $ ' passed
',' *****
' )
1119 9982 FORMAT( 2X, ' ***** error ***** matrix operand
', A,
1120 $ ' modified by
', A, ' *****
' )
1121 9981 FORMAT( 2X, 'test number
', I4, ' completed.
' )
1122 9980 FORMAT( 2X,A1,2X,A7,8X,I4,6X,I4,5X,I4,4X,I4 )
1123 9979 FORMAT( 2X, ' SUBROUTINE total tests passed failed
',
1125 9978 FORMAT( 2X, ' ---------- ----------- ------ ------
',
1127 9977 FORMAT( 2X, 'testing summary
')
1128 9976 FORMAT( 2X, 'end of tests.
' )
1129 9975 FORMAT( 2X, 'tests started.
' )
1130 9974 FORMAT( 2X, ' ***** operation not supported, error code:
',
1138 SUBROUTINE PZBLA2TSTINFO( SUMMRY, NOUT, NMAT, DIAGVAL, TRANVAL,
1139 $ UPLOVAL, MVAL, NVAL, MAVAL, NAVAL,
1140 $ IMBAVAL, MBAVAL, INBAVAL, NBAVAL,
1141 $ RSCAVAL, CSCAVAL, IAVAL, JAVAL,
1142 $ MXVAL, NXVAL, IMBXVAL, MBXVAL,
1143 $ INBXVAL, NBXVAL, RSCXVAL, CSCXVAL,
1144 $ IXVAL, JXVAL, INCXVAL, MYVAL, NYVAL,
1145 $ IMBYVAL, MBYVAL, INBYVAL, NBYVAL,
1146 $ RSCYVAL, CSCYVAL, IYVAL, JYVAL,
1147 $ INCYVAL, LDVAL, NGRIDS, PVAL, LDPVAL,
1148 $ QVAL, LDQVAL, NBLOG, LTEST, SOF, TEE,
1149 $ IAM, IGAP, IVERB, NPROCS, THRESH, ALPHA,
1159 INTEGER IAM, IGAP, IVERB, LDPVAL, LDQVAL, LDVAL, NBLOG,
1160 $ NGRIDS, NMAT, NOUT, NPROCS
1162 COMPLEX*16 ALPHA, BETA
1165 CHARACTER*( * ) SUMMRY
1166 CHARACTER*1 DIAGVAL( LDVAL ), TRANVAL( LDVAL ),
1169 INTEGER CSCAVAL( LDVAL ), CSCXVAL( LDVAL ),
1170 $ CSCYVAL( LDVAL ), IAVAL( LDVAL ),
1171 $ IMBAVAL( LDVAL ), IMBXVAL( LDVAL ),
1172 $ IMBYVAL( LDVAL ), INBAVAL( LDVAL ),
1173 $ INBXVAL( LDVAL ), INBYVAL( LDVAL ),
1174 $ INCXVAL( LDVAL ), INCYVAL( LDVAL ),
1175 $ IXVAL( LDVAL ), IYVAL( LDVAL ), JAVAL( LDVAL ),
1176 $ JXVAL( LDVAL ), JYVAL( LDVAL ), MAVAL( LDVAL ),
1177 $ MBAVAL( LDVAL ), MBXVAL( LDVAL ),
1178 $ MBYVAL( LDVAL ), MVAL( LDVAL ), MXVAL( LDVAL ),
1179 $ MYVAL( LDVAL ), NAVAL( LDVAL ),
1180 $ NBAVAL( LDVAL ), NBXVAL( LDVAL ),
1181 $ NBYVAL( LDVAL ), NVAL( LDVAL ), NXVAL( LDVAL ),
1182 $ NYVAL( LDVAL ), PVAL( LDPVAL ), QVAL( LDQVAL ),
1183 $ RSCAVAL( LDVAL ), RSCXVAL( LDVAL ),
1184 $ RSCYVAL( LDVAL ), WORK( * )
1471 PARAMETER ( NIN = 11, NSUBS = 8 )
1476 DOUBLE PRECISION EPS
1480 CHARACTER*79 USRINFO
1483 EXTERNAL BLACS_ABORT, BLACS_GET, BLACS_GRIDEXIT,
1484 $ BLACS_GRIDINIT, BLACS_SETUP, ICOPY, IGEBR2D,
1485 $ IGEBS2D, SGEBR2D, SGEBS2D, ZGEBR2D, ZGEBS2D
1489 DOUBLE PRECISION PDLAMCH
1493 INTRINSIC CHAR, ICHAR, MAX, MIN
1496 CHARACTER*7 SNAMES( NSUBS )
1497 COMMON /SNAMEC/SNAMES
1508 OPEN( NIN, FILE='pzblas2tst.dat
', STATUS='old
' )
1509 READ( NIN, FMT = * ) SUMMRY
1514 READ( NIN, FMT = 9999 ) USRINFO
1518 READ( NIN, FMT = * ) SUMMRY
1519 READ( NIN, FMT = * ) NOUT
1520.NE..AND..NE.
IF( NOUT0 NOUT6 )
1521 $ OPEN( NOUT, FILE = SUMMRY, STATUS = 'unknown
' )
1527 READ( NIN, FMT = * ) SOF
1531 READ( NIN, FMT = * ) TEE
1535 READ( NIN, FMT = * ) IVERB
1536.LT..OR..GT.
IF( IVERB0 IVERB3 )
1541 READ( NIN, FMT = * ) IGAP
1547 READ( NIN, FMT = * ) THRESH
1553 READ( NIN, FMT = * ) NBLOG
1559 READ( NIN, FMT = * ) NGRIDS
1560.LT..OR..GT.
IF( NGRIDS1 NGRIDSLDPVAL ) THEN
1561 WRITE( NOUT, FMT = 9998 ) 'grids
', LDPVAL
1563.GT.
ELSE IF( NGRIDSLDQVAL ) THEN
1564 WRITE( NOUT, FMT = 9998 ) 'grids
', LDQVAL
1570 READ( NIN, FMT = * ) ( PVAL( I ), I = 1, NGRIDS )
1571 READ( NIN, FMT = * ) ( QVAL( I ), I = 1, NGRIDS )
1575 READ( NIN, FMT = * ) ALPHA
1576 READ( NIN, FMT = * ) BETA
1580 READ( NIN, FMT = * ) NMAT
1581.LT..OR..GT.
IF( NMAT1 NMATLDVAL ) THEN
1582 WRITE( NOUT, FMT = 9998 ) 'tests
', LDVAL
1588 READ( NIN, FMT = * ) ( UPLOVAL( I ), I = 1, NMAT )
1589 READ( NIN, FMT = * ) ( TRANVAL( I ), I = 1, NMAT )
1590 READ( NIN, FMT = * ) ( DIAGVAL( I ), I = 1, NMAT )
1591 READ( NIN, FMT = * ) ( MVAL( I ), I = 1, NMAT )
1592 READ( NIN, FMT = * ) ( NVAL( I ), I = 1, NMAT )
1593 READ( NIN, FMT = * ) ( MAVAL( I ), I = 1, NMAT )
1594 READ( NIN, FMT = * ) ( NAVAL( I ), I = 1, NMAT )
1595 READ( NIN, FMT = * ) ( IMBAVAL( I ), I = 1, NMAT )
1596 READ( NIN, FMT = * ) ( INBAVAL( I ), I = 1, NMAT )
1597 READ( NIN, FMT = * ) ( MBAVAL( I ), I = 1, NMAT )
1598 READ( NIN, FMT = * ) ( NBAVAL( I ), I = 1, NMAT )
1599 READ( NIN, FMT = * ) ( RSCAVAL( I ), I = 1, NMAT )
1600 READ( NIN, FMT = * ) ( CSCAVAL( I ), I = 1, NMAT )
1601 READ( NIN, FMT = * ) ( IAVAL( I ), I = 1, NMAT )
1602 READ( NIN, FMT = * ) ( JAVAL( I ), I = 1, NMAT )
1603 READ( NIN, FMT = * ) ( MXVAL( I ), I = 1, NMAT )
1604 READ( NIN, FMT = * ) ( NXVAL( I ), I = 1, NMAT )
1605 READ( NIN, FMT = * ) ( IMBXVAL( I ), I = 1, NMAT )
1606 READ( NIN, FMT = * ) ( INBXVAL( I ), I = 1, NMAT )
1607 READ( NIN, FMT = * ) ( MBXVAL( I ), I = 1, NMAT )
1608 READ( NIN, FMT = * ) ( NBXVAL( I ), I = 1, NMAT )
1609 READ( NIN, FMT = * ) ( RSCXVAL( I ), I = 1, NMAT )
1610 READ( NIN, FMT = * ) ( CSCXVAL( I ), I = 1, NMAT )
1611 READ( NIN, FMT = * ) ( IXVAL( I ), I = 1, NMAT )
1612 READ( NIN, FMT = * ) ( JXVAL( I ), I = 1, NMAT )
1613 READ( NIN, FMT = * ) ( INCXVAL( I ), I = 1, NMAT )
1614 READ( NIN, FMT = * ) ( MYVAL( I ), I = 1, NMAT )
1615 READ( NIN, FMT = * ) ( NYVAL( I ), I = 1, NMAT )
1616 READ( NIN, FMT = * ) ( IMBYVAL( I ), I = 1, NMAT )
1617 READ( NIN, FMT = * ) ( INBYVAL( I ), I = 1, NMAT )
1618 READ( NIN, FMT = * ) ( MBYVAL( I ), I = 1, NMAT )
1619 READ( NIN, FMT = * ) ( NBYVAL( I ), I = 1, NMAT )
1620 READ( NIN, FMT = * ) ( RSCYVAL( I ), I = 1, NMAT )
1621 READ( NIN, FMT = * ) ( CSCYVAL( I ), I = 1, NMAT )
1622 READ( NIN, FMT = * ) ( IYVAL( I ), I = 1, NMAT )
1623 READ( NIN, FMT = * ) ( JYVAL( I ), I = 1, NMAT )
1624 READ( NIN, FMT = * ) ( INCYVAL( I ), I = 1, NMAT )
1630 LTEST( I ) = .FALSE.
1633 READ( NIN, FMT = 9996, END = 50 ) SNAMET, LTESTT
1635.EQ.
IF( SNAMETSNAMES( I ) )
1639 WRITE( NOUT, FMT = 9995 )SNAMET
1655.LT.
IF( NPROCS1 ) THEN
1658 NPROCS = MAX( NPROCS, PVAL( I )*QVAL( I ) )
1660 CALL BLACS_SETUP( IAM, NPROCS )
1666 CALL BLACS_GET( -1, 0, ICTXT )
1667 CALL BLACS_GRIDINIT( ICTXT, 'row-major
', 1, NPROCS )
1671 EPS = PDLAMCH( ICTXT, 'eps
' )
1675 CALL SGEBS2D( ICTXT, 'all
', ' ', 1, 1, THRESH, 1 )
1676 CALL ZGEBS2D( ICTXT, 'all
', ' ', 1, 1, ALPHA, 1 )
1677 CALL ZGEBS2D( ICTXT, 'all
', ' ', 1, 1, BETA, 1 )
1682 CALL IGEBS2D( ICTXT, 'all
', ' ', 3, 1, WORK, 3 )
1702 WORK( I ) = ICHAR( DIAGVAL( J ) )
1703 WORK( I+1 ) = ICHAR( TRANVAL( J ) )
1704 WORK( I+2 ) = ICHAR( UPLOVAL( J ) )
1707 CALL ICOPY( NGRIDS, PVAL, 1, WORK( I ), 1 )
1709 CALL ICOPY( NGRIDS, QVAL, 1, WORK( I ), 1 )
1711 CALL ICOPY( NMAT, MVAL, 1, WORK( I ), 1 )
1713 CALL ICOPY( NMAT, NVAL, 1, WORK( I ), 1 )
1715 CALL ICOPY( NMAT, MAVAL, 1, WORK( I ), 1 )
1717 CALL ICOPY( NMAT, NAVAL, 1, WORK( I ), 1 )
1719 CALL ICOPY( NMAT, IMBAVAL, 1, WORK( I ), 1 )
1721 CALL ICOPY( NMAT, INBAVAL, 1, WORK( I ), 1 )
1723 CALL ICOPY( NMAT, MBAVAL, 1, WORK( I ), 1 )
1725 CALL ICOPY( NMAT, NBAVAL, 1, WORK( I ), 1 )
1727 CALL ICOPY( NMAT, RSCAVAL, 1, WORK( I ), 1 )
1729 CALL ICOPY( NMAT, CSCAVAL, 1, WORK( I ), 1 )
1731 CALL ICOPY( NMAT, IAVAL, 1, WORK( I ), 1 )
1733 CALL ICOPY( NMAT, JAVAL, 1, WORK( I ), 1 )
1735 CALL ICOPY( NMAT, MXVAL, 1, WORK( I ), 1 )
1737 CALL ICOPY( NMAT, NXVAL, 1, WORK( I ), 1 )
1739 CALL ICOPY( NMAT, IMBXVAL, 1, WORK( I ), 1 )
1741 CALL ICOPY( NMAT, INBXVAL, 1, WORK( I ), 1 )
1743 CALL ICOPY( NMAT, MBXVAL, 1, WORK( I ), 1 )
1745 CALL ICOPY( NMAT, NBXVAL, 1, WORK( I ), 1 )
1747 CALL ICOPY( NMAT, RSCXVAL, 1, WORK( I ), 1 )
1749 CALL ICOPY( NMAT, CSCXVAL, 1, WORK( I ), 1 )
1751 CALL ICOPY( NMAT, IXVAL, 1, WORK( I ), 1 )
1753 CALL ICOPY( NMAT, JXVAL, 1, WORK( I ), 1 )
1755 CALL ICOPY( NMAT, INCXVAL, 1, WORK( I ), 1 )
1757 CALL ICOPY( NMAT, MYVAL, 1, WORK( I ), 1 )
1759 CALL ICOPY( NMAT, NYVAL, 1, WORK( I ), 1 )
1761 CALL ICOPY( NMAT, IMBYVAL, 1, WORK( I ), 1 )
1763 CALL ICOPY( NMAT, INBYVAL, 1, WORK( I ), 1 )
1765 CALL ICOPY( NMAT, MBYVAL, 1, WORK( I ), 1 )
1767 CALL ICOPY( NMAT, NBYVAL, 1, WORK( I ), 1 )
1769 CALL ICOPY( NMAT, RSCYVAL, 1, WORK( I ), 1 )
1771 CALL ICOPY( NMAT, CSCYVAL, 1, WORK( I ), 1 )
1773 CALL ICOPY( NMAT, IYVAL, 1, WORK( I ), 1 )
1775 CALL ICOPY( NMAT, JYVAL, 1, WORK( I ), 1 )
1777 CALL ICOPY( NMAT, INCYVAL, 1, WORK( I ), 1 )
1781 IF( LTEST( J ) ) THEN
1789 CALL IGEBS2D( ICTXT, 'all
', ' ', I, 1, WORK, I )
1793 WRITE( NOUT, FMT = 9999 ) 'level 2 pblas testing program.
'
1794 WRITE( NOUT, FMT = 9999 ) USRINFO
1795 WRITE( NOUT, FMT = * )
1796 WRITE( NOUT, FMT = 9999 )
1800 WRITE( nout, fmt = 9993 ) nmat
1801 WRITE( nout, fmt = 9979 ) nblog
1802 WRITE( nout, fmt = 9992 ) ngrids
1803 WRITE( nout, fmt = 9990 )
1804 $
'P', ( pval(i), i = 1,
min(ngrids, 5) )
1806 $
WRITE( nout, fmt = 9
1807 $
min( 10, ngrids ) )
1809 $
WRITE( nout, fmt = 9991 ) ( pval(i), i = 11,
1810 $
min( 15, ngrids ) )
1812 $
WRITE( nout, fmt = 9991 ) ( pval(i), i = 16, ngrids )
1813 WRITE( nout, fmt = 9990 )
1814 $
'Q', ( qval(i), i = 1,
min(ngrids, 5) )
1816 $
WRITE( nout, fmt = 9991 ) ( qval(i), i = 6,
1817 $
min( 10, ngrids ) )
1819 $
WRITE( nout, fmt = 9991 ) ( qval(i), i = 11,
1820 $
min( 15, ngrids ) )
1822 $
WRITE( nout, fmt = 9991 ) ( qval(i), i = 16, ngrids )
1823 WRITE( nout, fmt = 9988 ) sof
1824 WRITE( nout, fmt = 9987 ) tee
1825 WRITE( nout, fmt = 9983 ) igap
1826 WRITE( nout, fmt = 9986 ) iverb
1827 WRITE( nout, fmt = 9980 ) thresh
1828 WRITE( nout, fmt = 9982 )
alpha
1829 WRITE( nout, fmt = 9981 ) beta
1830 IF( ltest( 1 ) )
THEN
1831 WRITE( nout, fmt = 9985 ) snames( 1 ),
' ... Yes'
1833 WRITE( nout, fmt = 9985 ) snames( 1 ),
' ... No '
1836 IF( ltest( i ) )
THEN
1837 WRITE( nout, fmt = 9984 ) snames( i ),
' ... Yes'
1839 WRITE( nout, fmt = 9984 ) snames( i ),
' ... No '
1842 WRITE( nout, fmt = 9994 ) eps
1843 WRITE( nout, fmt = * )
1850 $
CALL blacs_setup( iam, nprocs )
1855 CALL blacs_get( -1, 0, ictxt )
1862 CALL sgebr2d( ictxt,
'All',
' ', 1, 1, thresh, 1, 0, 0 )
1863 CALL zgebr2d( ictxt,
'All', '
', 1, 1, ALPHA, 1, 0, 0 )
1864 CALL ZGEBR2D( ICTXT, 'all
', ' ', 1, 1, BETA, 1, 0, 0 )
1866 CALL IGEBR2D( ICTXT, 'all
', ' ', 3, 1, WORK, 3, 0, 0 )
1871 I = 2*NGRIDS + 37*NMAT + NSUBS + 4
1872 CALL IGEBR2D( ICTXT, 'all
', ' ', I, 1, WORK, I, 0, 0 )
1875.EQ.
IF( WORK( I )1 ) THEN
1881.EQ.
IF( WORK( I )1 ) THEN
1892 DIAGVAL( J ) = CHAR( WORK( I ) )
1893 TRANVAL( J ) = CHAR( WORK( I+1 ) )
1894 UPLOVAL( J ) = CHAR( WORK( I+2 ) )
1897 CALL ICOPY( NGRIDS, WORK( I ), 1, PVAL, 1 )
1899 CALL ICOPY( NGRIDS, WORK( I ), 1, QVAL, 1 )
1901 CALL ICOPY( NMAT, WORK( I ), 1, MVAL, 1 )
1903 CALL ICOPY( NMAT, WORK( I ), 1, NVAL, 1 )
1905 CALL ICOPY( NMAT, WORK( I ), 1, MAVAL, 1 )
1907 CALL ICOPY( NMAT, WORK( I ), 1, NAVAL, 1 )
1909 CALL ICOPY( NMAT, WORK( I ), 1, IMBAVAL, 1 )
1911 CALL ICOPY( NMAT, WORK( I ), 1, INBAVAL, 1 )
1913 CALL ICOPY( NMAT, WORK( I ), 1, MBAVAL, 1 )
1915 CALL ICOPY( NMAT, WORK( I ), 1, NBAVAL, 1 )
1917 CALL ICOPY( NMAT, WORK( I ), 1, RSCAVAL, 1 )
1919 CALL ICOPY( NMAT, WORK( I ), 1, CSCAVAL, 1 )
1921 CALL ICOPY( NMAT, WORK( I ), 1, IAVAL, 1 )
1923 CALL ICOPY( NMAT, WORK( I ), 1, JAVAL, 1 )
1925 CALL ICOPY( NMAT, WORK( I ), 1, MXVAL, 1 )
1927 CALL ICOPY( NMAT, WORK( I ), 1, NXVAL, 1 )
1929 CALL ICOPY( NMAT, WORK( I ), 1, IMBXVAL, 1 )
1931 CALL ICOPY( NMAT, WORK( I ), 1, INBXVAL, 1 )
1933 CALL ICOPY( NMAT, WORK( I ), 1, MBXVAL, 1 )
1935 CALL ICOPY( NMAT, WORK( I ), 1, NBXVAL, 1 )
1937 CALL ICOPY( NMAT, WORK( I ), 1, RSCXVAL, 1 )
1939 CALL ICOPY( NMAT, WORK( I ), 1, CSCXVAL, 1 )
1941 CALL ICOPY( NMAT, WORK( I ), 1, IXVAL, 1 )
1943 CALL ICOPY( NMAT, WORK( I ), 1, JXVAL, 1 )
1945 CALL ICOPY( NMAT, WORK( I ), 1, INCXVAL, 1 )
1947 CALL ICOPY( NMAT, WORK( I ), 1, MYVAL, 1 )
1949 CALL ICOPY( NMAT, WORK( I ), 1, NYVAL, 1 )
1951 CALL ICOPY( NMAT, WORK( I ), 1, IMBYVAL, 1 )
1953 CALL ICOPY( NMAT, WORK( I ), 1, INBYVAL, 1 )
1955 CALL ICOPY( NMAT, WORK( I ), 1, MBYVAL, 1 )
1957 CALL ICOPY( NMAT, WORK( I ), 1, NBYVAL, 1 )
1959 CALL ICOPY( NMAT, WORK( I ), 1, RSCYVAL, 1 )
1961 CALL ICOPY( NMAT, WORK( I ), 1, CSCYVAL, 1 )
1963 CALL ICOPY( NMAT, WORK( I ), 1, IYVAL, 1 )
1965 CALL ICOPY( NMAT, WORK( I ), 1, JYVAL, 1 )
1967 CALL ICOPY( NMAT, WORK( I ), 1, INCYVAL, 1 )
1971.EQ.
IF( WORK( I )1 ) THEN
1974 LTEST( J ) = .FALSE.
1981 CALL BLACS_GRIDEXIT( ICTXT )
1985 120 WRITE( NOUT, FMT = 9997 )
1987.NE..AND..NE.
IF( NOUT6 NOUT0 )
1989 CALL BLACS_ABORT( ICTXT, 1 )
1994 9998 FORMAT( ' number of values of
',5A, ' is less than 1 or greater
',
1996 9997 FORMAT( ' illegal input in file
',40A,'. aborting run.
' )
1997 9996 FORMAT( A7, L2 )
1998 9995 FORMAT( ' subprogram name
', A7, ' not recognized
',
1999 $ /' ******* tests abandoned *******
' )
2000 9994 FORMAT( 2X, 'relative machine precision(eps) is taken to be
',
2002 9993 FORMAT( 2X, 'number of tests :
', I6 )
2003 9992 FORMAT( 2X, 'number of process grids :
', I6 )
2004 9991 FORMAT( 2X, ' :
', 5I6 )
2005 9990 FORMAT( 2X, A1, ' :
', 5I6 )
2006 9988 FORMAT( 2X, 'stop on failure flag :
', L6 )
2007 9987 FORMAT( 2X, 'test
for error exits flag :
', L6 )
2008 9986 FORMAT( 2X, 'verbosity level :
', I6 )
2009 9985 FORMAT( 2X, 'routines to be tested :
', A, A8 )
2010 9984 FORMAT( 2X, ' ', A, A8 )
2011 9983 FORMAT( 2X, 'leading dimension gap :
', I6 )
2012 9982 FORMAT( 2X, 'alpha : (
', G16.6,
2014 9981 FORMAT( 2X, 'beta : (
', G16.6,
2016 9980 FORMAT( 2X, 'threshold
value :
', G16.6 )
2017 9979 FORMAT( 2X, 'Logical block size :
', I6 )
2022 SUBROUTINE PZBLAS2TSTCHKE( LTEST, INOUT, NPROCS )
2030 INTEGER INOUT, NPROCS
2101 PARAMETER ( NSUBS = 8 )
2105 INTEGER I, ICTXT, MYCOL, MYROW, NPCOL, NPROW
2108 INTEGER SCODE( NSUBS )
2111 EXTERNAL BLACS_GET, BLACS_GRIDEXIT, BLACS_GRIDINFO,
2112 $ BLACS_GRIDINIT, PZDIMEE, PZGEMV, PZGERC,
2113 $ PZGERU, PZHEMV, PZHER, PZHER2, PZMATEE,
2114 $ PZOPTEE, PZTRMV, PZTRSV, PZVECEE
2119 CHARACTER*7 SNAMES( NSUBS )
2120 COMMON /SNAMEC/SNAMES
2121 COMMON /PBERRORC/NOUT, ABRTFLG
2124 DATA SCODE/21, 22, 23, 23, 24, 24, 26, 27/
2131 CALL BLACS_GET( -1, 0, ICTXT )
2132 CALL BLACS_GRIDINIT( ICTXT, 'Row-major
', 1, NPROCS )
2133 CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL )
2146 IF( LTEST( I ) ) THEN
2147 CALL PZOPTEE( ICTXT, NOUT, PZGEMV, SCODE( I ), SNAMES( I ) )
2148 CALL PZDIMEE( ICTXT, NOUT, PZGEMV, SCODE( I ), SNAMES( I ) )
2149 CALL PZMATEE( ICTXT, NOUT, PZGEMV, SCODE( I ), SNAMES( I ) )
2150 CALL PZVECEE( ICTXT, NOUT, PZGEMV, SCODE( I ), SNAMES( I ) )
2156 IF( LTEST( I ) ) THEN
2157 CALL PZOPTEE( ICTXT, NOUT, PZHEMV, SCODE( I ), SNAMES( I ) )
2158 CALL PZDIMEE( ICTXT, NOUT, PZHEMV, SCODE( I ), SNAMES( I ) )
2159 CALL PZMATEE( ICTXT, NOUT, PZHEMV, SCODE( I ), SNAMES( I ) )
2160 CALL PZVECEE( ICTXT, NOUT, PZHEMV, SCODE( I ), SNAMES( I ) )
2166 IF( LTEST( I ) ) THEN
2167 CALL PZOPTEE( ICTXT, NOUT, PZTRMV, SCODE( I ), SNAMES( I ) )
2168 CALL PZDIMEE( ICTXT, NOUT, PZTRMV, SCODE( I ), SNAMES( I ) )
2169 CALL PZMATEE( ICTXT, NOUT, PZTRMV, SCODE( I ), SNAMES( I ) )
2170 CALL PZVECEE( ICTXT, NOUT, PZTRMV, SCODE( I ), SNAMES( I ) )
2176 IF( LTEST( I ) ) THEN
2177 CALL PZOPTEE( ICTXT, NOUT, PZTRSV, SCODE( I ), SNAMES( I ) )
2178 CALL PZDIMEE( ICTXT, NOUT, PZTRSV, SCODE( I ), SNAMES( I ) )
2179 CALL PZMATEE( ICTXT, NOUT, PZTRSV, SCODE( I ), SNAMES( I ) )
2180 CALL PZVECEE( ICTXT, NOUT, PZTRSV, SCODE( I ), SNAMES( I ) )
2186 IF( LTEST( I ) ) THEN
2187 CALL PZDIMEE( ICTXT, NOUT, PZGERU, SCODE( I ), SNAMES( I ) )
2188 CALL PZVECEE( ICTXT, NOUT, PZGERU, SCODE( I ), SNAMES( I ) )
2189 CALL PZMATEE( ICTXT, NOUT, PZGERU, SCODE( I ), SNAMES( I ) )
2195 IF( LTEST( I ) ) THEN
2196 CALL PZDIMEE( ICTXT, NOUT, PZGERC, SCODE( I ), SNAMES( I ) )
2197 CALL PZVECEE( ICTXT, NOUT, PZGERC, SCODE( I ), SNAMES( I ) )
2198 CALL PZMATEE( ICTXT, NOUT, PZGERC, SCODE( I ), SNAMES( I ) )
2204 IF( LTEST( I ) ) THEN
2205 CALL PZOPTEE( ICTXT, NOUT, PZHER, SCODE( I ), SNAMES( I ) )
2206 CALL PZDIMEE( ICTXT, NOUT, PZHER, SCODE( I ), SNAMES( I ) )
2207 CALL PZVECEE( ICTXT, NOUT, PZHER, SCODE( I ), SNAMES( I ) )
2208 CALL PZMATEE( ICTXT, NOUT, PZHER, SCODE( I ), SNAMES( I ) )
2214 IF( LTEST( I ) ) THEN
2215 CALL PZOPTEE( ICTXT, NOUT, PZHER2, SCODE( I ), SNAMES( I ) )
2216 CALL PZDIMEE( ICTXT, NOUT, PZHER2, SCODE( I ), SNAMES( I ) )
2217 CALL PZVECEE( ICTXT, NOUT, PZHER2, SCODE( I ), SNAMES( I ) )
2218 CALL PZMATEE( ICTXT, NOUT, PZHER2, SCODE( I ), SNAMES( I ) )
2221.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2222 $ WRITE( NOUT, FMT = 9999 )
2224 CALL BLACS_GRIDEXIT( ICTXT )
2230 9999 FORMAT( 2X, 'Error-exit tests completed.
' )
2237 SUBROUTINE PZCHKARG2( ICTXT, NOUT, SNAME, UPLO, TRANS, DIAG, M,
2238 $ N, ALPHA, IA, JA, DESCA, IX, JX, DESCX,
2239 $ INCX, BETA, IY, JY, DESCY, INCY, INFO )
2247 CHARACTER*1 DIAG, TRANS, UPLO
2248 INTEGER IA, ICTXT, INCX, INCY, INFO, IX, IY, JA, JX,
2250 COMPLEX*16 ALPHA, BETA
2254 INTEGER DESCA( * ), DESCX( * ), DESCY( * )
2368 INTEGER BLOCK_CYCLIC_2D_INB, CSRC_, CTXT_, DLEN_,
2369 $ DTYPE_, IMB_, INB_, LLD_, MB_, M_, NB_, N_,
2371 PARAMETER ( BLOCK_CYCLIC_2D_INB = 2, DLEN_ = 11,
2372 $ DTYPE_ = 1, CTXT_ = 2, M_ = 3, N_ = 4,
2373 $ IMB_ = 5, INB_ = 6, MB_ = 7, NB_ = 8,
2374 $ RSRC_ = 9, CSRC_ = 10, LLD_ = 11 )
2377 CHARACTER*1 DIAGREF, TRANSREF, UPLOREF
2378 INTEGER I, IAREF, INCXREF, INCYREF, IXREF, IYREF,
2379 $ JAREF, JXREF, JYREF, MREF, MYCOL, MYROW, NPCOL,
2381 COMPLEX*16 ALPHAREF, BETAREF
2384 CHARACTER*15 ARGNAME
2385 INTEGER DESCAREF( DLEN_ ), DESCXREF( DLEN_ ),
2389 EXTERNAL BLACS_GRIDINFO, IGSUM2D
2402 CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL )
2406.EQ.
IF( INFO0 ) THEN
2417 DESCAREF( I ) = DESCA( I )
2422 DESCXREF( I ) = DESCX( I )
2429 DESCYREF( I ) = DESCY( I )
2438.NOT.
IF( LSAME( DIAG, DIAGREF ) ) THEN
2439 WRITE( ARGNAME, FMT = '(A)
' ) 'DIAG
'
2440.NOT.
ELSE IF( LSAME( TRANS, TRANSREF ) ) THEN
2441 WRITE( ARGNAME, FMT = '(A)
' ) 'TRANS
'
2442.NOT.
ELSE IF( LSAME( UPLO, UPLOREF ) ) THEN
2443 WRITE( ARGNAME, FMT = '(A)
' ) 'UPLO
'
2444.NE.
ELSE IF( MMREF ) THEN
2445 WRITE( ARGNAME, FMT = '(A)
' ) 'M
'
2446.NE.
ELSE IF( NNREF ) THEN
2447 WRITE( ARGNAME, FMT = '(A)
' ) 'N
'
2448.NE.
ELSE IF( ALPHAALPHAREF ) THEN
2449 WRITE( ARGNAME, FMT = '(A)
' ) 'ALPHA
'
2450.NE.
ELSE IF( IAIAREF ) THEN
2451 WRITE( ARGNAME, FMT = '(A)
' ) 'IA
'
2452.NE.
ELSE IF( JAJAREF ) THEN
2453 WRITE( ARGNAME, FMT = '(A)
' ) 'JA
'
2454.NE.
ELSE IF( DESCA( DTYPE_ )DESCAREF( DTYPE_ ) ) THEN
2455 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( DTYPE_ )
'
2456.NE.
ELSE IF( DESCA( M_ )DESCAREF( M_ ) ) THEN
2457 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( M_ )
'
2458.NE.
ELSE IF( DESCA( N_ )DESCAREF( N_ ) ) THEN
2459 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( N_ )
'
2460.NE.
ELSE IF( DESCA( IMB_ )DESCAREF( IMB_ ) ) THEN
2461 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( IMB_ )
'
2462.NE.
ELSE IF( DESCA( INB_ )DESCAREF( INB_ ) ) THEN
2463 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( INB_ )
'
2464.NE.
ELSE IF( DESCA( MB_ )DESCAREF( MB_ ) ) THEN
2465 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( MB_ )
'
2466.NE.
ELSE IF( DESCA( NB_ )DESCAREF( NB_ ) ) THEN
2467 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( NB_ )
'
2468.NE.
ELSE IF( DESCA( RSRC_ )DESCAREF( RSRC_ ) ) THEN
2469 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( RSRC_ )
'
2470.NE.
ELSE IF( DESCA( CSRC_ )DESCAREF( CSRC_ ) ) THEN
2471 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( CSRC_ )
'
2472.NE.
ELSE IF( DESCA( CTXT_ )DESCAREF( CTXT_ ) ) THEN
2473 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( CTXT_ )
'
2474.NE.
ELSE IF( DESCA( LLD_ )DESCAREF( LLD_ ) ) THEN
2475 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCA( LLD_ )
'
2476.NE.
ELSE IF( IXIXREF ) THEN
2477 WRITE( ARGNAME, FMT = '(A)
' ) 'IX
'
2478.NE.
ELSE IF( JXJXREF ) THEN
2479 WRITE( ARGNAME, FMT = '(A)
' ) 'JX
'
2480.NE.
ELSE IF( DESCX( DTYPE_ )DESCXREF( DTYPE_ ) ) THEN
2481 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCX( DTYPE_ )
'
2482.NE.
ELSE IF( DESCX( M_ )DESCXREF( M_ ) ) THEN
2483 WRITE( ARGNAME, FMT = '(A)
' ) 'DESCX( M_ )
'
2484.NE.
ELSE IF( DESCX( N_ )DESCXREF( N_ ) ) THEN
2485 WRITE( ARGNAME, FMT = '(A)' )
'DESCX( N_ )'
2486 ELSE IF( descx( imb_ ).NE.descxref( imb_ ) )
THEN
2487 WRITE( argname, fmt =
'(A)' )
'DESCX( IMB_ )'
2488 ELSE IF( descx( inb_ ).NE.descxref( inb_ ) )
THEN
2489 WRITE( argname, fmt =
'(A)' )
'DESCX( INB_ )'
2490 ELSE IF( descx( mb_ ).NE.descxref( mb_ ) )
THEN
2491 WRITE( argname, fmt =
'(A)' )
'DESCX( MB_ )'
2492 ELSE IF( descx( nb_ ).NE.descxref( nb_ ) )
THEN
2493 WRITE( argname, fmt =
'(A)' )
'DESCX( NB_ )'
2494 ELSE IF( descx( rsrc_ ).NE.descxref( rsrc_ ) )
THEN
2495 WRITE( argname, fmt = '(a)
' ) 'descx( rsrc_ )
'
2496.NE.
ELSE IF( DESCX( CSRC_ )DESCXREF( CSRC_ ) ) THEN
2497 WRITE( ARGNAME, FMT = '(a)
' ) 'descx( csrc_ )
'
2498.NE.
ELSE IF( DESCX( CTXT_ )DESCXREF( CTXT_ ) ) THEN
2499 WRITE( ARGNAME, FMT = '(a)
' ) 'descx( ctxt_ )
'
2500.NE.
ELSE IF( DESCX( LLD_ )DESCXREF( LLD_ ) ) THEN
2501 WRITE( ARGNAME, FMT = '(a)
' ) 'descx( lld_ )
'
2502.NE.
ELSE IF( INCXINCXREF ) THEN
2503 WRITE( ARGNAME, FMT = '(a)
' ) 'incx
'
2504.NE.
ELSE IF( BETABETAREF ) THEN
2505 WRITE( ARGNAME, FMT = '(a)
' ) 'beta
'
2506.NE.
ELSE IF( IYIYREF ) THEN
2507 WRITE( ARGNAME, FMT = '(a)
' ) 'iy
'
2508.NE.
ELSE IF( JYJYREF ) THEN
2509 WRITE( ARGNAME, FMT = '(a)
' ) 'jy
'
2510.NE.
ELSE IF( DESCY( DTYPE_ )DESCYREF( DTYPE_ ) ) THEN
2511 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( dtype_ )
'
2512.NE.
ELSE IF( DESCY( M_ )DESCYREF( M_ ) ) THEN
2513 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( m_ )
'
2514.NE.
ELSE IF( DESCY( N_ )DESCYREF( N_ ) ) THEN
2515 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( n_ )
'
2516.NE.
ELSE IF( DESCY( IMB_ )DESCYREF( IMB_ ) ) THEN
2517 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( imb_ )
'
2518.NE.
ELSE IF( DESCY( INB_ )DESCYREF( INB_ ) ) THEN
2519 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( inb_ )
'
2520.NE.
ELSE IF( DESCY( MB_ )DESCYREF( MB_ ) ) THEN
2521 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( mb_ )
'
2522.NE.
ELSE IF( DESCY( NB_ )DESCYREF( NB_ ) ) THEN
2523 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( nb_ )
'
2524.NE.
ELSE IF( DESCY( RSRC_ )DESCYREF( RSRC_ ) ) THEN
2525 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( rsrc_ )
'
2526.NE.
ELSE IF( DESCY( CSRC_ )DESCYREF( CSRC_ ) ) THEN
2527 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( csrc_ )
'
2528.NE.
ELSE IF( DESCY( CTXT_ )DESCYREF( CTXT_ ) ) THEN
2529 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( ctxt_ )
'
2530.NE.
ELSE IF( DESCY( LLD_ )DESCYREF( LLD_ ) ) THEN
2531 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( lld_ )
'
2532.NE.
ELSE IF( INCYINCYREF ) THEN
2533 WRITE( ARGNAME, FMT = '(a)
' ) 'incy
'
2538 CALL IGSUM2D( ICTXT, 'all
', ' ', 1, 1, INFO, 1, -1, 0 )
2540.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
2542.NE.
IF( INFO0 ) THEN
2543 WRITE( NOUT, FMT = 9999 ) ARGNAME, SNAME
2545 WRITE( NOUT, FMT = 9998 ) SNAME
2552 9999 FORMAT( 2X, ' ***** input-only
parameter check:
', A,
2553 $ ' failed changed
', A, ' *****
' )
2554 9998 FORMAT( 2X, ' ***** input-only
parameter check:
', A,
2562 SUBROUTINE PZBLAS2TSTCHK( ICTXT, NOUT, NROUT, UPLO, TRANS, DIAG,
2563 $ M, N, ALPHA, A, PA, IA, JA, DESCA, X,
2564 $ PX, IX, JX, DESCX, INCX, BETA, Y, PY,
2565 $ IY, JY, DESCY, INCY, THRESH, ROGUE,
2574 CHARACTER*1 DIAG, TRANS, UPLO
2575 INTEGER IA, ICTXT, INCX, INCY, INFO, IX, IY, JA, JX,
2576 $ JY, M, N, NOUT, NROUT
2578 COMPLEX*16 ALPHA, BETA, ROGUE
2581 INTEGER DESCA( * ), DESCX( * ), DESCY( * )
2582 DOUBLE PRECISION WORK( * )
2583 COMPLEX*16 A( * ), PA( * ), PX( * ), PY( * ), X( * ),
2799 DOUBLE PRECISION RZERO
2800 PARAMETER ( RZERO = 0.0D+0 )
2801 COMPLEX*16 ONE, ZERO
2802 PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ),
2803 $ ZERO = ( 0.0D+0, 0.0D+0 ) )
2804 INTEGER BLOCK_CYCLIC_2D_INB, CSRC_, CTXT_, DLEN_,
2805 $ DTYPE_, IMB_, INB_, LLD_, MB_, M_, NB_, N_,
2807 PARAMETER ( BLOCK_CYCLIC_2D_INB = 2, DLEN_ = 11,
2808 $ DTYPE_ = 1, CTXT_ = 2, M_ = 3, N_ = 4,
2809 $ IMB_ = 5, INB_ = 6, MB_ = 7, NB_ = 8,
2810 $ RSRC_ = 9, CSRC_ = 10, LLD_ = 11 )
2813 INTEGER I, MYCOL, MYROW, NPCOL, NPROW
2814 DOUBLE PRECISION ERR
2821 EXTERNAL BLACS_GRIDINFO, PB_ZLASET, PZCHKMIN, PZCHKVIN,
2822 $ PZMVCH, PZTRMV, PZVMCH, PZVMCH2, ZTRSV
2829 INTRINSIC DCMPLX, DBLE
2837.LE..OR..LE.
IF( ( M0 )( N0 ) )
2842 CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL )
2848.EQ.
IF( NROUT1 ) THEN
2854 CALL PZMVCH( ICTXT, TRANS, M, N, ALPHA, A, IA, JA, DESCA, X,
2855 $ IX, JX, DESCX, INCX, BETA, Y, PY, IY, JY, DESCY,
2856 $ INCY, WORK, ERR, IERR( 3 ) )
2858.NE.
IF( IERR( 3 )0 ) THEN
2859.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2860 $ WRITE( NOUT, FMT = 9997 )
2861.GT.
ELSE IF( ERRDBLE( THRESH ) ) THEN
2862.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2863 $ WRITE( NOUT, FMT = 9996 ) ERR
2868 CALL PZCHKMIN( ERR, M, N, A, PA, IA, JA, DESCA, IERR( 1 ) )
2869 IF( LSAME( TRANS, 'n
' ) ) THEN
2870 CALL PZCHKVIN( ERR, N, X, PX, IX, JX, DESCX, INCX,
2873 CALL PZCHKVIN( ERR, M, X, PX, IX, JX, DESCX, INCX,
2877.EQ.
ELSE IF( NROUT2 ) THEN
2883 CALL PZMVCH( ICTXT, 'no transpose
', N, N, ALPHA, A, IA, JA,
2884 $ DESCA, X, IX, JX, DESCX, INCX, BETA, Y, PY, IY,
2885 $ JY, DESCY, INCY, WORK, ERR, IERR( 3 ) )
2887.NE.
IF( IERR( 3 )0 ) THEN
2888.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2889 $ WRITE( NOUT, FMT = 9997 )
2890.GT.
ELSE IF( ERRDBLE( THRESH ) ) THEN
2891.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2892 $ WRITE( NOUT, FMT = 9996 ) ERR
2897 IF( LSAME( UPLO, 'l
' ) ) THEN
2898 CALL PB_ZLASET( 'upper
', N-1, N-1, 0, ROGUE, ROGUE,
2899 $ A( IA+JA*DESCA( M_ ) ), DESCA( M_ ) )
2901 CALL PB_ZLASET( 'lower
', N-1, N-1, 0, ROGUE, ROGUE,
2902 $ A( IA+1+(JA-1)*DESCA( M_ ) ), DESCA( M_ ) )
2904 CALL PZCHKMIN( ERR, N, N, A, PA, IA, JA, DESCA, IERR( 1 ) )
2905 CALL PZCHKVIN( ERR, N, X, PX, IX, JX, DESCX, INCX, IERR( 2 ) )
2907.EQ.
ELSE IF( NROUT3 ) THEN
2913 CALL PZMVCH( ICTXT, TRANS, N, N, ONE, A, IA, JA, DESCA, Y, IX,
2914 $ JX, DESCX, INCX, ZERO, X, PX, IX, JX, DESCX, INCX,
2915 $ WORK, ERR, IERR( 2 ) )
2917.NE.
IF( IERR( 2 )0 ) THEN
2918.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2919 $ WRITE( NOUT, FMT = 9997 )
2920.GT.
ELSE IF( ERRDBLE( THRESH ) ) THEN
2921.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2922 $ WRITE( NOUT, FMT = 9996 ) ERR
2927 IF( LSAME( UPLO, 'l
' ) ) THEN
2928 IF( LSAME( DIAG, 'n
' ) ) THEN
2929 CALL PB_ZLASET( 'upper
', N-1, N-1, 0, ROGUE, ROGUE,
2930 $ A( IA+JA*DESCA( M_ ) ), DESCA( M_ ) )
2932 CALL PB_ZLASET( 'upper
', N, N, 0, ROGUE, ONE,
2933 $ A( IA+(JA-1)*DESCA( M_ ) ), DESCA( M_ ) )
2936 IF( LSAME( DIAG, 'n
' ) ) THEN
2937 CALL PB_ZLASET( 'lower
', N-1, N-1, 0, ROGUE, ROGUE,
2938 $ A( IA+1+(JA-1)*DESCA( M_ ) ),
2941 CALL PB_ZLASET( 'lower
', N, N, 0, ROGUE, ONE,
2942 $ A( IA+(JA-1)*DESCA( M_ ) ), DESCA( M_ ) )
2945 CALL PZCHKMIN( ERR, N, N, A, PA, IA, JA, DESCA, IERR( 1 ) )
2947.EQ.
ELSE IF( NROUT4 ) THEN
2953 CALL ZTRSV( UPLO, TRANS, DIAG, N, A( IA+(JA-1)*DESCA( M_ ) ),
2954 $ DESCA( M_ ), X( IX+(JX-1)*DESCX( M_ ) ), INCX )
2955 CALL PZTRMV( UPLO, TRANS, DIAG, N, PA, IA, JA, DESCA, PX, IX,
2957 CALL PZMVCH( ICTXT, TRANS, N, N, ONE, A, IA, JA, DESCA, X, IX,
2958 $ JX, DESCX, INCX, ZERO, Y, PX, IX, JX, DESCX, INCX,
2959 $ WORK, ERR, IERR( 2 ) )
2961.NE.
IF( IERR( 2 )0 ) THEN
2962.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2963 $ WRITE( NOUT, FMT = 9997 )
2964.GT.
ELSE IF( ERRDBLE( THRESH ) ) THEN
2965.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
2966 $ WRITE( NOUT, FMT = 9996 ) ERR
2971 IF( LSAME( UPLO, 'l
' ) ) THEN
2972 IF( LSAME( DIAG, 'n
' ) ) THEN
2973 CALL PB_ZLASET( 'upper', n-1, n-1, 0, rogue, rogue,
2974 $ a( ia+ja*desca( m_ ) ), desca( m_ ) )
2976 CALL pb_zlaset(
'Upper', n, n, 0, rogue, one,
2977 $ a( ia+(ja-1)*desca( m_ ) ), desca( m_ ) )
2980 IF(
lsame( diag,
'N' ) )
THEN
2981 CALL pb_zlaset(
'Lower', n-1, n-1, 0, rogue, rogue,
2982 $ a( ia+1+(ja-1)*desca( m_ ) ),
2985 CALL pb_zlaset(
'Lower', n, n, 0, rogue, one,
2986 $ a( ia+(ja-1)*desca( m_ ) ), desca( m_ ) )
2989 CALL pzchkmin( err, n, n, a, pa, ia, ja, desca, ierr( 1 ) )
2991 ELSE IF( nrout.EQ.5 )
THEN
2997 CALL pzvmch( ictxt,
'No transpose',
'Ge', m, n, alpha, x, ix,
2998 $ jx, descx, incx, y, iy, jy, descy, incy, a, pa,
2999 $ ia, ja, desca, work, err, ierr( 1 ) )
3000 IF( ierr( 1 ).NE.0 )
THEN
3001 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3002 $
WRITE( nout, fmt = 9997 )
3003 ELSE IF( err.GT.dble( thresh ) )
THEN
3004 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3005 $
WRITE( nout, fmt = 9996 ) err
3010 CALL pzchkvin( err, m, x, px, ix, jx, descx, incx, ierr( 2 ) )
3011 CALL pzchkvin( err, n, y, py, iy, jy, descy, incy, ierr( 3 ) )
3013 ELSE IF( nrout.EQ.6 )
THEN
3019 CALL pzvmch( ictxt,
'Conjugate transpose',
'Ge', m, n, alpha,
3021 $ a, pa, ia, ja, desca, work, err, ierr( 1 ) )
3022 IF( ierr( 1 ).NE.0 )
THEN
3023 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3024 $
WRITE( nout, fmt = 9997 )
3025 ELSE IF( err.GT.dble( thresh ) )
THEN
3026 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3027 $
WRITE( nout, fmt = 9996 ) err
3032 CALL pzchkvin( err, m, x, px, ix, jx, descx, incx, ierr( 2 ) )
3033 CALL pzchkvin( err, n, y, py, iy, jy, descy, incy, ierr( 3 ) )
3035 ELSE IF( nrout.EQ.7 )
THEN
3041 alpha1 = dcmplx( dble( alpha ), rzero )
3042 CALL pzvmch( ictxt,
'Conjugate transpose', uplo, n, n, alpha1,
3043 $ x, ix, jx, descx, incx, x, ix, jx, descx, incx, a,
3044 $ pa, ia, ja, desca, work, err, ierr( 1 ) )
3045 IF( ierr( 1 ).NE.0 )
THEN
3046 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3047 $
WRITE( nout, fmt = 9997 )
3048 ELSE IF( err.GT.dble( thresh ) )
THEN
3049 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3050 $
WRITE( nout, fmt = 9996 ) err
3055 CALL pzchkvin( err, n, x, px, ix, jx, descx, incx, ierr( 2 ) )
3057 ELSE IF( nrout.EQ.8 )
THEN
3063 CALL pzvmch2( ictxt, uplo, n, n, alpha, x, ix, jx, descx, incx,
3064 $ y, iy, jy, descy, incy, a, pa, ia, ja, desca,
3065 $ work, err, ierr( 1 ) )
3066 IF( ierr( 1 ).NE.0 )
THEN
3067 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3068 $
WRITE( nout, fmt = 9997 )
3069 ELSE IF( err.GT.dble( thresh ) )
THEN
3070 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3071 $
WRITE( nout, fmt = 9996 ) err
3076 CALL pzchkvin( err, n, x, px, ix, jx, descx, incx
3077 CALL pzchkvin( err, n, y, py, iy, jy, descy, incy, ierr( 3 ) )
3081 IF( ierr( 1 ).NE.0 )
THEN
3083 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3084 $
WRITE( nout, fmt = 9999 )
'A'
3087 IF( ierr( 2 ).NE.0 )
THEN
3089 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3090 $
WRITE( nout, fmt = 9998 )
'X'
3093 IF( ierr( 3 ).NE.0 )
THEN
3095 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3096 $
WRITE( nout, fmt = 9998 )
'Y'
3099 9999
FORMAT( 2x,
' ***** ERROR: Matrix operand ', a,
3100 $
' is incorrect.' )
3101 9998
FORMAT( 2x,
' ***** ERROR: Vector operand ', a,
3102 $
' is incorrect.' )
3103 9997
FORMAT( 2x,
' ***** FATAL ERROR - Computed result is less ',
3104 $
'than half accurate *****' )
3105 9996
FORMAT( 2x,
' ***** Test completed with maximum test ratio: ',
3106 $ f11.5,
' SUSPECT *****' )
end diagonal values have been computed in the(sparse) matrix id.SOL
logical function lsame(ca, cb)
LSAME
subroutine blacs_gridinit(cntxt, c, nprow, npcol)
subroutine zgebr2d(contxt, scope, top, m, n, a, lda)
subroutine sgebr2d(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)
double precision function pdlamch(ictxt, cmach)
subroutine pzchkarg2(ictxt, nout, sname, uplo, trans, diag, m, n, alpha, ia, ja, desca, ix, jx, descx, incx, beta, iy, jy, descy, incy, info)
subroutine pzblas2tstchke(ltest, inout, nprocs)
subroutine pzblas2tstchk(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 pzbla2tstinfo(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 pzmprnt(ictxt, nout, m, n, a, lda, irprnt, icprnt, cmatnm)
subroutine pzchkvin(errmax, n, x, px, ix, jx, descx, incx, info)
subroutine pzipset(toggle, n, a, ia, ja, desca)
subroutine pzlaset(uplo, m, n, alpha, beta, a, ia, ja, desca)
subroutine pb_zlaset(uplo, m, n, ioffd, alpha, beta, a, lda)
subroutine pb_zchekpad(ictxt, mess, m, n, a, lda, ipre, ipost, chkval)
subroutine pzlascal(type, m, n, alpha, a, ia, ja, desca)
subroutine pb_zfillpad(ictxt, m, n, a, lda, ipre, ipost, chkval)
subroutine pzchkmin(errmax, m, n, a, pa, ia, ja, desca, info)
subroutine pzchkvout(n, x, px, ix, jx, descx, incx, info)
subroutine pb_pzlaprnt(m, n, a, ia, ja, desca, irprnt, icprnt, cmatnm, nout, work)
subroutine pb_zlascal(uplo, m, n, ioffd, alpha, a, lda)
subroutine pzvmch(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 pzvprnt(ictxt, nout, n, x, incx, irprnt, icprnt, cvecnm)
subroutine pzlagen(inplace, aform, diag, offa, m, n, ia, ja, desca, iaseed, a, lda)
subroutine pzvmch2(ictxt, uplo, m, n, alpha, x, ix, jx, descx, incx, y, iy, jy, descy, incy, a, pa, ia, ja, desca, g, err, info)