4 CHARACTER*7 SNAMES( NSUBS )
6 DATA snames/
'PDGEMV ',
'PDSYMV ',
'PDTRMV ',
7 $
'PDTRSV ',
'PDGER ',
'PDSYR ',
119 INTEGER maxtests, maxgrids, gapmul, dblesz, totmem,
121 DOUBLE PRECISION one, padval, zero, rogue
122 parameter( maxtests = 20, maxgrids = 20, gapmul = 10,
123 $ dblesz = 8, totmem = 2000000,
124 $ memsiz = totmem / dblesz, zero = 0.0d+0,
125 $ one = 1.0d+0, padval = -9923.0d+0,
126 $ nsubs = 7, rogue = -1.0d+10 )
127 INTEGER block_cyclic_2d_inb, csrc_, ctxt_, dlen_,
128 $ dtype_, imb_, inb_, lld_, mb_, m_, nb_, n_,
130 parameter( block_cyclic_2d_inb = 2, dlen_ = 11,
131 $ dtype_ = 1, ctxt_ = 2, m_ = 3, n_ = 4,
132 $ imb_ = 5, inb_ = 6, mb_ = 7, nb_ = 8,
133 $ rsrc_ = 9, csrc_ = 10, lld_ = 11 )
136 LOGICAL errflg, sof, tee
137 CHARACTER*1 aform, diag, diagdo, trans, uplo
138 INTEGER csrca, csrcx, csrcy, i, ia, iam, iaseed, ictxt,
139 $ igap, imba, imbx, imby, imida, imidx, imidy,
140 $ inba, inbx, inby, incx, incy, ipa, ipg, ipmata,
141 $ ipmatx, ipmaty, iposta, ipostx, iposty, iprea,
142 $ iprex, iprey, ipx, ipy, iverb, ix, ixseed, iy,
143 $ iyseed, j, ja, jx, jy, k, lda, ldx, ldy, m, ma,
144 $ mba, mbx, mby, memreqd, mpa, mpx, mpy, mx, my,
145 $ mycol, myrow, n, na, nba, nbx, nby, ncola,
146 $ ngrids, nlx, nly, nout, npcol, nprocs, nprow,
147 $ nqa, nqx, nqy, nrowa, ntests, nx, ny, offd,
148 $ rsrca, rsrcx, rsrcy, tskip, tstcnt
150 DOUBLE PRECISION alpha, beta, scale
153 LOGICAL ltest( nsubs ), ycheck( nsubs )
154 CHARACTER*1 diagval( maxtests ), tranval( maxtests ),
155 $ uploval( maxtests )
157 INTEGER cscaval( maxtests ), cscxval( maxtests ),
158 $ cscyval( maxtests ), desca( dlen_ ),
159 $ descar( dlen_ ), descx( dlen_ ),
160 $ descxr( dlen_ ), descy( dlen_ ),
161 $ descyr( dlen_ ), iaval( maxtests ), ierr( 6 ),
162 $ imbaval( maxtests ), imbxval( maxtests ),
163 $ imbyval( maxtests ), inbaval( maxtests ),
164 $ inbxval( maxtests ), inbyval( maxtests ),
165 $ incxval( maxtests ), incyval( maxtests ),
166 $ ixval( maxtests ), iyval( maxtests ),
167 $ javal( maxtests ), jxval( maxtests ),
169 INTEGER kfail( nsubs ), kpass( nsubs ), kskip( nsubs ),
170 $ ktests( nsubs ), maval( maxtests ),
171 $ mbaval( maxtests ), mbxval( maxtests ),
172 $ mbyval( maxtests ), mval( maxtests ),
173 $ mxval( maxtests ), myval( maxtests ),
174 $ naval( maxtests ), nbaval( maxtests ),
175 $ nbxval( maxtests ), nbyval( maxtests ),
176 $ nval( maxtests ), nxval( maxtests ),
177 $ nyval( maxtests ), pval( maxtests ),
178 $ qval( maxtests ), rscaval( maxtests ),
179 $ rscxval( maxtests ), rscyval( maxtests )
180 DOUBLE PRECISION mem( memsiz )
183 EXTERNAL blacs_exit, blacs_get, blacs_gridexit,
184 $ blacs_gridinfo, blacs_gridinit, blacs_pinfo,
198 INTRINSIC abs, dble,
max, mod
201 CHARACTER*7 snames( nsubs )
204 COMMON /snamec/snames
205 COMMON /infoc/info, nblog
206 COMMON /pberrorc/nout, abrtflg
209 DATA ycheck/.true., .true., .false., .false.,
210 $ .true., .false., .true./
247 CALL blacs_pinfo( iam, nprocs )
249 $ uploval, mval, nval, maval, naval, imbaval,
250 $ mbaval, inbaval, nbaval, rscaval, cscaval,
251 $ iaval, javal, mxval, nxval, imbxval, mbxval,
252 $ inbxval, nbxval, rscxval, cscxval, ixval,
253 $ jxval, incxval, myval, nyval, imbyval,
254 $ mbyval, inbyval, nbyval, rscyval, cscyval,
255 $ iyval, jyval, incyval, maxtests, ngrids,
256 $ pval, maxgrids, qval, maxgrids, nblog, ltest,
257 $ sof, tee, iam, igap, iverb, nprocs, thresh,
261 WRITE( nout, fmt = 9975 )
262 WRITE( nout, fmt = * )
280 IF( nprow.LT.1 )
THEN
282 $
WRITE( nout, fmt = 9999 )
'GRID SIZE',
'NPROW', nprow
284 ELSE IF( npcol.LT.1 )
THEN
286 $
WRITE( nout, fmt = 9999 )
'GRID SIZE',
'NPCOL', npcol
288 ELSE IF( nprow*npcol.GT.nprocs )
THEN
290 $
WRITE( nout, fmt = 9998 ) nprow*npcol, nprocs
294 IF( ierr( 1 ).GT.0 )
THEN
296 $
WRITE( nout, fmt = 9997 )
'GRID'
303 CALL blacs_get( -1, 0, ictxt )
304 CALL blacs_gridinit( ictxt,
'Row-major', nprow, npcol )
305 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
310 IF( myrow.GE.nprow .OR. mycol.GE.npcol )
363 WRITE( nout, fmt = * )
364 WRITE( nout, fmt = 9996 ) tstcnt, nprow, npcol
365 WRITE( nout, fmt = * )
367 WRITE( nout, fmt = 9995 )
368 WRITE( nout, fmt = 9994 )
369 WRITE( nout, fmt = 9995 )
370 WRITE( nout, fmt = 9993 ) m, n, uplo, trans, diag
372 WRITE( nout, fmt = 9995 )
373 WRITE( nout, fmt = 9992 )
374 WRITE( nout, fmt = 9995 )
375 WRITE( nout, fmt = 9991 ) ia, ja, ma, na, imba, inba,
376 $ mba, nba, rsrca, csrca
378 WRITE( nout, fmt = 9995 )
379 WRITE( nout, fmt = 9990 )
380 WRITE( nout, fmt = 9995 )
381 WRITE( nout, fmt = 9989 ) ix, jx, mx, nx, imbx, inbx,
382 $ mbx, nbx, rsrcx, csrcx, incx
384 WRITE( nout, fmt = 9995 )
385 WRITE( nout, fmt = 9988 )
386 WRITE( nout, fmt = 9995 )
387 WRITE( nout, fmt = 9989 ) iy, jy, my, ny, imby, inby,
388 $ mby, nby, rsrcy, csrcy, incy
390 WRITE( nout, fmt = 9995 )
396 IF( .NOT.
lsame( uplo,
'U' ).AND.
397 $ .NOT.
lsame( uplo,
'L' ) )
THEN
399 $
WRITE( nout, fmt = 9997 )
'UPLO'
404 IF( .NOT.
lsame( trans,
'N' ).AND.
405 $ .NOT.
lsame( trans,
'T' ).AND.
406 $ .NOT.
lsame( trans,
'C' ) )
THEN
408 $
WRITE( nout, fmt = 9997 )
'TRANS'
413 IF( .NOT.
lsame( diag ,
'U' ).AND.
414 $ .NOT.
lsame( diag ,
'N' ) )
THEN
416 $
WRITE( nout, fmt = 9997 ) trans
417 WRITE( nout, fmt = 9997 )
'DIAG'
425 $ block_cyclic_2d_inb, ma, na, imba, inba,
426 $ mba, nba, rsrca, csrca, mpa, nqa, iprea,
427 $ imida, iposta, igap, gapmul, ierr( 1 ) )
429 $ block_cyclic_2d_inb, mx, nx, imbx, inbx,
430 $ mbx, nbx, rsrcx, csrcx, incx, mpx, nqx,
431 $ iprex, imidx, ipostx, igap, gapmul,
434 $ block_cyclic_2d_inb, my, ny, imby, inby,
435 $ mby, nby, rsrcy, csrcy, incy, mpy, nqy,
436 $ iprey, imidy, iposty, igap, gapmul,
439 IF( ierr( 1 ).GT.0 .OR. ierr( 2 ).GT.0 .OR.
440 $ ierr( 3 ).GT.0 )
THEN
453 ipx = ipa + desca( lld_ )*nqa + iposta + iprex
454 ipy = ipx + descx( lld_ )*nqx + ipostx + iprey
455 ipmata = ipy + descy( lld_ )*nqy + iposty
456 ipmatx = ipmata + ma*na
457 ipmaty = ipmatx + mx*nx
458 ipg = ipmaty +
max( mx*nx, my*ny )
465 memreqd = ipg +
max( m, n ) - 1 +
468 $
max( imby, mby ) ) )
470 IF( memreqd.GT.memsiz )
THEN
472 $
WRITE( nout, fmt = 9986 ) memreqd*dblesz
478 CALL igsum2d( ictxt,
'All',
' ', 1, 1, ierr, 1, -1, 0 )
480 IF( ierr( 1 ).GT.0 )
THEN
482 $
WRITE( nout, fmt = 9987 )
493 IF( .NOT.ltest( k ) )
497 WRITE( nout, fmt = * )
498 WRITE( nout, fmt = 9985 ) snames( k )
506 IF(
lsame( trans,
'N' ) )
THEN
513 ELSE IF( k.EQ.5 )
THEN
527 CALL pmdimchk( ictxt, nout, nrowa, ncola,
'A', ia, ja,
529 CALL pvdimchk( ictxt, nout, nlx,
'X', ix, jx, descx,
531 CALL pvdimchk( ictxt, nout, nly,
'Y', iy, jy, descy,
534 IF( ierr( 1 ).NE.0 .OR. ierr( 2 ).NE.0 .OR.
535 $ ierr( 3 ).NE.0 )
THEN
536 kskip( k ) = kskip( k ) + 1
542 IF( k.EQ.2 .OR. k.EQ.6 .OR. k.EQ.7 )
THEN
546 ELSE IF( ( k.EQ.4 ).AND.(
lsame( diag,
'N' ) ) )
THEN
556 CALL pdlagen( .false., aform, diagdo, offd, ma, na,
557 $ 1, 1, desca, iaseed, mem( ipa ),
559 CALL pdlagen( .false.,
'None',
'No diag', 0, mx, nx, 1,
560 $ 1, descx, ixseed, mem( ipx ),
563 $
CALL pdlagen( .false.,
'None',
'No diag', 0, my, ny,
564 $ 1, 1, descy, iyseed, mem( ipy ),
569 CALL pb_descset2( descar, ma, na, imba, inba, mba, nba,
570 $ -1, -1, ictxt,
max( 1, ma ) )
571 CALL pdlagen( .false., aform, diagdo, offd, ma, na,
572 $ 1, 1, descar, iaseed, mem( ipmata ),
574 CALL pb_descset2( descxr, mx, nx, imbx, inbx, mbx, nbx,
575 $ -1, -1, ictxt,
max( 1, mx ) )
576 CALL pdlagen( .false.,
'None',
'No diag', 0, mx, nx, 1,
577 $ 1, descxr, ixseed, mem( ipmatx ),
579 IF( ycheck( k ) )
THEN
582 $ nby, -1, -1, ictxt,
max( 1, my ) )
583 CALL pdlagen( .false.,
'None',
'No diag', 0, my, ny,
584 $ 1, 1, descyr, iyseed, mem( ipmaty ),
592 $ nbx, -1, -1, ictxt,
max( 1, mx ) )
593 CALL pdlagen( .false.,
'None',
'No diag', 0, mx, nx,
594 $ 1, 1, descyr, ixseed, mem( ipmaty ),
601 IF( ( k.EQ.2 .OR. k.EQ.6 .OR. k.EQ.7 ).AND.
602 $ (
max( nrowa, ncola ).GT.1 ) )
THEN
606 IF(
lsame( uplo,
'L' ) )
THEN
610 CALL pdlaset(
'Upper', nrowa-1, ncola-1, rogue,
611 $ rogue, mem( ipa ), ia, ja+1, desca )
613 CALL pb_dlaset(
'Upper', nrowa-1, ncola-1, 0,
615 $ mem( ipmata+ia-1+ja*lda ), lda )
618 ELSE IF(
lsame( uplo,
'U' ) )
THEN
622 CALL pdlaset(
'Lower', nrowa-1, ncola-1, rogue,
623 $ rogue, mem( ipa ), ia+1, ja, desca )
625 CALL pb_dlaset(
'Lower', nrowa-1, ncola-1, 0,
627 $ mem( ipmata+ia+(ja-1)*lda ),
633 ELSE IF( k.EQ.3 .OR. k.EQ.4 )
THEN
635 IF(
lsame( uplo,
'L' ) )
THEN
639 IF(
lsame( diag,
'N' ) )
THEN
641 IF(
max( nrowa, ncola ).GT.1 )
THEN
642 CALL pdlaset(
'Upper', nrowa-1, ncola-1,
643 $ rogue, rogue, mem( ipa ), ia,
645 CALL pb_dlaset(
'Upper', nrowa-1, ncola-1, 0,
647 $ mem( ipmata+ia-1+ja*lda ),
653 CALL pdlaset(
'Upper', nrowa, ncola, rogue, one,
654 $ mem( ipa ), ia, ja, desca )
655 CALL pb_dlaset(
'Upper', nrowa, ncola, 0, zero,
657 $ mem( ipmata+ia-1+(ja-1)*lda ),
660 $ (
max( nrowa, ncola ).GT.1 ) )
THEN
661 scale = one / dble(
max( nrowa, ncola ) )
662 CALL pdlascal(
'Lower', nrowa-1, ncola-1,
663 $ scale, mem( ipa ), ia+1, ja,
667 $ mem( ipmata+ia+(ja-1)*lda ),
673 ELSE IF(
lsame( uplo,
'U' ) )
THEN
677 IF(
lsame( diag,
'N' ) )
THEN
679 IF(
max( nrowa, ncola ).GT.1 )
THEN
680 CALL pdlaset(
'Lower', nrowa-1, ncola-1,
681 $ rogue, rogue, mem( ipa ), ia+1,
683 CALL pb_dlaset(
'Lower', nrowa-1, ncola-1, 0,
685 $ mem( ipmata+ia+(ja-1)*lda ),
691 CALL pdlaset(
'Lower', nrowa, ncola, rogue, one,
692 $ mem( ipa ), ia, ja, desca )
693 CALL pb_dlaset(
'Lower', nrowa, ncola, 0, zero,
695 $ mem( ipmata+ia-1+(ja-1)*lda ),
698 $ (
max( nrowa, ncola ).GT.1 ) )
THEN
699 scale = one / dble(
max( nrowa, ncola ) )
700 CALL pdlascal(
'Upper', nrowa-1, ncola-1,
701 $ scale, mem( ipa ), ia, ja+1,
705 $ mem( ipmata+ia-1+ja*lda ), lda )
716 CALL pb_dfillpad( ictxt, mpa, nqa, mem( ipa-iprea ),
717 $ desca( lld_ ), iprea, iposta, padval )
719 CALL pb_dfillpad( ictxt, mpx, nqx, mem( ipx-iprex ),
720 $ descx( lld_ ), iprex, ipostx, padval )
722 IF( ycheck( k ) )
THEN
723 CALL pb_dfillpad( ictxt, mpy, nqy, mem( ipy-iprey ),
724 $ descy( lld_ ), iprey, iposty,
731 CALL pdchkarg2( ictxt, nout, snames( k ), uplo, trans,
732 $ diag, m, n, alpha, ia, ja, desca, ix,
733 $ jx, descx, incx, beta, iy, jy, descy,
738 IF( iverb.EQ.2 )
THEN
739 CALL pb_pdlaprnt( nrowa, ncola, mem( ipa ), ia, ja,
740 $ desca, 0, 0,
'PARALLEL_INITIAL_A',
742 ELSE IF( iverb.GE.3 )
THEN
743 CALL pb_pdlaprnt( ma, na, mem( ipa ), 1, 1, desca, 0,
744 $ 0,
'PARALLEL_INITIAL_A', nout,
748 IF( iverb.EQ.2 )
THEN
749 IF( incx.EQ.descx( m_ ) )
THEN
752 $
'PARALLEL_INITIAL_X', nout,
757 $
'PARALLEL_INITIAL_X', nout,
760 ELSE IF( iverb.GE.3 )
THEN
761 CALL pb_pdlaprnt( mx, nx, mem( ipx ), 1, 1, descx, 0,
762 $ 0,
'PARALLEL_INITIAL_X', nout,
766 IF( ycheck( k ) )
THEN
767 IF( iverb.EQ.2 )
THEN
768 IF( incy.EQ.descy( m_ ) )
THEN
771 $
'PARALLEL_INITIAL_Y', nout,
776 $
'PARALLEL_INITIAL_Y', nout,
779 ELSE IF( iverb.GE.3 )
THEN
781 $ 0, 0,
'PARALLEL_INITIAL_Y', nout,
793 CALL pdgemv( trans, m, n, alpha, mem( ipa ), ia, ja,
794 $ desca, mem( ipx ), ix, jx, descx, incx,
795 $ beta, mem( ipy ), iy, jy, descy, incy )
797 ELSE IF( k.EQ.2 )
THEN
801 CALL pdsymv( uplo, n, alpha, mem( ipa ), ia, ja,
802 $ desca, mem( ipx ), ix, jx, descx, incx,
803 $ beta, mem( ipy ), iy, jy, descy, incy )
805 ELSE IF( k.EQ.3 )
THEN
809 CALL pdtrmv( uplo, trans, diag, n, mem( ipa ), ia, ja,
810 $ desca, mem( ipx ), ix, jx, descx, incx )
812 ELSE IF( k.EQ.4 )
THEN
816 CALL pdtrsv( uplo, trans, diag, n, mem( ipa ), ia, ja,
817 $ desca, mem( ipx ), ix, jx, descx, incx )
819 ELSE IF( k.EQ.5 )
THEN
823 CALL pdger( m, n, alpha, mem( ipx ), ix, jx, descx,
824 $ incx, mem( ipy ), iy, jy, descy, incy,
825 $ mem( ipa ), ia, ja, desca )
827 ELSE IF( k.EQ.6 )
THEN
831 CALL pdsyr( uplo, n, alpha, mem( ipx ), ix, jx, descx,
832 $ incx, mem( ipa ), ia, ja, desca )
834 ELSE IF( k.EQ.7 )
THEN
838 CALL pdsyr2( uplo, n, alpha, mem( ipx ), ix, jx,
839 $ descx, incx, mem( ipy ), iy, jy, descy,
840 $ incy, mem( ipa ), ia, ja, desca )
847 kskip( k ) = kskip( k ) + 1
849 $
WRITE( nout, fmt = 9974 ) info
856 $ mem( ipa-iprea ), desca( lld_ ), iprea,
860 $ mem( ipx-iprex ), descx( lld_ ), iprex,
863 IF( ycheck( k ) )
THEN
865 $ mem( ipy-iprey ), descy( lld_ ),
866 $ iprey, iposty, padval )
872 $ n, alpha, mem( ipmata ), mem( ipa ),
873 $ ia, ja, desca, mem( ipmatx ),
874 $ mem( ipx ), ix, jx, descx, incx,
875 $ beta, mem( ipmaty ), mem( ipy ), iy,
876 $ jy, descy, incy, thresh, rogue,
878 IF( mod( info, 2 ).EQ.1 )
THEN
880 ELSE IF( mod( info / 2, 2 ).EQ.1 )
THEN
882 ELSE IF( mod( info / 4, 2 ).EQ.1 )
THEN
884 ELSE IF( info.NE.0 )
THEN
893 CALL pdchkarg2( ictxt, nout, snames( k ), uplo, trans,
894 $ diag, m, n, alpha, ia, ja, desca, ix,
895 $ jx, descx, incx, beta, iy, jy, descy,
900 CALL pdchkmout( nrowa, ncola, mem( ipmata ), mem( ipa ),
901 $ ia, ja, desca, ierr( 4 ) )
902 CALL pdchkvout( nlx, mem( ipmatx ), mem( ipx ), ix, jx,
903 $ descx, incx, ierr( 5 ) )
905 IF( ierr( 4 ).NE.0 )
THEN
907 $
WRITE( nout, fmt = 9982 )
'PARALLEL_A',
911 IF( ierr( 5 ).NE.0 )
THEN
913 $
WRITE( nout, fmt = 9982 )
'PARALLEL_X',
917 IF( ycheck( k ) )
THEN
918 CALL pdchkvout( nly, mem( ipmaty ), mem( ipy ), iy,
919 $ jy, descy, incy, ierr( 6 ) )
920 IF( ierr( 6 ).NE.0 )
THEN
922 $
WRITE( nout, fmt = 9982 )
'PARALLEL_Y',
929 IF( info.NE.0 .OR. ierr( 1 ).NE.0 .OR.
930 $ ierr( 2 ).NE.0 .OR. ierr( 3 ).NE.0 .OR.
931 $ ierr( 4 ).NE.0 .OR. ierr( 5 ).NE.0 .OR.
932 $ ierr( 6 ).NE.0 )
THEN
934 $
WRITE( nout, fmt = 9984 ) snames( k )
935 kfail( k ) = kfail( k ) + 1
939 $
WRITE( nout, fmt = 9983 ) snames( k )
940 kpass( k ) = kpass( k ) + 1
945 IF( iverb.GE.1 .AND. errflg )
THEN
946 IF( ierr( 4 ).NE.0 .OR. iverb.GE.3 )
THEN
947 CALL pdmprnt( ictxt, nout, ma, na, mem( ipmata ),
948 $ lda, 0, 0,
'SERIAL_A' )
950 $ 0, 0,
'PARALLEL_A', nout,
952 ELSE IF( ierr( 1 ).NE.0 )
THEN
953 IF( ( nrowa.GT.0 ).AND.( ncola.GT.0 ) )
954 $
CALL pdmprnt( ictxt, nout, nrowa, ncola,
955 $ mem( ipmata+ia-1+(ja-1)*lda ),
956 $ lda, 0, 0,
'SERIAL_A' )
957 CALL pb_pdlaprnt( nrowa, ncola, mem( ipa ), ia, ja,
958 $ desca, 0, 0,
'PARALLEL_A',
959 $ nout, mem( ipmata ) )
961 IF( ierr( 5 ).NE.0 .OR. iverb.GE.3 )
THEN
962 CALL pdmprnt( ictxt, nout, mx, nx, mem( ipmatx ),
963 $ ldx, 0, 0,
'SERIAL_X' )
965 $ 0, 0,
'PARALLEL_X', nout,
967 ELSE IF( ierr( 2 ).NE.0 )
THEN
969 $
CALL pdvprnt( ictxt, nout, nlx,
970 $ mem( ipmatx+ix-1+(jx-1)*ldx ),
971 $ incx, 0, 0,
'SERIAL_X' )
972 IF( incx.EQ.descx( m_ ) )
THEN
974 $ descx, 0, 0,
'PARALLEL_X',
975 $ nout, mem( ipmatx ) )
978 $ descx, 0, 0,
'PARALLEL_X',
979 $ nout, mem( ipmatx ) )
982 IF( ycheck( k ) )
THEN
983 IF( ierr( 6 ).NE.0 .OR. iverb.GE.3 )
THEN
984 CALL pdmprnt( ictxt, nout, my, ny,
985 $ mem( ipmaty ), ldy, 0, 0,
988 $ descy, 0, 0,
'PARALLEL_Y',
989 $ nout, mem( ipmatx ) )
990 ELSE IF( ierr( 3 ).NE.0 )
THEN
992 $
CALL pdvprnt( ictxt, nout, nly,
993 $ mem( ipmaty+iy-1+(jy-1)*ldy ),
994 $ incy, 0, 0,
'SERIAL_Y' )
995 IF( incy.EQ.descy( m_ ) )
THEN
997 $ descy, 0, 0,
'PARALLEL_Y',
998 $ nout, mem( ipmatx ) )
1001 $ descy, 0, 0,
'PARALLEL_Y',
1002 $ nout, mem( ipmatx ) )
1010 IF( sof.AND.errflg )
1015 40
IF( iam.EQ.0 )
THEN
1016 WRITE( nout, fmt = * )
1017 WRITE( nout, fmt = 9981 ) j
1022 CALL blacs_gridexit( ictxt )
1033 IF( ltest( i ) )
THEN
1034 kskip( i ) = kskip( i ) + tskip
1035 ktests( i ) = kskip( i ) + kfail( i ) + kpass( i )
1042 WRITE( nout, fmt = * )
1043 WRITE( nout, fmt = 9977 )
1044 WRITE( nout, fmt = * )
1045 WRITE( nout, fmt = 9979 )
1046 WRITE( nout, fmt = 9978 )
1049 WRITE( nout, fmt = 9980 )
'|', snames( i ), ktests( i ),
1050 $ kpass( i ), kfail( i ), kskip( i )
1052 WRITE( nout, fmt = * )
1053 WRITE( nout, fmt = 9976 )
1054 WRITE( nout, fmt = * )
1058 CALL blacs_exit( 0 )
1060 9999
FORMAT(
'ILLEGAL ', a,
': ', a,
' = ', i10,
1061 $
' should be at least 1' )
1062 9998
FORMAT(
'ILLEGAL GRID: NPROW*NPCOL = ', i4,
1063 $
'. It can be at most', i4 )
1064 9997
FORMAT(
'Bad ', a,
' parameters: going on to next test case.' )
1065 9996
FORMAT( 2x,
'Test number ', i4 ,
' started on a ', i6,
' x ',
1066 $ i6,
' process grid.' )
1067 9995
FORMAT( 2x,
' ------------------------------------------------',
1068 $
'--------------------------' )
1069 9994
FORMAT( 2x,
' M N UPLO TRANS DIAG' )
1070 9993
FORMAT( 5x,i6,1x,i6,9x,a1,11x,a1,10x,a1 )
1071 9992
FORMAT( 2x,
' IA JA MA NA IMBA INBA',
1072 $
' MBA NBA RSRCA CSRCA' )
1073 9991
FORMAT( 5x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,
1075 9990
FORMAT( 2x,
' IX JX MX NX IMBX INBX',
1076 $
' MBX NBX RSRCX CSRCX INCX' )
1077 9989
FORMAT( 5x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6,
1078 $ 1x,i5,1x,i5,1x,i6 )
1079 9988
FORMAT( 2x,
' IY JY MY NY IMBY INBY',
1080 $
' MBY NBY RSRCY CSRCY INCY' )
1081 9987
FORMAT(
'Not enough memory for this test: going on to',
1082 $
' next test case.' )
1083 9986
FORMAT(
'Not enough memory. Need: ', i12 )
1084 9985
FORMAT( 2x,
' Tested Subroutine: ', a )
1085 9984
FORMAT( 2x,
' ***** Computational check: ', a,
' ',
1086 $
' FAILED ',
' *****' )
1087 9983
FORMAT( 2x,
' ***** Computational check: ', a,
' ',
1088 $
' PASSED ',
' *****' )
1089 9982
FORMAT( 2x,
' ***** ERROR ***** Matrix operand ', a,
1090 $
' modified by ', a,
' *****' )
1091 9981
FORMAT( 2x,
'Test number ', i4,
' completed.' )
1092 9980
FORMAT( 2x,a1,2x,a7,8x,i4,6x,i4,5x,i4,4x,i4 )
1093 9979
FORMAT( 2x,
' SUBROUTINE TOTAL TESTS PASSED FAILED ',
1095 9978
FORMAT( 2x,
' ---------- ----------- ------ ------ ',
1097 9977
FORMAT( 2x,
'Testing Summary')
1098 9976
FORMAT( 2x,
'End of Tests.' )
1099 9975
FORMAT( 2x,
'Tests started.' )
1100 9974
FORMAT( 2x,
' ***** Operation not supported, error code: ',
1108 SUBROUTINE pdbla2tstinfo( SUMMRY, NOUT, NMAT, DIAGVAL, TRANVAL,
1109 $ UPLOVAL, MVAL, NVAL, MAVAL, NAVAL,
1110 $ IMBAVAL, MBAVAL, INBAVAL, NBAVAL,
1111 $ RSCAVAL, CSCAVAL, IAVAL, JAVAL,
1112 $ MXVAL, NXVAL, IMBXVAL, MBXVAL,
1113 $ INBXVAL, NBXVAL, RSCXVAL, CSCXVAL,
1114 $ IXVAL, JXVAL, INCXVAL, MYVAL, NYVAL,
1115 $ IMBYVAL, MBYVAL, INBYVAL, NBYVAL,
1116 $ RSCYVAL, CSCYVAL, IYVAL, JYVAL,
1117 $ INCYVAL, LDVAL, NGRIDS, PVAL, LDPVAL,
1118 $ QVAL, LDQVAL, NBLOG, LTEST, SOF, TEE,
1119 $ IAM, IGAP, IVERB, NPROCS, THRESH, ALPHA,
1129 INTEGER IAM, IGAP, IVERB, LDPVAL, LDQVAL, LDVAL, NBLOG,
1130 $ NGRIDS, NMAT, NOUT, NPROCS
1132 DOUBLE PRECISION ALPHA, BETA
1135 CHARACTER*( * ) SUMMRY
1136 CHARACTER*1 DIAGVAL( LDVAL ), TRANVAL( LDVAL ),
1139 INTEGER CSCAVAL( LDVAL ), CSCXVAL( LDVAL ),
1140 $ cscyval( ldval ), iaval( ldval ),
1141 $ imbaval( ldval ), imbxval( ldval ),
1142 $ imbyval( ldval ), inbaval( ldval ),
1143 $ inbxval( ldval ), inbyval( ldval ),
1144 $ incxval( ldval ), incyval( ldval ),
1145 $ ixval( ldval ), iyval( ldval ), javal( ldval ),
1146 $ jxval( ldval ), jyval( ldval ), maval( ldval ),
1147 $ mbaval( ldval ), mbxval( ldval ),
1148 $ mbyval( ldval ), mval( ldval ), mxval( ldval ),
1149 $ myval( ldval ), naval( ldval ),
1150 $ nbaval( ldval ), nbxval( ldval ),
1151 $ nbyval( ldval ), nval( ldval ), nxval( ldval ),
1152 $ nyval( ldval ), pval( ldpval ), qval( ldqval ),
1153 $ rscaval( ldval ), rscxval( ldval ),
1154 $ rscyval( ldval ), work( * )
1441 PARAMETER ( NIN = 11, nsubs = 7 )
1446 DOUBLE PRECISION EPS
1450 CHARACTER*79 USRINFO
1453 EXTERNAL blacs_abort, blacs_get, blacs_gridexit,
1454 $ blacs_gridinit, blacs_setup, dgebr2d, dgebs2d,
1455 $
icopy, igebr2d, igebs2d, sgebr2d, sgebs2d
1459 DOUBLE PRECISION PDLAMCH
1463 INTRINSIC char, ichar,
max,
min
1466 CHARACTER*7 SNAMES( NSUBS )
1467 COMMON /SNAMEC/SNAMES
1478 OPEN( nin, file=
'PDBLAS2TST.dat', status=
'OLD' )
1479 READ( nin, fmt = * ) summry
1484 READ( nin, fmt = 9999 ) usrinfo
1488 READ( nin, fmt = * ) summry
1489 READ( nin, fmt = * ) nout
1490 IF( nout.NE.0 .AND. nout.NE.6 )
1491 $
OPEN( nout, file = summry, status =
'UNKNOWN' )
1497 READ( nin, fmt = * ) sof
1501 READ( nin, fmt = * ) tee
1505 READ( nin, fmt = * ) iverb
1506 IF( iverb.LT.0 .OR. iverb.GT.3 )
1511 READ( nin, fmt = * ) igap
1517 READ( nin, fmt = * ) thresh
1523 READ( nin, fmt = * ) nblog
1529 READ( nin, fmt = * ) ngrids
1530 IF( ngrids.LT.1 .OR. ngrids.GT.ldpval )
THEN
1531 WRITE( nout, fmt = 9998 )
'Grids', ldpval
1533 ELSE IF( ngrids.GT.ldqval )
THEN
1534 WRITE( nout, fmt = 9998 )
'Grids', ldqval
1540 READ( nin, fmt = * ) ( pval( i ), i = 1, ngrids )
1541 READ( nin, fmt = * ) ( qval( i ), i = 1, ngrids )
1545 READ( nin, fmt = * ) alpha
1546 READ( nin, fmt = * ) beta
1550 READ( nin, fmt = * ) nmat
1551 IF( nmat.LT.1 .OR. nmat.GT.ldval )
THEN
1552 WRITE( nout, fmt = 9998 )
'Tests', ldval
1558 READ( nin, fmt = * ) ( uploval( i ), i = 1, nmat )
1559 READ( nin, fmt = * ) ( tranval( i ), i = 1, nmat )
1560 READ( nin, fmt = * ) ( diagval( i ), i = 1, nmat )
1561 READ( nin, fmt = * ) ( mval( i ), i = 1, nmat )
1562 READ( nin, fmt = * ) ( nval( i ), i = 1, nmat )
1563 READ( nin, fmt = * ) ( maval( i ), i = 1, nmat )
1564 READ( nin, fmt = * ) ( naval( i ), i = 1, nmat )
1565 READ( nin, fmt = * ) ( imbaval( i ), i = 1, nmat )
1566 READ( nin, fmt = * ) ( inbaval( i ), i = 1, nmat )
1567 READ( nin, fmt = * ) ( mbaval( i ), i = 1, nmat )
1568 READ( nin, fmt = * ) ( nbaval( i ), i = 1, nmat )
1569 READ( nin, fmt = * ) ( rscaval( i ), i = 1, nmat )
1570 READ( nin, fmt = * ) ( cscaval( i ), i = 1, nmat )
1571 READ( nin, fmt = * ) ( iaval( i ), i = 1, nmat )
1572 READ( nin, fmt = * ) ( javal( i ), i = 1, nmat )
1573 READ( nin, fmt = * ) ( mxval( i ), i = 1, nmat )
1574 READ( nin, fmt = * ) ( nxval( i ), i = 1, nmat )
1575 READ( nin, fmt = * ) ( imbxval( i ), i = 1, nmat )
1576 READ( nin, fmt = * ) ( inbxval( i ), i = 1, nmat )
1577 READ( nin, fmt = * ) ( mbxval( i ), i = 1, nmat )
1578 READ( nin, fmt = * ) ( nbxval( i ), i = 1, nmat )
1579 READ( nin, fmt = * ) ( rscxval( i ), i = 1, nmat )
1580 READ( nin, fmt = * ) ( cscxval( i ), i = 1, nmat )
1581 READ( nin, fmt = * ) ( ixval( i ), i = 1, nmat )
1582 READ( nin, fmt = * ) ( jxval( i ), i = 1, nmat )
1583 READ( nin, fmt = * ) ( incxval( i ), i = 1, nmat )
1584 READ( nin, fmt = * ) ( myval( i ), i = 1, nmat )
1585 READ( nin, fmt = * ) ( nyval( i ), i = 1, nmat )
1586 READ( nin, fmt = * ) ( imbyval( i ), i = 1, nmat )
1587 READ( nin, fmt = * ) ( inbyval( i ), i = 1, nmat )
1588 READ( nin, fmt = * ) ( mbyval( i ), i = 1, nmat )
1589 READ( nin, fmt = * ) ( nbyval( i ), i = 1, nmat )
1590 READ( nin, fmt = * ) ( rscyval( i ), i = 1, nmat )
1591 READ( nin, fmt = * ) ( cscyval( i ), i = 1, nmat )
1592 READ( nin, fmt = * ) ( iyval( i ), i = 1, nmat )
1593 READ( nin, fmt = * ) ( jyval( i ), i = 1, nmat )
1594 READ( nin, fmt = * ) ( incyval( i ), i = 1, nmat )
1600 ltest( i ) = .false.
1603 READ( nin, fmt = 9996,
END = 50 ) SNAMET, ltestt
1605 IF( snamet.EQ.snames( i ) )
1609 WRITE( nout, fmt = 9995 )snamet
1625 IF( nprocs.LT.1 )
THEN
1628 nprocs =
max( nprocs, pval( i )*qval( i ) )
1630 CALL blacs_setup( iam, nprocs )
1636 CALL blacs_get( -1, 0, ictxt )
1637 CALL blacs_gridinit( ictxt,
'Row-major', 1, nprocs )
1645 CALL sgebs2d( ictxt,
'All',
' ', 1, 1, thresh, 1 )
1646 CALL dgebs2d( ictxt,
'All',
' ', 1, 1, alpha, 1 )
1647 CALL dgebs2d( ictxt,
'All',
' ', 1, 1, beta, 1 )
1652 CALL igebs2d( ictxt,
'All',
' ', 3, 1, work, 3 )
1672 work( i ) = ichar( diagval( j ) )
1673 work( i+1 ) = ichar( tranval( j ) )
1674 work( i+2 ) = ichar( uploval( j ) )
1677 CALL icopy( ngrids, pval, 1, work( i ), 1 )
1679 CALL icopy( ngrids, qval, 1, work( i ), 1 )
1681 CALL icopy( nmat, mval, 1, work( i ), 1 )
1683 CALL icopy( nmat, nval, 1, work( i ), 1 )
1685 CALL icopy( nmat, maval, 1, work( i ), 1 )
1687 CALL icopy( nmat, naval, 1, work( i ), 1 )
1689 CALL icopy( nmat, imbaval, 1, work( i ), 1 )
1691 CALL icopy( nmat, inbaval, 1, work( i ), 1 )
1693 CALL icopy( nmat, mbaval, 1, work( i ), 1 )
1695 CALL icopy( nmat, nbaval, 1, work( i ), 1 )
1697 CALL icopy( nmat, rscaval, 1, work( i ), 1 )
1699 CALL icopy( nmat, cscaval, 1, work( i ), 1 )
1701 CALL icopy( nmat, iaval, 1, work( i ), 1 )
1703 CALL icopy( nmat, javal, 1, work( i ), 1 )
1705 CALL icopy( nmat, mxval, 1, work( i ), 1 )
1707 CALL icopy( nmat, nxval, 1, work( i ), 1 )
1709 CALL icopy( nmat, imbxval, 1, work( i ), 1 )
1711 CALL icopy( nmat, inbxval, 1, work( i ), 1 )
1713 CALL icopy( nmat, mbxval, 1, work( i ), 1 )
1715 CALL icopy( nmat, nbxval, 1, work( i ), 1 )
1717 CALL icopy( nmat, rscxval, 1, work( i ), 1 )
1719 CALL icopy( nmat, cscxval, 1, work( i ), 1 )
1721 CALL icopy( nmat, ixval, 1, work( i ), 1 )
1723 CALL icopy( nmat, jxval, 1, work( i ), 1 )
1725 CALL icopy( nmat, incxval, 1, work( i ), 1 )
1727 CALL icopy( nmat, myval, 1, work( i ), 1 )
1729 CALL icopy( nmat, nyval, 1, work( i ), 1 )
1731 CALL icopy( nmat, imbyval, 1, work( i ), 1 )
1733 CALL icopy( nmat, inbyval, 1, work( i ), 1 )
1735 CALL icopy( nmat, mbyval, 1, work( i ), 1 )
1737 CALL icopy( nmat, nbyval, 1, work( i ), 1 )
1739 CALL icopy( nmat, rscyval, 1, work( i ), 1 )
1741 CALL icopy( nmat, cscyval, 1, work( i ), 1 )
1743 CALL icopy( nmat, iyval, 1, work( i ), 1 )
1745 CALL icopy( nmat, jyval, 1, work( i ), 1 )
1747 CALL icopy( nmat, incyval, 1, work( i ), 1 )
1751 IF( ltest( j ) )
THEN
1759 CALL igebs2d( ictxt,
'All',
' ', i, 1, work, i )
1763 WRITE( nout, fmt = 9999 )
'Level 2 PBLAS testing program.'
1764 WRITE( nout, fmt = 9999 ) usrinfo
1765 WRITE( nout, fmt = * )
1766 WRITE( nout, fmt = 9999 )
1767 $
'Tests of the real double precision '//
1769 WRITE( nout, fmt = * )
1770 WRITE( nout, fmt = 9993 ) nmat
1771 WRITE( nout, fmt = 9979 ) nblog
1772 WRITE( nout, fmt = 9992 ) ngrids
1773 WRITE( nout, fmt = 9990 )
1774 $
'P', ( pval(i), i = 1,
min(ngrids, 5) )
1776 $
WRITE( nout, fmt = 9991 ) ( pval(i), i = 6,
1777 $
min( 10, ngrids ) )
1779 $
WRITE( nout, fmt = 9991 ) ( pval(i), i = 11,
1780 $
min( 15, ngrids ) )
1782 $
WRITE( nout, fmt = 9991 ) ( pval(i), i = 16, ngrids )
1783 WRITE( nout, fmt = 9990 )
1784 $
'Q', ( qval(i), i = 1,
min(ngrids, 5) )
1786 $
WRITE( nout, fmt = 9991 ) ( qval(i), i = 6,
1787 $
min( 10, ngrids ) )
1789 $
WRITE( nout, fmt = 9991 ) ( qval(i), i = 11,
1790 $
min( 15, ngrids ) )
1792 $
WRITE( nout, fmt = 9991 ) ( qval(i), i = 16, ngrids )
1793 WRITE( nout, fmt = 9988 ) sof
1794 WRITE( nout, fmt = 9987 ) tee
1795 WRITE( nout, fmt = 9983 ) igap
1796 WRITE( nout, fmt = 9986 ) iverb
1797 WRITE( nout, fmt = 9980 ) thresh
1798 WRITE( nout, fmt = 9982 ) alpha
1799 WRITE( nout, fmt = 9981 ) beta
1800 IF( ltest( 1 ) )
THEN
1801 WRITE( nout, fmt = 9985 ) snames( 1 ),
' ... Yes'
1803 WRITE( nout, fmt = 9985 ) snames( 1 ),
' ... No '
1806 IF( ltest( i ) )
THEN
1807 WRITE( nout, fmt = 9984 ) snames( i ),
' ... Yes'
1809 WRITE( nout, fmt = 9984 ) snames( i ),
' ... No '
1812 WRITE( nout, fmt = 9994 ) eps
1813 WRITE( nout, fmt = * )
1820 $
CALL blacs_setup( iam, nprocs )
1825 CALL blacs_get( -1, 0, ictxt )
1826 CALL blacs_gridinit( ictxt,
'Row-major', 1, nprocs )
1832 CALL sgebr2d( ictxt,
'All',
' ', 1, 1, thresh, 1, 0, 0 )
1833 CALL dgebr2d( ictxt,
'All',
' ', 1, 1, alpha, 1, 0, 0 )
1834 CALL dgebr2d( ictxt,
'All',
' ', 1, 1, beta, 1, 0, 0 )
1836 CALL igebr2d( ictxt,
'All',
' ', 3, 1, work, 3, 0, 0 )
1841 i = 2*ngrids + 37*nmat + nsubs + 4
1842 CALL igebr2d( ictxt,
'All',
' ', i, 1, work, i, 0, 0 )
1845 IF( work( i ).EQ.1 )
THEN
1851 IF( work( i ).EQ.1 )
THEN
1862 diagval( j ) = char( work( i ) )
1863 tranval( j ) = char( work( i+1 ) )
1864 uploval( j ) = char( work( i+2 ) )
1867 CALL icopy( ngrids, work( i ), 1, pval, 1 )
1869 CALL icopy( ngrids, work( i ), 1, qval, 1 )
1871 CALL icopy( nmat, work( i ), 1, mval, 1 )
1873 CALL icopy( nmat, work( i ), 1, nval, 1 )
1875 CALL icopy( nmat, work( i ), 1, maval, 1 )
1877 CALL icopy( nmat, work( i ), 1, naval, 1 )
1879 CALL icopy( nmat, work( i ), 1, imbaval, 1 )
1881 CALL icopy( nmat, work( i ), 1, inbaval, 1 )
1883 CALL icopy( nmat, work( i ), 1, mbaval, 1 )
1885 CALL icopy( nmat, work( i ), 1, nbaval, 1 )
1887 CALL icopy( nmat, work( i ), 1, rscaval, 1 )
1889 CALL icopy( nmat, work( i ), 1, cscaval, 1 )
1891 CALL icopy( nmat, work( i ), 1, iaval, 1 )
1893 CALL icopy( nmat, work( i ), 1, javal, 1 )
1895 CALL icopy( nmat, work( i ), 1, mxval, 1 )
1897 CALL icopy( nmat, work( i ), 1, nxval, 1 )
1899 CALL icopy( nmat, work( i ), 1, imbxval, 1 )
1901 CALL icopy( nmat, work( i ), 1, inbxval, 1 )
1903 CALL icopy( nmat, work( i ), 1, mbxval, 1 )
1905 CALL icopy( nmat, work( i ), 1, nbxval, 1 )
1907 CALL icopy( nmat, work( i ), 1, rscxval, 1 )
1909 CALL icopy( nmat, work( i ), 1, cscxval, 1 )
1911 CALL icopy( nmat, work( i ), 1, ixval, 1 )
1913 CALL icopy( nmat, work( i ), 1, jxval, 1 )
1915 CALL icopy( nmat, work( i ), 1, incxval, 1 )
1917 CALL icopy( nmat, work( i ), 1, myval, 1 )
1919 CALL icopy( nmat, work( i ), 1, nyval, 1 )
1921 CALL icopy( nmat, work( i ), 1, imbyval, 1 )
1923 CALL icopy( nmat, work( i ), 1, inbyval, 1 )
1925 CALL icopy( nmat, work( i ), 1, mbyval, 1 )
1927 CALL icopy( nmat, work( i ), 1, nbyval, 1 )
1929 CALL icopy( nmat, work( i ), 1, rscyval, 1 )
1931 CALL icopy( nmat, work( i ), 1, cscyval, 1 )
1933 CALL icopy( nmat, work( i ), 1, iyval, 1 )
1935 CALL icopy( nmat, work( i ), 1, jyval, 1 )
1937 CALL icopy( nmat, work( i ), 1, incyval, 1 )
1941 IF( work( i ).EQ.1 )
THEN
1944 ltest( j ) = .false.
1951 CALL blacs_gridexit( ictxt )
1955 120
WRITE( nout, fmt = 9997 )
1957 IF( nout.NE.6 .AND. nout.NE.0 )
1959 CALL blacs_abort( ictxt, 1 )
1964 9998
FORMAT(
' Number of values of ',5a,
' is less than 1 or greater ',
1966 9997
FORMAT(
' Illegal input in file ',40a,
'. Aborting run.' )
1967 9996
FORMAT( a7, l2 )
1968 9995
FORMAT(
' Subprogram name ', a7,
' not recognized',
1969 $ /
' ******* TESTS ABANDONED *******' )
1970 9994
FORMAT( 2x,
'Relative machine precision (eps) is taken to be ',
1972 9993
FORMAT( 2x,
'Number of Tests : ', i6 )
1973 9992
FORMAT( 2x,
'Number of process grids : ', i6 )
1974 9991
FORMAT( 2x,
' : ', 5i6 )
1975 9990
FORMAT( 2x, a1,
' : ', 5i6 )
1976 9988
FORMAT( 2x,
'Stop on failure flag : ', l6 )
1977 9987
FORMAT( 2x,
'Test for error exits flag : ', l6 )
1978 9986
FORMAT( 2x,
'Verbosity level : ', i6 )
1979 9985
FORMAT( 2x,
'Routines to be tested : ', a, a8 )
1980 9984
FORMAT( 2x,
' ', a, a8 )
1981 9983
FORMAT( 2x,
'Leading dimension gap : ', i6 )
1982 9982
FORMAT( 2x,
'Alpha : ', g16.6 )
1983 9981
FORMAT( 2x,
'Beta : ', g16.6 )
1984 9980
FORMAT( 2x,
'Threshold value : ', g16.6 )
1985 9979
FORMAT( 2x,
'Logical block size : ', i6 )
1998 INTEGER INOUT, NPROCS
2068 PARAMETER ( NSUBS = 7 )
2072 INTEGER I, ICTXT, MYCOL, MYROW, NPCOL, NPROW
2075 INTEGER SCODE( NSUBS )
2078 EXTERNAL BLACS_GET, BLACS_GRIDEXIT, BLACS_GRIDINFO,
2079 $ blacs_gridinit,
pddimee, pdgemv, pdger,
2086 CHARACTER*7 SNAMES( NSUBS )
2087 COMMON /snamec/snames
2088 COMMON /pberrorc/nout, abrtflg
2091 DATA scode/21, 22, 23, 23, 24, 25, 27/
2098 CALL blacs_get( -1, 0, ictxt )
2099 CALL blacs_gridinit( ictxt,
'Row-major', 1, nprocs )
2100 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
2113 IF( ltest( i ) )
THEN
2114 CALL pdoptee( ictxt, nout, pdgemv, scode( i ), snames( i ) )
2115 CALL pddimee( ictxt, nout, pdgemv, scode( i ), snames( i ) )
2116 CALL pdmatee( ictxt, nout, pdgemv, scode( i ), snames( i ) )
2117 CALL pdvecee( ictxt, nout, pdgemv, scode( i ), snames( i ) )
2123 IF( ltest( i ) )
THEN
2124 CALL pdoptee( ictxt, nout, pdsymv, scode( i ), snames( i ) )
2125 CALL pddimee( ictxt, nout, pdsymv, scode( i ), snames( i ) )
2126 CALL pdmatee( ictxt, nout, pdsymv, scode( i ), snames( i ) )
2127 CALL pdvecee( ictxt, nout, pdsymv, scode( i ), snames( i ) )
2133 IF( ltest( i ) )
THEN
2134 CALL pdoptee( ictxt, nout, pdtrmv, scode( i ), snames( i ) )
2135 CALL pddimee( ictxt, nout, pdtrmv, scode( i ), snames( i ) )
2136 CALL pdmatee( ictxt, nout, pdtrmv, scode( i ), snames( i ) )
2137 CALL pdvecee( ictxt, nout, pdtrmv, scode( i ), snames( i ) )
2143 IF( ltest( i ) )
THEN
2144 CALL pdoptee( ictxt, nout, pdtrsv, scode( i ), snames( i ) )
2145 CALL pddimee( ictxt, nout, pdtrsv, scode( i ), snames( i ) )
2146 CALL pdmatee( ictxt, nout, pdtrsv, scode( i ), snames( i ) )
2147 CALL pdvecee( ictxt, nout, pdtrsv, scode( i ), snames( i ) )
2153 IF( ltest( i ) )
THEN
2154 CALL pddimee( ictxt, nout, pdger, scode( i ), snames( i ) )
2155 CALL pdvecee( ictxt, nout, pdger, scode( i ), snames( i ) )
2156 CALL pdmatee( ictxt, nout, pdger, scode( i ), snames( i ) )
2162 IF( ltest( i ) )
THEN
2163 CALL pdoptee( ictxt, nout, pdsyr, scode( i ), snames( i ) )
2164 CALL pddimee( ictxt, nout, pdsyr, scode( i ), snames( i ) )
2165 CALL pdvecee( ictxt, nout, pdsyr, scode( i ), snames( i ) )
2166 CALL pdmatee( ictxt, nout, pdsyr, scode( i ), snames( i ) )
2172 IF( ltest( i ) )
THEN
2173 CALL pdoptee( ictxt, nout, pdsyr2, scode( i ), snames( i ) )
2174 CALL pddimee( ictxt, nout, pdsyr2, scode( i ), snames( i ) )
2175 CALL pdvecee( ictxt, nout, pdsyr2, scode( i ), snames( i ) )
2176 CALL pdmatee( ictxt, nout, pdsyr2, scode( i ), snames( i ) )
2179 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2180 $
WRITE( nout, fmt = 9999 )
2182 CALL blacs_gridexit( ictxt )
2188 9999
FORMAT( 2x,
'Error-exit tests completed.' )
2195 SUBROUTINE pdchkarg2( ICTXT, NOUT, SNAME, UPLO, TRANS, DIAG, M,
2196 $ N, ALPHA, IA, JA, DESCA, IX, JX, DESCX,
2197 $ INCX, BETA, IY, JY, DESCY, INCY, INFO )
2205 CHARACTER*1 DIAG, TRANS, UPLO
2206 INTEGER IA, ICTXT, INCX, INCY, INFO, IX, IY, JA, JX,
2208 DOUBLE PRECISION ALPHA, BETA
2212 INTEGER DESCA( * ), DESCX( * ), DESCY( * )
2326 INTEGER BLOCK_CYCLIC_2D_INB, CSRC_, CTXT_, DLEN_,
2327 $ DTYPE_, IMB_, INB_, LLD_, MB_, M_, NB_, N_,
2329 PARAMETER ( BLOCK_CYCLIC_2D_INB = 2, dlen_ = 11,
2330 $ dtype_ = 1, ctxt_ = 2, m_ = 3, n_ = 4,
2331 $ imb_ = 5, inb_ = 6, mb_ = 7, nb_ = 8,
2332 $ rsrc_ = 9, csrc_ = 10, lld_ = 11 )
2335 CHARACTER*1 DIAGREF, TRANSREF, UPLOREF
2336 INTEGER I, IAREF, INCXREF, INCYREF, IXREF, IYREF,
2337 $ JAREF, JXREF, JYREF, MREF, MYCOL, MYROW, NPCOL,
2339 DOUBLE PRECISION ALPHAREF, BETAREF
2342 CHARACTER*15 ARGNAME
2343 INTEGER DESCAREF( DLEN_ ), DESCXREF( DLEN_ ),
2347 EXTERNAL BLACS_GRIDINFO, IGSUM2D
2360 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
2364 IF( info.EQ.0 )
THEN
2375 descaref( i ) = desca( i )
2380 descxref( i ) = descx( i )
2387 descyref( i ) = descy( i )
2396 IF( .NOT. lsame( diag, diagref ) )
THEN
2397 WRITE( argname, fmt =
'(A)' )
'DIAG'
2398 ELSE IF( .NOT. lsame( trans, transref ) )
THEN
2399 WRITE( argname, fmt =
'(A)' )
'TRANS'
2400 ELSE IF( .NOT. lsame( uplo, uploref ) )
THEN
2401 WRITE( argname, fmt =
'(A)' )
'UPLO'
2402 ELSE IF( m.NE.mref )
THEN
2403 WRITE( argname, fmt =
'(A)' )
'M'
2404 ELSE IF( n.NE.nref )
THEN
2405 WRITE( argname, fmt =
'(A)' )
'N'
2406 ELSE IF( alpha.NE.alpharef )
THEN
2407 WRITE( argname, fmt =
'(A)' )
'ALPHA'
2408 ELSE IF( ia.NE.iaref )
THEN
2409 WRITE( argname, fmt =
'(A)' )
'IA'
2410 ELSE IF( ja.NE.jaref )
THEN
2411 WRITE( argname, fmt =
'(A)' )
'JA'
2412 ELSE IF( desca( dtype_ ).NE.descaref( dtype_ ) )
THEN
2413 WRITE( argname, fmt =
'(A)' )
'DESCA( DTYPE_ )'
2414 ELSE IF( desca( m_ ).NE.descaref( m_ ) )
THEN
2415 WRITE( argname, fmt =
'(A)' )
'DESCA( M_ )'
2416 ELSE IF( desca( n_ ).NE.descaref( n_ ) )
THEN
2417 WRITE( argname, fmt =
'(A)' )
'DESCA( N_ )'
2418 ELSE IF( desca( imb_ ).NE.descaref( imb_ ) )
THEN
2419 WRITE( argname, fmt =
'(A)' )
'DESCA( IMB_ )'
2420 ELSE IF( desca( inb_ ).NE.descaref( inb_ ) )
THEN
2421 WRITE( argname, fmt =
'(A)' )
'DESCA( INB_ )'
2422 ELSE IF( desca( mb_ ).NE.descaref( mb_ ) )
THEN
2423 WRITE( argname, fmt =
'(A)' )
'DESCA( MB_ )'
2424 ELSE IF( desca( nb_ ).NE.descaref( nb_ ) )
THEN
2425 WRITE( argname, fmt =
'(A)' )
'DESCA( NB_ )'
2426 ELSE IF( desca( rsrc_ ).NE.descaref( rsrc_ ) )
THEN
2427 WRITE( argname, fmt =
'(A)' )
'DESCA( RSRC_ )'
2428 ELSE IF( desca( csrc_ ).NE.descaref( csrc_ ) )
THEN
2429 WRITE( argname, fmt =
'(A)' )
'DESCA( CSRC_ )'
2430 ELSE IF( desca( ctxt_ ).NE.descaref( ctxt_ ) )
THEN
2431 WRITE( argname, fmt =
'(A)' )
'DESCA( CTXT_ )'
2432 ELSE IF( desca( lld_ ).NE.descaref( lld_ ) )
THEN
2433 WRITE( argname, fmt =
'(A)' )
'DESCA( LLD_ )'
2434 ELSE IF( ix.NE.ixref )
THEN
2435 WRITE( argname, fmt =
'(A)' )
'IX'
2436 ELSE IF( jx.NE.jxref )
THEN
2437 WRITE( argname, fmt =
'(A)' )
'JX'
2438 ELSE IF( descx( dtype_ ).NE.descxref( dtype_ ) )
THEN
2439 WRITE( argname, fmt =
'(A)' )
'DESCX( DTYPE_ )'
2440 ELSE IF( descx( m_ ).NE.descxref( m_ ) )
THEN
2441 WRITE( argname, fmt =
'(A)' )
'DESCX( M_ )'
2442 ELSE IF( descx( n_ ).NE.descxref( n_ ) )
THEN
2443 WRITE( argname, fmt =
'(A)' )
'DESCX( N_ )'
2444 ELSE IF( descx( imb_ ).NE.descxref( imb_ ) )
THEN
2445 WRITE( argname, fmt =
'(A)' )
'DESCX( IMB_ )'
2446 ELSE IF( descx( inb_ ).NE.descxref( inb_ ) )
THEN
2447 WRITE( argname, fmt =
'(A)' )
'DESCX( INB_ )'
2448 ELSE IF( descx( mb_ ).NE.descxref( mb_ ) )
THEN
2449 WRITE( argname, fmt =
'(A)' )
'DESCX( MB_ )'
2450 ELSE IF( descx( nb_ ).NE.descxref( nb_ ) )
THEN
2451 WRITE( argname, fmt =
'(A)' )
'DESCX( NB_ )'
2452 ELSE IF( descx( rsrc_ ).NE.descxref( rsrc_ ) )
THEN
2453 WRITE( argname, fmt =
'(A)' )
'DESCX( RSRC_ )'
2454 ELSE IF( descx( csrc_ ).NE.descxref( csrc_ ) )
THEN
2455 WRITE( argname, fmt =
'(A)' )
'DESCX( CSRC_ )'
2456 ELSE IF( descx( ctxt_ ).NE.descxref( ctxt_ ) )
THEN
2457 WRITE( argname, fmt =
'(A)' )
'DESCX( CTXT_ )'
2458 ELSE IF( descx( lld_ ).NE.descxref( lld_ ) )
THEN
2459 WRITE( argname, fmt =
'(A)' )
'DESCX( LLD_ )'
2460 ELSE IF( incx.NE.incxref )
THEN
2461 WRITE( argname, fmt =
'(A)' )
'INCX'
2462 ELSE IF( beta.NE.betaref )
THEN
2463 WRITE( argname, fmt =
'(A)' )
'BETA'
2464 ELSE IF( iy.NE.iyref )
THEN
2465 WRITE( argname, fmt =
'(A)' )
'IY'
2466 ELSE IF( jy.NE.jyref )
THEN
2467 WRITE( argname, fmt =
'(A)' )
'JY'
2468 ELSE IF( descy( dtype_ ).NE.descyref( dtype_ ) )
THEN
2469 WRITE( argname, fmt =
'(A)' )
'DESCY( DTYPE_ )'
2470 ELSE IF( descy( m_ ).NE.descyref( m_ ) )
THEN
2471 WRITE( argname, fmt =
'(A)' )
'DESCY( M_ )'
2472 ELSE IF( descy( n_ ).NE.descyref( n_ ) )
THEN
2473 WRITE( argname, fmt =
'(A)' )
'DESCY( N_ )'
2474 ELSE IF( descy( imb_ ).NE.descyref( imb_ ) )
THEN
2475 WRITE( argname, fmt =
'(A)' )
'DESCY( IMB_ )'
2476 ELSE IF( descy( inb_ ).NE.descyref( inb_ ) )
THEN
2477 WRITE( argname, fmt =
'(A)' )
'DESCY( INB_ )'
2478 ELSE IF( descy( mb_ ).NE.descyref( mb_ ) )
THEN
2479 WRITE( argname, fmt =
'(A)' )
'DESCY( MB_ )'
2480 ELSE IF( descy( nb_ ).NE.descyref( nb_ ) )
THEN
2481 WRITE( argname, fmt =
'(A)' )
'DESCY( NB_ )'
2482 ELSE IF( descy( rsrc_ ).NE.descyref( rsrc_ ) )
THEN
2483 WRITE( argname, fmt =
'(A)' )
'DESCY( RSRC_ )'
2484 ELSE IF( descy( csrc_ ).NE.descyref( csrc_ ) )
THEN
2485 WRITE( argname, fmt =
'(A)' )
'DESCY( CSRC_ )'
2486 ELSE IF( descy( ctxt_ ).NE.descyref( ctxt_ ) )
THEN
2487 WRITE( argname, fmt =
'(A)' )
'DESCY( CTXT_ )'
2488 ELSE IF( descy( lld_ ).NE.descyref( lld_ ) )
THEN
2489 WRITE( argname, fmt =
'(A)' )
'DESCY( LLD_ )'
2490 ELSE IF( incy.NE.incyref )
THEN
2491 WRITE( argname, fmt =
'(A)' )
'INCY'
2496 CALL igsum2d( ictxt,
'All',
' ', 1, 1, info, 1, -1, 0 )
2498 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
THEN
2500 IF( info.NE.0 )
THEN
2501 WRITE( nout, fmt = 9999 ) argname, sname
2503 WRITE( nout, fmt = 9998 ) sname
2510 9999
FORMAT( 2x,
' ***** Input-only parameter check: ', a,
2511 $
' FAILED changed ', a,
' *****' )
2512 9998
FORMAT( 2x,
' ***** Input-only parameter check: ', a,
2520 SUBROUTINE pdblas2tstchk( ICTXT, NOUT, NROUT, UPLO, TRANS, DIAG,
2521 $ M, N, ALPHA, A, PA, IA, JA, DESCA, X,
2522 $ PX, IX, JX, DESCX, INCX, BETA, Y, PY,
2523 $ IY, JY, DESCY, INCY, THRESH, ROGUE,
2532 CHARACTER*1 DIAG, TRANS, UPLO
2533 INTEGER IA, ICTXT, INCX, INCY, INFO, IX, IY, JA, JX,
2534 $ JY, M, N, NOUT, NROUT
2536 DOUBLE PRECISION ALPHA, BETA, ROGUE
2539 INTEGER DESCA( * ), DESCX( * ), DESCY( * )
2540 DOUBLE PRECISION A( * ), PA( * ), PX( * ), PY( * ), WORK( * ),
2754 DOUBLE PRECISION ONE, ZERO
2755 PARAMETER ( ONE = 1.0d+0, zero = 0.0d+0 )
2756 INTEGER BLOCK_CYCLIC_2D_INB, CSRC_, CTXT_, DLEN_,
2757 $ DTYPE_, IMB_, INB_, LLD_, MB_, M_, NB_, N_,
2759 PARAMETER ( BLOCK_CYCLIC_2D_INB = 2, dlen_ = 11,
2760 $ dtype_ = 1, ctxt_ = 2, m_ = 3, n_ = 4,
2761 $ imb_ = 5, inb_ = 6, mb_ = 7, nb_ = 8,
2762 $ rsrc_ = 9, csrc_ = 10, lld_ = 11 )
2765 INTEGER I, MYCOL, MYROW, NPCOL, NPROW
2766 DOUBLE PRECISION ERR
2788 IF( ( m.LE.0 ).OR.( n.LE.0 ) )
2793 CALL blacs_gridinfo( ictxt, nprow, npcol, myrow, mycol )
2799 IF( nrout.EQ.1 )
THEN
2805 CALL pdmvch( ictxt, trans, m, n, alpha, a, ia, ja, desca, x,
2806 $ ix, jx, descx, incx, beta, y, py, iy, jy, descy,
2807 $ incy, work, err, ierr( 3 ) )
2809 IF( ierr( 3 ).NE.0 )
THEN
2810 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2811 $
WRITE( nout, fmt = 9997 )
2812 ELSE IF( err.GT.dble( thresh ) )
THEN
2813 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2814 $
WRITE( nout, fmt = 9996 ) err
2819 CALL pdchkmin( err, m, n, a, pa, ia, ja, desca, ierr( 1 ) )
2820 IF( lsame( trans,
'N' ) )
THEN
2821 CALL pdchkvin( err, n, x, px, ix, jx, descx, incx,
2824 CALL pdchkvin( err, m, x, px, ix, jx, descx, incx,
2828 ELSE IF( nrout.EQ.2 )
THEN
2834 CALL pdmvch( ictxt,
'No transpose', n, n, alpha, a, ia, ja,
2835 $ desca, x, ix, jx, descx, incx, beta, y, py, iy,
2836 $ jy, descy, incy, work, err, ierr( 3 ) )
2838 IF( ierr( 3 ).NE.0 )
THEN
2839 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2840 $
WRITE( nout, fmt = 9997 )
2841 ELSE IF( err.GT.dble( thresh ) )
THEN
2842 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2843 $
WRITE( nout, fmt = 9996 ) err
2848 IF( lsame( uplo,
'L' ) )
THEN
2849 CALL pb_dlaset(
'Upper', n-1, n-1, 0, rogue, rogue,
2850 $ a( ia+ja*desca( m_ ) ), desca( m_ ) )
2852 CALL pb_dlaset(
'Lower', n-1, n-1, 0, rogue, rogue,
2853 $ a( ia+1+(ja-1)*desca( m_ ) ), desca( m_ ) )
2855 CALL pdchkmin( err, n, n, a, pa, ia, ja, desca, ierr( 1 ) )
2856 CALL pdchkvin( err, n, x, px, ix, jx, descx, incx, ierr( 2 ) )
2858 ELSE IF( nrout.EQ.3 )
THEN
2864 CALL pdmvch( ictxt, trans, n, n, one, a, ia, ja, desca, y, ix,
2865 $ jx, descx, incx, zero, x, px, ix, jx, descx, incx,
2866 $ work, err, ierr( 2 ) )
2868 IF( ierr( 2 ).NE.0 )
THEN
2869 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2870 $
WRITE( nout, fmt = 9997 )
2871 ELSE IF( err.GT.dble( thresh ) )
THEN
2872 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2873 $
WRITE( nout, fmt = 9996 ) err
2878 IF( lsame( uplo,
'L' ) )
THEN
2879 IF( lsame( diag,
'N' ) )
THEN
2880 CALL pb_dlaset(
'Upper', n-1, n-1, 0, rogue, rogue,
2881 $ a( ia+ja*desca( m_ ) ), desca( m_ ) )
2883 CALL pb_dlaset(
'Upper', n, n, 0, rogue, one,
2884 $ a( ia+(ja-1)*desca( m_ ) ), desca( m_ ) )
2887 IF( lsame( diag,
'N' ) )
THEN
2888 CALL pb_dlaset(
'Lower', n-1, n-1, 0, rogue, rogue,
2889 $ a( ia+1+(ja-1)*desca( m_ ) ),
2892 CALL pb_dlaset(
'Lower', n, n, 0, rogue, one,
2893 $ a( ia+(ja-1)*desca( m_ ) ), desca( m_ ) )
2896 CALL pdchkmin( err, n, n, a, pa, ia, ja, desca, ierr( 1 ) )
2898 ELSE IF( nrout.EQ.4 )
THEN
2904 CALL dtrsv( uplo, trans, diag, n, a( ia+(ja-1)*desca( m_ ) ),
2905 $ desca( m_ ), x( ix+(jx-1)*descx( m_ ) ), incx )
2906 CALL pdtrmv( uplo, trans, diag, n, pa, ia, ja, desca, px, ix,
2908 CALL pdmvch( ictxt, trans, n, n, one, a, ia, ja, desca, x, ix,
2909 $ jx, descx, incx, zero, y, px, ix, jx, descx, incx,
2910 $ work, err, ierr( 2 ) )
2912 IF( ierr( 2 ).NE.0 )
THEN
2913 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2914 $
WRITE( nout, fmt = 9997 )
2915 ELSE IF( err.GT.dble( thresh ) )
THEN
2916 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2917 $
WRITE( nout, fmt = 9996 ) err
2922 IF( lsame( uplo,
'L' ) )
THEN
2923 IF( lsame( diag,
'N' ) )
THEN
2924 CALL pb_dlaset(
'Upper', n-1, n-1, 0, rogue, rogue,
2925 $ a( ia+ja*desca( m_ ) ), desca( m_ ) )
2927 CALL pb_dlaset(
'Upper', n, n, 0, rogue, one,
2928 $ a( ia+(ja-1)*desca( m_ ) ), desca( m_ ) )
2931 IF( lsame( diag,
'N' ) )
THEN
2932 CALL pb_dlaset(
'Lower', n-1, n-1, 0, rogue, rogue,
2933 $ a( ia+1+(ja-1)*desca( m_ ) ),
2936 CALL pb_dlaset(
'Lower', n, n, 0, rogue, one,
2937 $ a( ia+(ja-1)*desca( m_ ) ), desca( m_ ) )
2940 CALL pdchkmin( err, n, n, a, pa, ia, ja, desca, ierr( 1 ) )
2942 ELSE IF( nrout.EQ.5 )
THEN
2948 CALL pdvmch( ictxt,
'Ge', m, n, alpha, x, ix, jx, descx,
2949 $ incx, y, iy, jy, descy, incy, a, pa, ia, ja,
2950 $ desca, work, err, ierr( 1 ) )
2951 IF( ierr( 1 ).NE.0 )
THEN
2952 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2953 $
WRITE( nout, fmt = 9997 )
2954 ELSE IF( err.GT.dble( thresh ) )
THEN
2955 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2956 $
WRITE( nout, fmt = 9996 ) err
2961 CALL pdchkvin( err, m, x, px, ix, jx, descx, incx, ierr( 2 ) )
2962 CALL pdchkvin( err, n, y, py, iy, jy, descy, incy, ierr( 3 ) )
2964 ELSE IF( nrout.EQ.6 )
THEN
2970 CALL pdvmch( ictxt, uplo, n, n, alpha, x, ix, jx, descx,
2971 $ incx, x, ix, jx, descx, incx, a, pa, ia, ja,
2972 $ desca, work, err, ierr( 1 ) )
2973 IF( ierr( 1 ).NE.0 )
THEN
2974 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2975 $
WRITE( nout, fmt = 9997 )
2976 ELSE IF( err.GT.dble( thresh ) )
THEN
2977 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2978 $
WRITE( nout, fmt = 9996 ) err
2983 CALL pdchkvin( err, n, x, px, ix, jx, descx, incx, ierr( 2 ) )
2985 ELSE IF( nrout.EQ.7 )
THEN
2991 CALL pdvmch2( ictxt, uplo, n, n, alpha, x, ix, jx, descx, incx,
2992 $ y, iy, jy, descy, incy, a, pa, ia, ja, desca,
2993 $ work, err, ierr( 1 ) )
2994 IF( ierr( 1 ).NE.0 )
THEN
2995 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2996 $
WRITE( nout, fmt = 9997 )
2997 ELSE IF( err.GT.dble( thresh ) )
THEN
2998 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
2999 $
WRITE( nout, fmt = 9996 ) err
3004 CALL pdchkvin( err, n, x, px, ix, jx, descx, incx, ierr( 2 ) )
3005 CALL pdchkvin( err, n, y, py, iy, jy, descy, incy, ierr( 3 ) )
3009 IF( ierr( 1 ).NE.0 )
THEN
3011 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3012 $
WRITE( nout, fmt = 9999 )
'A'
3015 IF( ierr( 2 ).NE.0 )
THEN
3017 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3018 $
WRITE( nout, fmt = 9998 )
'X'
3021 IF( ierr( 3 ).NE.0 )
THEN
3023 IF( myrow.EQ.0 .AND. mycol.EQ.0 )
3024 $
WRITE( nout, fmt = 9998 )
'Y'
3027 9999
FORMAT( 2x,
' ***** ERROR: Matrix operand ', a,
3028 $
' is incorrect.' )
3029 9998
FORMAT( 2x,
' ***** ERROR: Vector operand ', a,
3030 $
' is incorrect.' )
3031 9997
FORMAT( 2x,
' ***** FATAL ERROR - Computed result is less ',
3032 $
'than half accurate *****' )
3033 9996
FORMAT( 2x,
' ***** Test completed with maximum test ratio: ',
3034 $ f11.5,
' SUSPECT *****' )