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 )
188 EXTERNAL blacs_exit, blacs_get, blacs_gridexit,
189 $ blacs_gridinfo, blacs_gridinit, blacs_pinfo,
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 )
311 CALL blacs_gridinit( ictxt,
'Row-major', nprow, npcol )
312 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
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, ierr( 1 ) )
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 IF(
max( nrowa, ncola ).GT.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 $ (
max( nrowa, ncola ).GT.1 ) )
THEN
709 $
cmplx( real(
max( nrowa, ncola ) ) )
710 CALL pclascal(
'Upper', nrowa-1, ncola-1,
711 $ scale, mem( ipa ), ia, ja+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 IF( iverb.EQ.2 )
THEN
749 CALL pb_pclaprnt( nrowa, ncola, mem( ipa ), ia, ja,
750 $ desca, 0, 0,
'PARALLEL_INITIAL_A',
752 ELSE IF( iverb.GE.3 )
THEN
753 CALL pb_pclaprnt( ma, na, mem( ipa ), 1, 1, desca, 0,
754 $ 0,
'PARALLEL_INITIAL_A', nout,
758 IF( iverb.EQ.2 )
THEN
759 IF( incx.EQ.descx( m_ ) )
THEN
762 $
'PARALLEL_INITIAL_X', nout,
767 $
'PARALLEL_INITIAL_X', nout,
770 ELSE IF( iverb.GE.3 )
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 IF( iverb.EQ.2 )
THEN
778 IF( incy.EQ.descy( m_ ) )
THEN
781 $
'PARALLEL_INITIAL_Y', nout,
786 $
'PARALLEL_INITIAL_Y', nout,
789 ELSE IF( iverb.GE.3 )
THEN
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 ELSE IF( k.EQ.2 )
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 ELSE IF( k.EQ.3 )
THEN
823 CALL pctrmv( uplo, trans, diag, n, mem( ipa ), ia, ja,
824 $ desca, mem( ipx ), ix, jx, descx, incx )
826 ELSE IF( k.EQ.4 )
THEN
830 CALL pctrsv( uplo, trans, diag, n, mem( ipa ), ia, ja,
831 $ desca, mem( ipx ), ix, jx, descx, incx )
833 ELSE IF( k.EQ.5 )
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 ELSE IF( k.EQ.6 )
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 ELSE IF( k.EQ.7 )
THEN
853 IF(
cmplx( real( alpha ) ).NE.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 ELSE IF( k.EQ.8 )
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
887 $ mem( ipa-iprea ), desca( lld_ ), iprea,
891 $ mem( ipx-iprex ), descx( lld_ ), iprex,
894 IF( ycheck( k ) )
THEN
896 $ mem( ipy-iprey ), descy( lld_ ),
897 $ iprey, iposty, padval )
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 IF( mod( info, 2 ).EQ.1 )
THEN
911 ELSE IF( mod( info / 2, 2 ).EQ.1 )
THEN
913 ELSE IF( mod( info / 4, 2 ).EQ.1 )
THEN
915 ELSE IF( info.NE.0 )
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 IF( ierr( 4 ).NE.0 )
THEN
938 $
WRITE( nout, fmt = 9982 )
'PARALLEL_A',
942 IF( ierr( 5 ).NE.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 IF( ierr( 6 ).NE.0 )
THEN
953 $
WRITE( nout, fmt = 9982 )
'PARALLEL_Y',
960 IF( info.NE.0 .OR. ierr( 1 ).NE.0 .OR.
961 $ ierr( 2 ).NE.0 .OR. ierr( 3 ).NE.0 .OR.
962 $ ierr( 4 ).NE.0 .OR. ierr( 5 ).NE.0 .OR.
963 $ ierr( 6 ).NE.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 IF( iverb.GE.1 .AND. errflg )
THEN
977 IF( ierr( 4 ).NE.0 .OR. iverb.GE.3 )
THEN
978 CALL pcmprnt( ictxt, nout, ma, na, mem( ipmata ),
979 $ lda, 0, 0,
'SERIAL_A' )
981 $ 0, 0,
'PARALLEL_A', nout,
983 ELSE IF( ierr( 1 ).NE.0 )
THEN
984 IF( ( nrowa.GT.0 ).AND.( ncola.GT.0 ) )
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 IF( ierr( 5 ).NE.0 .OR. iverb.GE.3 )
THEN
993 CALL pcmprnt( ictxt, nout, mx, nx, mem( ipmatx ),
994 $ ldx, 0, 0,
'SERIAL_X' )
996 $ 0, 0,
'PARALLEL_X', nout,
998 ELSE IF( ierr( 2 ).NE.0 )
THEN
1000 $
CALL pcvprnt( ictxt, nout, nlx,
1001 $ mem( ipmatx+ix-1+(jx-1)*ldx ),
1002 $ incx, 0, 0,
'SERIAL_X' )
1003 IF( incx.EQ.descx( m_ ) )
THEN
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
1053 CALL blacs_gridexit( ictxt )
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: ', i12 )
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: ',
1139 SUBROUTINE pcbla2tstinfo( SUMMRY, NOUT, NMAT, DIAGVAL, TRANVAL,
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 ),
1184 $ rscaval( ldval ), rscxval( ldval ),
1185 $ rscyval( ldval ), work( * )
1472 PARAMETER ( NIN = 11, nsubs = 8 )
1481 CHARACTER*79 USRINFO
1484 EXTERNAL blacs_abort, blacs_get, blacs_gridexit,
1485 $ blacs_gridinit, blacs_setup, cgebr2d, cgebs2d,
1486 $
icopy, igebr2d, igebs2d, sgebr2d, sgebs2d
1494 INTRINSIC char, ichar,
max,
min
1497 CHARACTER*7 SNAMES( NSUBS )
1498 COMMON /SNAMEC/SNAMES
1509 OPEN( nin, file=
'PCBLAS2TST.dat', status=
'OLD' )
1510 READ( nin, fmt = * ) summry
1515 READ( nin, fmt = 9999 ) usrinfo
1519 READ( nin, fmt = * ) summry
1520 READ( nin, fmt = * ) nout
1521 IF( nout.NE.0 .AND. nout.NE.6 )
1522 $
OPEN( nout, file = summry, status =
'UNKNOWN' )
1528 READ( nin, fmt = * ) sof
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 )
1576 READ( nin, fmt = * ) alpha
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 )
1668 CALL blacs_gridinit( ictxt,
'Row-major', 1, nprocs )
1676 CALL sgebs2d( ictxt,
'All',
' ', 1, 1, thresh, 1 )
1677 CALL cgebs2d( ictxt,
'All',
' ', 1, 1, alpha, 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 ), 1 )
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( i ), 1 )
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 )
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 IF( work( i ).EQ.1 )
THEN
1882 IF( work( i ).EQ.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 IF( work( i ).EQ.1 )
THEN
1975 ltest( j ) = .false.
1982 CALL blacs_gridexit( ictxt )
1986 120
WRITE( nout, fmt = 9997 )
1988 IF( nout.NE.6 .AND. nout.NE.0 )
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 : ', i6 )
2013 9982
FORMAT( 2x,
'Alpha : (', g16.6,
2015 9981
FORMAT( 2x,
'Beta : (', g16.6,
2017 9980
FORMAT( 2x,
'Threshold value : ', g16.6 )
2018 9979
FORMAT( 2x,
'Logical block size : ', i6 )
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,
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 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
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 IF( info.EQ.0 )
THEN
2418 descaref( i ) = desca( i )
2423 descxref( i ) = descx( i )
2430 descyref( i ) = descy( i )
2439 IF( .NOT. lsame( diag, diagref ) )
THEN
2440 WRITE( argname, fmt =
'(A)' )
'DIAG'
2441 ELSE IF( .NOT. lsame( trans, transref ) )
THEN
2442 WRITE( argname, fmt =
'(A)' )
'TRANS'
2443 ELSE IF( .NOT. lsame( uplo, uploref ) )
THEN
2444 WRITE( argname, fmt =
'(A)' )
'UPLO'
2445 ELSE IF( m.NE.mref )
THEN
2446 WRITE( argname, fmt =
'(A)' )
'M'
2447 ELSE IF( n.NE.nref )
THEN
2448 WRITE( argname, fmt =
'(A)' )
'N'
2449 ELSE IF( alpha.NE.alpharef )
THEN
2450 WRITE( argname, fmt =
'(A)' )
'ALPHA'
2451 ELSE IF( ia.NE.iaref )
THEN
2452 WRITE( argname, fmt =
'(A)' )
'IA'
2453 ELSE IF( ja.NE.jaref )
THEN
2454 WRITE( argname, fmt =
'(A)' )
'JA'
2455 ELSE IF( desca( dtype_ ).NE.descaref( dtype_ ) )
THEN
2456 WRITE( argname, fmt =
'(A)' )
'DESCA( DTYPE_ )'
2457 ELSE IF( desca( m_ ).NE.descaref( m_ ) )
THEN
2458 WRITE( argname, fmt =
'(A)' )
'DESCA( M_ )'
2459 ELSE IF( desca( n_ ).NE.descaref( n_ ) )
THEN
2460 WRITE( argname, fmt =
'(A)' )
'DESCA( N_ )'
2461 ELSE IF( desca( imb_ ).NE.descaref( imb_ ) )
THEN
2462 WRITE( argname, fmt =
'(A)' )
'DESCA( IMB_ )'
2463 ELSE IF( desca( inb_ ).NE.descaref( inb_ ) )
THEN
2464 WRITE( argname, fmt =
'(A)' )
'DESCA( INB_ )'
2465 ELSE IF( desca( mb_ ).NE.descaref( mb_ ) )
THEN
2466 WRITE( argname, fmt =
'(A)' )
'DESCA( MB_ )'
2467 ELSE IF( desca( nb_ ).NE.descaref( nb_ ) )
THEN
2468 WRITE( argname, fmt =
'(A)' )
'DESCA( NB_ )'
2469 ELSE IF( desca( rsrc_ ).NE.descaref( rsrc_ ) )
THEN
2470 WRITE( argname, fmt =
'(A)' )
'DESCA( RSRC_ )'
2471 ELSE IF( desca( csrc_ ).NE.descaref( csrc_ ) )
THEN
2472 WRITE( argname, fmt =
'(A)' )
'DESCA( CSRC_ )'
2473 ELSE IF( desca( ctxt_ ).NE.descaref( ctxt_ ) )
THEN
2474 WRITE( argname, fmt =
'(A)' )
'DESCA( CTXT_ )'
2475 ELSE IF( desca( lld_ ).NE.descaref( lld_ ) )
THEN
2476 WRITE( argname, fmt =
'(A)' )
'DESCA( LLD_ )'
2477 ELSE IF( ix.NE.ixref )
THEN
2478 WRITE( argname, fmt =
'(A)' )
'IX'
2479 ELSE IF( jx.NE.jxref )
THEN
2480 WRITE( argname, fmt =
'(A)' )
'JX'
2481 ELSE IF( descx( dtype_ ).NE.descxref( dtype_ ) )
THEN
2482 WRITE( argname, fmt =
'(A)' )
'DESCX( DTYPE_ )'
2483 ELSE IF( descx( m_ ).NE.descxref( m_ ) )
THEN
2484 WRITE( argname, fmt =
'(A)' )
'DESCX( M_ )'
2485 ELSE IF( descx( n_ ).NE.descxref( n_ ) )
THEN
2486 WRITE( argname, fmt =
'(A)' )
'DESCX( N_ )'
2487 ELSE IF( descx( imb_ ).NE.descxref( imb_ ) )
THEN
2488 WRITE( argname, fmt =
'(A)' )
'DESCX( IMB_ )'
2489 ELSE IF( descx( inb_ ).NE.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 ELSE IF( descy( inb_ ).NE.descyref( inb_ ) )
THEN
2520 WRITE( argname, fmt =
'(A)' )
'DESCY( INB_ )'
2521 ELSE IF( descy( mb_ ).NE.descyref( mb_ ) )
THEN
2522 WRITE( argname, fmt =
'(A)' )
'DESCY( MB_ )'
2523 ELSE IF( descy( nb_ ).NE.descyref( nb_ ) )
THEN
2524 WRITE( argname, fmt =
'(A)' )
'DESCY( NB_ )'
2525 ELSE IF( descy( rsrc_ ).NE.descyref( rsrc_ ) )
THEN
2526 WRITE( argname, fmt =
'(A)' )
'DESCY( RSRC_ )'
2527 ELSE IF( descy( csrc_ ).NE.descyref( csrc_ ) )
THEN
2528 WRITE( argname, fmt =
'(A)' )
'DESCY( CSRC_ )'
2529 ELSE IF( descy( ctxt_ ).NE.descyref( ctxt_ ) )
THEN
2530 WRITE( argname, fmt =
'(A)' )
'DESCY( CTXT_ )'
2531 ELSE IF( descy( lld_ ).NE.descyref( lld_ ) )
THEN
2532 WRITE( argname, fmt =
'(A)' )
'DESCY( LLD_ )'
2533 ELSE IF( incy.NE.incyref )
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,
2563 SUBROUTINE pcblas2tstchk( ICTXT, NOUT, NROUT, UPLO, TRANS, DIAG,
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( * )
2584 COMPLEX A( * ), PA( * ), PX( * ), PY( * ), X( * ),
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
2830 INTRINSIC CMPLX, MIN, REAL
2838 IF( ( m.LE.0 ).OR.( n.LE.0 ) )
2843 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
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_ ) )
2977 CALL pb_claset(
'Upper', n, n, 0, rogue, one,
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 )
3028 $
WRITE( nout, fmt = 9996 ) err
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 IF( ierr( 1 ).NE.0 )
THEN
3047 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3048 $
WRITE( nout, fmt = 9997 )
3049 ELSE IF( err.GT.thresh )
THEN
3050 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3051 $
WRITE( nout, fmt = 9996 ) err
3056 CALL pcchkvin( err, n, x, px, ix, jx, descx, incx, ierr( 2 ) )
3058 ELSE IF( nrout.EQ.8 )
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 IF( ierr( 1 ).NE.0 )
THEN
3068 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3069 $
WRITE( nout, fmt = 9997 )
3070 ELSE IF( err.GT.thresh )
THEN
3071 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
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 IF( ierr( 1 ).NE.0 )
THEN
3084 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3085 $
WRITE( nout, fmt = 9999 )
'A'
3088 IF( ierr( 2 ).NE.0 )
THEN
3090 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3091 $
WRITE( nout, fmt = 9998 )
'X'
3094 IF( ierr( 3 ).NE.0 )
THEN
3096 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
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 *****' )