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 $ 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*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 $ 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*16 mem( memsiz )
188 EXTERNAL blacs_exit, blacs_get, blacs_gridexit,
189 $ blacs_gridinfo, blacs_gridinit, blacs_pinfo,
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,
259 $ jxval, incxval, myval, nyval, imbyval,
260 $ mbyval, inbyval, nbyval, rscyval, cscyval,
261 $ iyval, jyval, incyval, maxtests, ngrids,
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 )
310 CALL blacs_gridinit( ictxt,
'Row-major', nprow, npcol )
311 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
316 IF( myrow.GE.nprow .OR. mycol.GE.npcol )
369 WRITE( nout, fmt = * )
370 WRITE( nout, fmt = 9996 ) tstcnt, nprow, npcol
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 )
381 WRITE( nout, fmt = 9991 ) ia, ja, ma, na, imba, inba,
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 IF( .NOT.
lsame( diag ,
'U' ).AND.
420 $ .NOT.
lsame( diag ,
'N' ) )
THEN
422 $
WRITE( nout, fmt = 9997 ) trans
423 WRITE( nout, fmt = 9997 )
'DIAG'
431 $ block_cyclic_2d_inb, ma, na, imba, inba,
432 $ mba, nba, rsrca, csrca, mpa, nqa, iprea,
433 $ imida, iposta, igap, gapmul, ierr( 1 ) )
435 $ block_cyclic_2d_inb, mx, nx, imbx, inbx,
436 $ mbx, nbx, rsrcx, csrcx, incx, mpx, nqx,
437 $ iprex, imidx, ipostx, igap, gapmul,
440 $ block_cyclic_2d_inb, my, ny, imby, inby,
441 $ mby, nby, rsrcy, csrcy, incy, mpy, nqy,
442 $ iprey, imidy, iposty, igap, gapmul,
445 IF( ierr( 1 ).GT.0 .OR. ierr( 2 ).GT.0 .OR.
446 $ ierr( 3 ).GT.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 )
472 $ real( dblesz ), real( zplxsz ) ) - 1 +
475 $
max( imby, mby ) ) )
477 IF( memreqd.GT.memsiz )
THEN
479 $
WRITE( nout, fmt = 9986 ) memreqd*zplxsz
485 CALL igsum2d( ictxt,
'All',
' ', 1, 1, ierr, 1, -1, 0 )
487 IF( ierr( 1 ).GT.0 )
THEN
489 $
WRITE( nout, fmt = 9987 )
500 IF( .NOT.ltest( k ) )
504 WRITE( nout, fmt = * )
505 WRITE( nout, fmt = 9985 ) snames( k )
513 IF(
lsame( trans,
'N' ) )
THEN
520 ELSE IF( k.EQ.5 .OR. k.EQ.6 )
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 IF( ierr( 1 ).NE.0 .OR. ierr( 2 ).NE.0 .OR.
542 $ ierr( 3 ).NE.0 )
THEN
543 kskip( k ) = kskip( k ) + 1
549 IF( k.EQ.2 .OR. k.EQ.7 .OR. k.EQ.8 )
THEN
553 ELSE IF( ( k.EQ.4 ).AND.(
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
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 ),
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 IF( ( k.EQ.2 .OR. k.EQ.7 .OR. k.EQ.8 ).AND.
609 $ (
max( nrowa, ncola ).GT.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 ELSE IF( k.EQ.3 .OR. k.EQ.4 )
THEN
642 IF(
lsame( uplo,
'L' ) )
THEN
646 IF(
lsame( diag,
'N' ) )
THEN
648 IF(
max( nrowa, ncola ).GT.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 $ (
max( nrowa, ncola ).GT.1 ) )
THEN
669 $ dcmplx( dble(
max( nrowa, ncola ) ) )
670 CALL pzlascal(
'Lower', nrowa-1, ncola-1,
671 $ scale, mem( ipa ), ia+1, ja,
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,
700 $ mem( ipa ), ia, ja, desca )
701 CALL pb_zlaset(
'Lower', nrowa, ncola, 0, zero,
703 $ mem( ipmata+ia-1+(ja-1)*lda ),
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 ),
726 $ desca( lld_ ), iprea, iposta, padval )
728 CALL pb_zfillpad( ictxt, mpx, nqx, mem( ipx-iprex ),
729 $ descx( lld_ ), iprex, ipostx, padval )
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', nout,
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,
804 $ beta, mem( ipy ), iy, jy, descy, incy )
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 ELSE IF( k.EQ.3 )
THEN
822 CALL pztrmv( uplo, trans, diag, n, mem( ipa ), ia, ja,
823 $ desca, mem( ipx ), ix, jx, descx, incx )
825 ELSE IF( k.EQ.4 )
THEN
829 CALL pztrsv( uplo, trans, diag, n, mem( ipa ), ia, ja,
830 $ desca, mem( ipx ), ix, jx, descx, incx )
832 ELSE IF( k.EQ.5 )
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 ELSE IF( k.EQ.6 )
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 ELSE IF( k.EQ.7 )
THEN
852 IF( dcmplx( dble( alpha ) ).NE.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 ELSE IF( k.EQ.8 )
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
886 $ mem( ipa-iprea ), desca( lld_ ), iprea,
890 $ mem( ipx-iprex ), descx( lld_ ), iprex,
893 IF( ycheck( k ) )
THEN
895 $ mem( ipy-iprey ), descy( lld_ ),
896 $ iprey, iposty, padval )
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 IF( mod( info, 2 ).EQ.1 )
THEN
910 ELSE IF( mod( info / 2, 2 ).EQ.1 )
THEN
912 ELSE IF( mod( info / 4, 2 ).EQ.1 )
THEN
914 ELSE IF( info.NE.0 )
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 IF( ierr( 4 ).NE.0 )
THEN
937 $
WRITE( nout, fmt = 9982 )
'PARALLEL_A',
941 IF( ierr( 5 ).NE.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 IF( ierr( 6 ).NE.0 )
THEN
952 $
WRITE( nout, fmt = 9982 )
'PARALLEL_Y',
959 IF( info.NE.0 .OR. ierr( 1 ).NE.0 .OR.
960 $ ierr( 2 ).NE.0 .OR. ierr( 3 ).NE.0 .OR.
961 $ ierr( 4 ).NE.0 .OR. ierr( 5 ).NE.0 .OR.
962 $ ierr( 6 ).NE.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 IF( iverb.GE.1 .AND. errflg )
THEN
976 IF( ierr( 4 ).NE.0 .OR. iverb.GE.3 )
THEN
977 CALL pzmprnt( ictxt, nout, ma, na, mem( ipmata ),
978 $ lda, 0, 0,
'SERIAL_A' )
980 $ 0, 0,
'PARALLEL_A', nout,
982 ELSE IF( ierr( 1 ).NE.0 )
THEN
983 IF( ( nrowa.GT.0 ).AND.( ncola.GT.0 ) )
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 IF( ierr( 5 ).NE.0 .OR. iverb.GE.3 )
THEN
992 CALL pzmprnt( ictxt, nout, mx, nx, mem( ipmatx ),
993 $ ldx, 0, 0,
'SERIAL_X' )
995 $ 0, 0,
'PARALLEL_X', nout,
997 ELSE IF( ierr( 2 ).NE.0 )
THEN
999 $
CALL pzvprnt( ictxt, nout, nlx,
1000 $ mem( ipmatx+ix-1+(jx-1)*ldx ),
1001 $ incx, 0, 0,
'SERIAL_X' )
1002 IF( incx.EQ.descx( m_ ) )
THEN
1004 $ descx, 0, 0,
'PARALLEL_X',
1005 $ nout, mem( ipmatx ) )
1008 $ descx, 0, 0,
'PARALLEL_X',
1009 $ nout, mem( ipmatx ) )
1012 IF( ycheck( k ) )
THEN
1013 IF( ierr( 6 ).NE.0 .OR. iverb.GE.3 )
THEN
1014 CALL pzmprnt( ictxt, nout, my, ny,
1015 $ mem( ipmaty ), ldy, 0, 0,
1018 $ descy, 0, 0,
'PARALLEL_Y',
1019 $ nout, mem( ipmatx ) )
1020 ELSE IF( ierr( 3 ).NE.0 )
THEN
1022 $
CALL pzvprnt( ictxt, nout, nly,
1023 $ mem( ipmaty+iy-1+(jy-1)*ldy ),
1024 $ incy, 0, 0,
'SERIAL_Y' )
1025 IF( incy.EQ.descy( m_ ) )
THEN
1027 $ descy, 0, 0,
'PARALLEL_Y',
1028 $ nout, mem( ipmatx ) )
1031 $ descy, 0, 0,
'PARALLEL_Y',
1032 $ nout, mem( ipmatx ) )
1040 IF( sof.AND.errflg )
1045 40
IF( iam.EQ.0 )
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,
' M N UPLO TRANS DIAG' )
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 IF( nout.NE.0 .AND. nout.NE.6 )
1521 $
OPEN( nout, file = summry, status =
'UNKNOWN' )
1527 READ( nin, fmt = * ) sof
1531 READ( nin, fmt = * ) tee
1535 READ( nin, fmt = * ) iverb
1536 IF( iverb.LT.0 .OR. iverb.GT.3 )
1541 READ( nin, fmt = * ) igap
1547 READ( nin, fmt = * ) thresh
1553 READ( nin, fmt = * ) nblog
1559 READ( nin, fmt = * ) ngrids
1560 IF( ngrids.LT.1 .OR. ngrids.GT.ldpval )
THEN
1561 WRITE( nout, fmt = 9998 )
'Grids', ldpval
1563 ELSE IF( ngrids.GT.ldqval )
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 IF( nmat.LT.1 .OR. nmat.GT.ldval )
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 IF( snamet.EQ.snames( i ) )
1639 WRITE( nout, fmt = 9995 )snamet
1655 IF( nprocs.LT.1 )
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 )
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 )
1797 $
'Tests of the complex double precision '//
1799 WRITE( nout, fmt = * )
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 = 9991 ) ( pval(i), i = 6,
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 )
1856 CALL blacs_gridinit( ictxt,
'Row-major', 1, nprocs )
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 IF( work( i ).EQ.1 )
THEN
1881 IF( work( i ).EQ.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 IF( work( i ).EQ.1 )
THEN
1974 ltest( j ) = .false.
1981 CALL blacs_gridexit( ictxt )
1985 120
WRITE( nout, fmt = 9997 )
1987 IF( nout.NE.6 .AND. nout.NE.0 )
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 )
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,
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 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
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 IF( info.EQ.0 )
THEN
2417 descaref( i ) = desca( i )
2422 descxref( i ) = descx( i )
2429 descyref( i ) = descy( i )
2438 IF( .NOT. lsame( diag, diagref ) )
THEN
2439 WRITE( argname, fmt =
'(A)' )
'DIAG'
2440 ELSE IF( .NOT. lsame( trans, transref ) )
THEN
2441 WRITE( argname, fmt =
'(A)' )
'TRANS'
2442 ELSE IF( .NOT. lsame( uplo, uploref ) )
THEN
2443 WRITE( argname, fmt =
'(A)' )
'UPLO'
2444 ELSE IF( m.NE.mref )
THEN
2445 WRITE( argname, fmt =
'(A)' )
'M'
2446 ELSE IF( n.NE.nref )
THEN
2447 WRITE( argname, fmt =
'(A)' )
'N'
2448 ELSE IF( alpha.NE.alpharef )
THEN
2449 WRITE( argname, fmt =
'(A)' )
'ALPHA'
2450 ELSE IF( ia.NE.iaref )
THEN
2451 WRITE( argname, fmt =
'(A)' )
'IA'
2452 ELSE IF( ja.NE.jaref )
THEN
2453 WRITE( argname, fmt =
'(A)' )
'JA'
2454 ELSE IF( desca( dtype_ ).NE.descaref( dtype_ ) )
THEN
2455 WRITE( argname, fmt =
'(A)' )
'DESCA( DTYPE_ )'
2456 ELSE IF( desca( m_ ).NE.descaref( m_ ) )
THEN
2457 WRITE( argname, fmt =
'(A)' )
'DESCA( M_ )'
2458 ELSE IF( desca( n_ ).NE.descaref( n_ ) )
THEN
2459 WRITE( argname, fmt =
'(A)' )
'DESCA( N_ )'
2460 ELSE IF( desca( imb_ ).NE.descaref( imb_ ) )
THEN
2461 WRITE( argname, fmt =
'(A)' )
'DESCA( IMB_ )'
2462 ELSE IF( desca( inb_ ).NE.descaref( inb_ ) )
THEN
2463 WRITE( argname, fmt =
'(A)' )
'DESCA( INB_ )'
2464 ELSE IF( desca( mb_ ).NE.descaref( mb_ ) )
THEN
2465 WRITE( argname, fmt =
'(A)' )
'DESCA( MB_ )'
2466 ELSE IF( desca( nb_ ).NE.descaref( nb_ ) )
THEN
2467 WRITE( argname, fmt =
'(A)' )
'DESCA( NB_ )'
2468 ELSE IF( desca( rsrc_ ).NE.descaref( rsrc_ ) )
THEN
2469 WRITE( argname, fmt =
'(A)' )
'DESCA( RSRC_ )'
2470 ELSE IF( desca( csrc_ ).NE.descaref( csrc_ ) )
THEN
2471 WRITE( argname, fmt =
'(A)' )
'DESCA( CSRC_ )'
2472 ELSE IF( desca( ctxt_ ).NE.descaref( ctxt_ ) )
THEN
2473 WRITE( argname, fmt =
'(A)' )
'DESCA( CTXT_ )'
2474 ELSE IF( desca( lld_ ).NE.descaref( lld_ ) )
THEN
2475 WRITE( argname, fmt =
'(A)' )
'DESCA( LLD_ )'
2476 ELSE IF( ix.NE.ixref )
THEN
2477 WRITE( argname, fmt =
'(A)' )
'IX'
2478 ELSE IF( jx.NE.jxref )
THEN
2479 WRITE( argname, fmt =
'(A)' )
'JX'
2480 ELSE IF( descx( dtype_ ).NE.descxref( dtype_ ) )
THEN
2481 WRITE( argname, fmt =
'(A)' )
'DESCX( DTYPE_ )'
2482 ELSE IF( descx( m_ ).NE.descxref( m_ ) )
THEN
2483 WRITE( argname, fmt =
'(A)' )
'DESCX( M_ )'
2484 ELSE IF( descx( n_ ).NE.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 ELSE IF( descx( csrc_ ).NE.descxref( csrc_ ) )
THEN
2497 WRITE( argname, fmt =
'(A)' )
'DESCX( CSRC_ )'
2498 ELSE IF( descx( ctxt_ ).NE.descxref( ctxt_ ) )
THEN
2499 WRITE( argname, fmt =
'(A)' )
'DESCX( CTXT_ )'
2500 ELSE IF( descx( lld_ ).NE.descxref( lld_ ) )
THEN
2501 WRITE( argname, fmt =
'(A)' )
'DESCX( LLD_ )'
2502 ELSE IF( incx.NE.incxref )
THEN
2503 WRITE( argname, fmt =
'(A)' )
'INCX'
2504 ELSE IF( beta.NE.betaref )
THEN
2505 WRITE( argname, fmt =
'(A)' )
'BETA'
2506 ELSE IF( iy.NE.iyref )
THEN
2507 WRITE( argname, fmt =
'(A)' )
'IY'
2508 ELSE IF( jy.NE.jyref )
THEN
2509 WRITE( argname, fmt =
'(A)' )
'JY'
2510 ELSE IF( descy( dtype_ ).NE.descyref( dtype_ ) )
THEN
2511 WRITE( argname, fmt =
'(A)' )
'DESCY( DTYPE_ )'
2512 ELSE IF( descy( m_ ).NE.descyref( m_ ) )
THEN
2513 WRITE( argname, fmt =
'(A)' )
'DESCY( M_ )'
2514 ELSE IF( descy( n_ ).NE.descyref( n_ ) )
THEN
2515 WRITE( argname, fmt =
'(A)' )
'DESCY( N_ )'
2516 ELSE IF( descy( imb_ ).NE.descyref( imb_ ) )
THEN
2517 WRITE( argname, fmt =
'(A)' )
'DESCY( IMB_ )'
2518 ELSE IF( descy( inb_ ).NE.descyref( inb_ ) )
THEN
2519 WRITE( argname, fmt =
'(A)' )
'DESCY( INB_ )'
2520 ELSE IF( descy( mb_ ).NE.descyref( mb_ ) )
THEN
2521 WRITE( argname, fmt =
'(A)' )
'DESCY( MB_ )'
2522 ELSE IF( descy( nb_ ).NE.descyref( nb_ ) )
THEN
2523 WRITE( argname, fmt =
'(A)' )
'DESCY( NB_ )'
2524 ELSE IF( descy( rsrc_ ).NE.descyref( rsrc_ ) )
THEN
2525 WRITE( argname, fmt =
'(A)' )
'DESCY( RSRC_ )'
2526 ELSE IF( descy( csrc_ ).NE.descyref( csrc_ ) )
THEN
2527 WRITE( argname, fmt =
'(A)' )
'DESCY( CSRC_ )'
2528 ELSE IF( descy( ctxt_ ).NE.descyref( ctxt_ ) )
THEN
2529 WRITE( argname, fmt =
'(A)' )
'DESCY( CTXT_ )'
2530 ELSE IF( descy( lld_ ).NE.descyref( lld_ ) )
THEN
2531 WRITE( argname, fmt =
'(A)' )
'DESCY( LLD_ )'
2532 ELSE IF( incy.NE.incyref )
THEN
2533 WRITE( argname, fmt =
'(A)' )
'INCY'
2538 CALL igsum2d( ictxt,
'All',
' ', 1, 1, info, 1, -1, 0 )
2540 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
THEN
2542 IF( info.NE.0 )
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
2829 INTRINSIC DCMPLX, DBLE
2837 IF( ( m.LE.0 ).OR.( n.LE.0 ) )
2842 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
2848 IF( nrout.EQ.1 )
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 IF( ierr( 3 ).NE.0 )
THEN
2859 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2860 $
WRITE( nout, fmt = 9997 )
2861 ELSE IF( err.GT.dble( thresh ) )
THEN
2862 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
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 ELSE IF( nrout.EQ.2 )
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 IF( ierr( 3 ).NE.0 )
THEN
2888 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2889 $
WRITE( nout, fmt = 9997 )
2890 ELSE IF( err.GT.dble( thresh ) )
THEN
2891 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
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 ELSE IF( nrout.EQ.3 )
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 IF( ierr( 2 ).NE.0 )
THEN
2918 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2919 $
WRITE( nout, fmt = 9997 )
2920 ELSE IF( err.GT.dble( thresh ) )
THEN
2921 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
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 ELSE IF( nrout.EQ.4 )
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 IF( ierr( 2 ).NE.0 )
THEN
2962 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2963 $
WRITE( nout, fmt = 9997 )
2964 ELSE IF( err.GT.dble( thresh ) )
THEN
2965 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
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,
3020 $ x, ix, jx, descx, incx, y, iy, jy, descy, incy,
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, ierr( 2 ) )
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 *****' )