4 CHARACTER*7 SNAMES( NSUBS )
6 DATA snames/
'PCSWAP ',
'PCSCAL ',
7 $
'PCSSCAL',
'PCCOPY ',
'PCAXPY ',
8 $
'PCDOTU ',
'PCDOTC ',
'PSCNRM2',
108 INTEGER maxtests, maxgrids, gapmul, cplxsz, totmem,
112 parameter( maxtests = 20, maxgrids = 20, gapmul = 10,
113 $ cplxsz = 8, totmem = 2000000,
114 $ memsiz = totmem / cplxsz,
115 $ padval = ( -9923.0e+0, -9923.0e+0 ),
116 $ rzero = 0.0e+0, zero = ( 0.0e+0, 0.0e+0 ),
118 INTEGER block_cyclic_2d_inb, csrc_, ctxt_, dlen_,
119 $ dtype_, imb_, inb_, lld_, mb_, m_, nb_, n_,
121 parameter( block_cyclic_2d_inb = 2, dlen_ = 11,
122 $ dtype_ = 1, ctxt_ = 2, m_ = 3, n_ = 4,
123 $ imb_ = 5, inb_ = 6, mb_ = 7, nb_ = 8,
124 $ rsrc_ = 9, csrc_ = 10, lld_ = 11 )
127 LOGICAL errflg, sof, tee
128 INTEGER csrcx, csrcy, i, iam, ictxt, igap, imbx, imby,
129 $ imidx, imidy, inbx, inby, incx, incy, ipmatx,
130 $ ipmaty, ipostx, iposty, iprex, iprey, ipw, ipx,
131 $ ipy, iverb, ix, ixseed, iy, iyseed, j, jx, jy,
132 $ k, ldx, ldy, mbx, mby, memreqd, mpx, mpy, mx,
133 $ my, mycol, myrow, n, nbx, nby, ngrids, nout,
134 $ npcol, nprocs, nprow, nqx, nqy, ntests, nx, ny,
135 $ pisclr, rsrcx, rsrcy, tskip, tstcnt
141 LOGICAL ltest( nsubs ), ycheck( nsubs )
142 INTEGER cscxval( maxtests ), cscyval( maxtests ),
143 $ descx( dlen_ ), descxr( dlen_ ),
144 $ descy( dlen_ ), descyr( dlen_ ), ierr( 4 ),
145 $ imbxval( maxtests ), imbyval( maxtests ),
146 $ inbxval( maxtests ), inbyval( maxtests ),
147 $ incxval( maxtests ), incyval( maxtests ),
148 $ ixval( maxtests ), iyval( maxtests ),
149 $ jxval( maxtests ), jyval( maxtests ),
150 $ kfail( nsubs ), kpass( nsubs ), kskip( nsubs ),
151 $ ktests( nsubs ), mbxval( maxtests ),
152 $ mbyval( maxtests ), mxval( maxtests ),
153 $ myval( maxtests ), nbxval( maxtests ),
154 $ nbyval( maxtests ), nval( maxtests ),
155 $ nxval( maxtests ), nyval( maxtests ),
156 $ pval( maxtests ), qval( maxtests ),
157 $ rscxval( maxtests ), rscyval( maxtests )
158 COMPLEX mem( memsiz )
171 INTRINSIC abs,
max, mod, real
174 CHARACTER*7 snames( nsubs )
177 COMMON /snamec/snames
178 COMMON /infoc/info, nblog
179 COMMON /pberrorc/nout, abrtflg
182 DATA ycheck/.true., .false., .false., .true.,
183 $ .true., .true., .true., .false., .false.,
219 CALL blacs_pinfo( iam, nprocs )
220 CALL pcbla1tstinfo( outfile, nout, ntests, nval, mxval, nxval,
221 $ imbxval, mbxval, inbxval, nbxval, rscxval,
222 $ cscxval, ixval, jxval, incxval, myval,
223 $ nyval, imbyval, mbyval, inbyval, nbyval,
224 $ rscyval, cscyval, iyval, jyval, incyval,
225 $ maxtests, ngrids, pval, maxgrids, qval,
226 $ maxgrids, ltest, sof, tee, iam, igap, iverb,
227 $ nprocs,
alpha, mem )
230 WRITE( nout, fmt = 9979 )
231 WRITE( nout, fmt = * )
249 IF( nprow.LT.1 )
THEN
251 $
WRITE( nout, fmt = 9999 )
'GRID SIZE',
'NPROW', nprow
253 ELSE IF( npcol.LT.1 )
THEN
255 $
WRITE( nout, fmt = 9999 )
'GRID SIZE',
'NPCOL', npcol
257 ELSE IF( nprow*npcol.GT.nprocs )
THEN
259 $
WRITE( nout, fmt = 9998 ) nprow*npcol, nprocs
263 IF( ierr( 1 ).GT.0 )
THEN
265 $
WRITE( nout, fmt = 9997 )
'GRID'
272 CALL blacs_get( -1, 0, ictxt )
279 IF( myrow.GE.nprow .OR. mycol.GE.npcol )
314 WRITE( nout, fmt = * )
315 WRITE( nout, fmt = 9996 ) tstcnt, nprow, npcol
316 WRITE( nout, fmt = * )
318 WRITE( nout, fmt = 9995 )
319 WRITE( nout, fmt = 9994 )
320 WRITE( nout, fmt = 9995 )
321 WRITE( nout, fmt = 9993 ) n, ix, jx, mx, nx, imbx, inbx,
322 $ mbx, nbx, rsrcx, csrcx, incx
324 WRITE( nout, fmt = 9995 )
325 WRITE( nout, fmt = 9992 )
326 WRITE( nout, fmt = 9995 )
327 WRITE( nout, fmt = 9993 ) n, iy, jy, my, ny, imby, inby,
328 $ mby, nby, rsrcy, csrcy, incy
329 WRITE( nout, fmt = 9995 )
335 $ block_cyclic_2d_inb, mx, nx, imbx, inbx,
336 $ mbx, nbx, rsrcx, csrcx, incx, mpx, nqx,
337 $ iprex, imidx, ipostx, igap, gapmul,
340 $ block_cyclic_2d_inb, my, ny, imby, inby,
341 $ mby, nby, rsrcy, csrcy, incy, mpy, nqy,
342 $ iprey, imidy, iposty, igap, gapmul,
345 IF( ierr( 1 ).GT.0 .OR. ierr( 2 ).GT.0 )
THEN
357 ipy = ipx + descx( lld_ ) * nqx + ipostx + iprey
358 ipmatx = ipy + descy( lld_ ) * nqy + iposty
359 ipmaty = ipmatx + mx * nx
360 ipw = ipmaty + my * ny
368 $
max(
max( imbx, mbx ),
max( imby, mby ) )
370 IF( memreqd.GT.memsiz )
THEN
372 $
WRITE( nout, fmt = 9990 ) memreqd*cplxsz
378 CALL igsum2d( ictxt,
'All',
' ', 1, 1, ierr, 1, -1, 0 )
380 IF( ierr( 1 ).GT.0 )
THEN
382 $
WRITE( nout, fmt = 9991 )
393 IF( .NOT.ltest( k ) )
397 WRITE( nout, fmt = * )
398 WRITE( nout, fmt = 9989 ) snames( k )
403 CALL pvdimchk( ictxt, nout, n,
'X', ix, jx, descx, incx,
405 CALL pvdimchk( ictxt, nout, n,
'Y', iy, jy, descy, incy,
408 IF( ierr( 1 ).NE.0 .OR. ierr( 2 ).NE.0 )
THEN
409 kskip( k ) = kskip( k ) + 1
415 CALL pclagen( .false.,
'None',
'No diag', 0, mx, nx, 1,
416 $ 1, descx, ixseed, mem( ipx ),
419 $
CALL pclagen( .false.,
'None',
'No diag', 0, my, ny,
420 $ 1, 1, descy, iyseed, mem( ipy ),
425 CALL pb_descset2( descxr, mx, nx, imbx, inbx, mbx, nbx,
426 $ -1, -1, ictxt,
max( 1, mx ) )
427 CALL pclagen( .false., 'none
', 'no diag
', 0, MX, NX, 1,
428 $ 1, DESCXR, IXSEED, MEM( IPMATX ),
430 IF( YCHECK( K ) ) THEN
431 CALL PB_DESCSET2( DESCYR, MY, NY, IMBY, INBY, MBY,
432 $ NBY, -1, -1, ICTXT, MAX( 1, MY ) )
433 CALL PCLAGEN( .FALSE., 'none
', 'no diag
', 0, MY, NY,
434 $ 1, 1, DESCYR, IYSEED, MEM( IPMATY ),
440 CALL PB_CFILLPAD( ICTXT, MPX, NQX, MEM( IPX-IPREX ),
441 $ DESCX( LLD_ ), IPREX, IPOSTX, PADVAL )
443 IF( YCHECK( K ) ) THEN
444 CALL PB_CFILLPAD( ICTXT, MPY, NQY, MEM( IPY-IPREY ),
445 $ DESCY( LLD_ ), IPREY, IPOSTY,
452 CALL PCCHKARG1( ICTXT, NOUT, SNAMES( K ), N, ALPHA, IX,
453 $ JX, DESCX, INCX, IY, JY, DESCY, INCY,
463.EQ.
IF( IVERB2 ) THEN
464.EQ.
IF( INCXDESCX( M_ ) ) THEN
465 CALL PB_PCLAPRNT( 1, N, MEM( IPX ), IX, JX, DESCX,
466 $ 0, 0, 'parallel_initial_x
', NOUT,
469 CALL PB_PCLAPRNT( N, 1, MEM( IPX ), IX, JX, DESCX,
470 $ 0, 0, 'parallel_initial_x
', NOUT,
473 IF( YCHECK( K ) ) THEN
474.EQ.
IF( INCYDESCY( M_ ) ) THEN
475 CALL PB_PCLAPRNT( 1, N, MEM( IPY ), IY, JY,
477 $ 'parallel_initial_y
', NOUT,
480 CALL PB_PCLAPRNT( N, 1, MEM( IPY ), IY, JY,
482 $ 'parallel_initial_y
', NOUT,
486.GE.
ELSE IF( IVERB3 ) THEN
487 CALL PB_PCLAPRNT( MX, NX, MEM( IPX ), 1, 1, DESCX, 0,
488 $ 0, 'parallel_initial_x
', NOUT,
491 $ CALL PB_PCLAPRNT( MY, NY, MEM( IPY ), 1, 1, DESCY,
492 $ 0, 0, 'parallel_initial_y
', NOUT,
502 CALL PCSWAP( N, MEM( IPX ), IX, JX, DESCX, INCX,
503 $ MEM( IPY ), IY, JY, DESCY, INCY )
505.EQ.
ELSE IF( K2 ) THEN
510 CALL PCSCAL( N, ALPHA, MEM( IPX ), IX, JX, DESCX,
513.EQ.
ELSE IF( K3 ) THEN
517 PUSCLR = REAL( ALPHA )
518 CALL PCSSCAL( N, REAL( ALPHA ), MEM( IPX ), IX, JX,
521.EQ.
ELSE IF( K4 ) THEN
525 CALL PCCOPY( N, MEM( IPX ), IX, JX, DESCX, INCX,
526 $ MEM( IPY ), IY, JY, DESCY, INCY )
528.EQ.
ELSE IF( K5 ) THEN
533 CALL PCAXPY( N, ALPHA, MEM( IPX ), IX, JX, DESCX,
534 $ INCX, MEM( IPY ), IY, JY, DESCY, INCY )
536.EQ.
ELSE IF( K6 ) THEN
540 CALL PCDOTU( N, PSCLR, MEM( IPX ), IX, JX, DESCX,
541 $ INCX, MEM( IPY ), IY, JY, DESCY, INCY )
543.EQ.
ELSE IF( K7 ) THEN
547 CALL PCDOTC( N, PSCLR, MEM( IPX ), IX, JX, DESCX,
548 $ INCX, MEM( IPY ), IY, JY, DESCY, INCY )
550.EQ.
ELSE IF( K8 ) THEN
554 CALL PSCNRM2( N, PUSCLR, MEM( IPX ), IX, JX, DESCX,
557.EQ.
ELSE IF( K9 ) THEN
561 CALL PSCASUM( N, PUSCLR, MEM( IPX ), IX, JX, DESCX,
564.EQ.
ELSE IF( K10 ) THEN
566 CALL PCAMAX( N, PSCLR, PISCLR, MEM( IPX ), IX, JX,
574 KSKIP( K ) = KSKIP( K ) + 1
576 $ WRITE( NOUT, FMT = 9978 ) INFO
582 CALL PCBLAS1TSTCHK( ICTXT, NOUT, K, N, PSCLR, PUSCLR,
583 $ PISCLR, MEM( IPMATX ), MEM( IPX ),
584 $ IX, JX, DESCX, INCX, MEM( IPMATY ),
585 $ MEM( IPY ), IY, JY, DESCY, INCY,
587.EQ.
IF( MOD( INFO, 2 )1 ) THEN
589.EQ.
ELSE IF( MOD( INFO / 2, 2 )1 ) THEN
591.NE.
ELSE IF( INFO0 ) THEN
598 CALL PB_CCHEKPAD( ICTXT, SNAMES( K ), MPX, NQX,
599 $ MEM( IPX-IPREX ), DESCX( LLD_ ),
600 $ IPREX, IPOSTX, PADVAL )
601 IF( YCHECK( K ) ) THEN
602 CALL PB_CCHEKPAD( ICTXT, SNAMES( K ), MPY, NQY,
603 $ MEM( IPY-IPREY ), DESCY( LLD_ ),
604 $ IPREY, IPOSTY, PADVAL )
610 CALL PCCHKARG1( ICTXT, NOUT, SNAMES( K ), N, ALPHA, IX,
611 $ JX, DESCX, INCX, IY, JY, DESCY, INCY,
616 CALL PCCHKVOUT( N, MEM( IPMATX ), MEM( IPX ), IX, JX,
617 $ DESCX, INCX, IERR( 3 ) )
619.NE.
IF( IERR( 3 )0 ) THEN
621 $ WRITE( NOUT, FMT = 9986 ) 'parallel_x
', SNAMES( K )
624 IF( YCHECK( K ) ) THEN
625 CALL PCCHKVOUT( N, MEM( IPMATY ), MEM( IPY ), IY, JY,
626 $ DESCY, INCY, IERR( 4 ) )
627.NE.
IF( IERR( 4 )0 ) THEN
629 $ WRITE( NOUT, FMT = 9986 ) 'parallel_y
',
636.NE..OR..NE..OR.
IF( INFO0 IERR( 1 )0
637.NE..OR..NE..OR.
$ IERR( 2 )0 IERR( 3 )0
638.NE.
$ IERR( 4 ) 0 ) THEN
640 $ WRITE( NOUT, FMT = 9988 ) SNAMES( K )
641 KFAIL( K ) = KFAIL( K ) + 1
645 $ WRITE( NOUT, FMT = 9987 ) SNAMES( K )
646 KPASS( K ) = KPASS( K ) + 1
651.GE..AND.
IF( IVERB1 ERRFLG ) THEN
652.NE..OR..GE.
IF( IERR( 3 )0 IVERB3 ) THEN
653 CALL PCMPRNT( ICTXT, NOUT, MX, NX, MEM( IPMATX ),
654 $ LDX, 0, 0, 'serial_x
' )
655 CALL PB_PCLAPRNT( MX, NX, MEM( IPX ), 1, 1, DESCX,
656 $ 0, 0, 'parallel_x
', NOUT,
658.NE.
ELSE IF( IERR( 1 )0 ) THEN
660 $ CALL PCVPRNT( ICTXT, NOUT, N,
661 $ MEM( IPMATX+IX-1+(JX-1)*LDX ),
662 $ INCX, 0, 0, 'serial_x
' )
663.EQ.
IF( INCXDESCX( M_ ) ) THEN
664 CALL PB_PCLAPRNT( 1, N, MEM( IPX ), IX, JX,
665 $ DESCX, 0, 0, 'parallel_x
',
666 $ NOUT, MEM( IPMATX ) )
668 CALL PB_PCLAPRNT( N, 1, MEM( IPX ), IX, JX,
669 $ DESCX, 0, 0, 'parallel_x
',
670 $ NOUT, MEM( IPMATX ) )
673 IF( YCHECK( K ) ) THEN
674.NE..OR..GE.
IF( IERR( 4 )0 IVERB3 ) THEN
675 CALL PCMPRNT( ICTXT, NOUT, MY, NY,
676 $ MEM( IPMATY ), LDY, 0, 0,
678 CALL PB_PCLAPRNT( MY, NY, MEM( IPY ), 1, 1,
679 $ DESCY, 0, 0, 'parallel_y
',
680 $ NOUT, MEM( IPMATX ) )
681.NE.
ELSE IF( IERR( 2 )0 ) THEN
683 $ CALL PCVPRNT( ICTXT, NOUT, N,
684 $ MEM( IPMATY+IY-1+(JY-1)*LDY ),
685 $ INCY, 0, 0, 'serial_y
' )
686.EQ.
IF( INCYDESCY( M_ ) ) THEN
687 CALL PB_PCLAPRNT( 1, N, MEM( IPY ), IY, JY,
688 $ DESCY, 0, 0, 'parallel_y
',
689 $ NOUT, MEM( IPMATX ) )
691 CALL PB_PCLAPRNT( N, 1, MEM( IPY ), IY, JY,
692 $ DESCY, 0, 0, 'parallel_y
',
693 $ NOUT, MEM( IPMATX ) )
706.EQ.
40 IF( IAM0 ) THEN
707 WRITE( NOUT, FMT = * )
708 WRITE( NOUT, FMT = 9985 ) J
713 CALL BLACS_GRIDEXIT( ICTXT )
724 IF( LTEST( I ) ) THEN
725 KSKIP( I ) = KSKIP( I ) + TSKIP
726 KTESTS( I ) = KSKIP( I ) + KFAIL( I ) + KPASS( I )
733 WRITE( NOUT, FMT = * )
734 WRITE( NOUT, FMT = 9981 )
735 WRITE( NOUT, FMT = * )
736 WRITE( NOUT, FMT = 9983 )
737 WRITE( NOUT, FMT = 9982 )
740 WRITE( NOUT, FMT = 9984 ) '|
', SNAMES( I ), KTESTS( I ),
741 $ KPASS( I ), KFAIL( I ), KSKIP( I )
743 WRITE( NOUT, FMT = * )
744 WRITE( NOUT, FMT = 9980 )
745 WRITE( NOUT, FMT = * )
751 9999 FORMAT( 'illegal
', A, ':
', A, ' =
', I10,
752 $ ' should be at least 1
' )
753 9998 FORMAT( 'illegal grid: nprow*npcol =
', I4,
754 $ '. it can be at most
', I4 )
755 9997 FORMAT( 'bad
', A, ' parameters: going on to next test case.
' )
756 9996 FORMAT( 2X, 'test number
', I4 , ' started on a
', I6, ' x
',
757 $ I6, ' process grid.
' )
758 9995 FORMAT( 2X, '---------------------------------------------------
',
759 $ '--------------------------
' )
760 9994 FORMAT( 2X, ' n ix jx mx nx imbx inbx
',
761 $ ' mbx nbx rsrcx csrcx incx
' )
762 9993 FORMAT( 2X,I6,1X,I6,1X,I6,1X,I6,1X,I6,1X,I5,1X,I5,1X,I5,1X,I5,1X,
764 9992 FORMAT( 2X, ' n iy jy my ny imby inby
',
765 $ ' mby nby rsrcy csrcy incy
' )
766 9991 FORMAT( 'not enough memory
for this test: going on to
',
767 $ ' next test case.
' )
768 9990 FORMAT( 'not enough memory. need:
', I12 )
769 9989 FORMAT( 2X, ' tested subroutine:
', A )
770 9988 FORMAT( 2X, ' ***** computational check:
', A, ' ',
771 $ ' failed
',' *****
' )
772 9987 FORMAT( 2X, ' ***** computational check:
', A, ' ',
773 $ ' passed
',' *****
' )
774 9986 FORMAT( 2X, ' ***** error ***** matrix operand
', A,
775 $ ' modified by
', A, ' *****
' )
776 9985 FORMAT( 2X, 'test number
', I4, ' completed.
' )
777 9984 FORMAT( 2X,A1,2X,A7,8X,I4,6X,I4,5X,I4,4X,I4 )
778 9983 FORMAT( 2X, ' SUBROUTINE total tests passed failed
',
780 9982 FORMAT( 2X, ' ---------- ----------- ------ ------
',
782 9981 FORMAT( 2X, 'testing summary
')
783 9980 FORMAT( 2X, 'end of tests.
' )
784 9979 FORMAT( 2X, 'tests started.
' )
785 9978 FORMAT( 2X, ' ***** operation not supported, error code:
',
793 SUBROUTINE PCBLA1TSTINFO( SUMMRY, NOUT, NMAT, NVAL, MXVAL,
794 $ NXVAL, IMBXVAL, MBXVAL, INBXVAL,
795 $ NBXVAL, RSCXVAL, CSCXVAL, IXVAL,
796 $ JXVAL, INCXVAL, MYVAL, NYVAL, IMBYVAL,
797 $ MBYVAL, INBYVAL, NBYVAL, RSCYVAL,
798 $ CSCYVAL, IYVAL, JYVAL, INCYVAL,
799 $ LDVAL, NGRIDS, PVAL, LDPVAL, QVAL,
800 $ LDQVAL, LTEST, SOF, TEE, IAM, IGAP,
801 $ IVERB, NPROCS, ALPHA, WORK )
810 INTEGER IAM, IGAP, IVERB, LDPVAL, LDQVAL, LDVAL,
811 $ NGRIDS, NMAT, NOUT, NPROCS
815 CHARACTER*( * ) SUMMRY
817 INTEGER CSCXVAL( LDVAL ), CSCYVAL( LDVAL ),
818 $ IMBXVAL( LDVAL ), IMBYVAL( LDVAL ),
819 $ INBXVAL( LDVAL ), INBYVAL( LDVAL ),
820 $ INCXVAL( LDVAL ), INCYVAL( LDVAL ),
821 $ IXVAL( LDVAL ), IYVAL( LDVAL ), JXVAL( LDVAL ),
822 $ JYVAL( LDVAL ), MBXVAL( LDVAL ),
823 $ MBYVAL( LDVAL ), MXVAL( LDVAL ),
824 $ MYVAL( LDVAL ), NBXVAL( LDVAL ),
825 $ NBYVAL( LDVAL ), NVAL( LDVAL ), NXVAL( LDVAL ),
826 $ NYVAL( LDVAL ), PVAL( LDPVAL ), QVAL( LDQVAL ),
827 $ RSCXVAL( LDVAL ), RSCYVAL( LDVAL ), WORK( * )
1037 PARAMETER ( NIN = 11, NSUBS = 10 )
1046 CHARACTER*79 USRINFO
1049 EXTERNAL BLACS_ABORT, BLACS_GET, BLACS_GRIDEXIT,
1050 $ BLACS_GRIDINIT, BLACS_SETUP, CGEBR2D, CGEBS2D,
1051 $ ICOPY, IGEBR2D, IGEBS2D, SGEBR2D, SGEBS2D
1061 CHARACTER*7 SNAMES( NSUBS )
1062 COMMON /SNAMEC/SNAMES
1073 OPEN( NIN, FILE='pcblas1tst.dat
', STATUS='old
' )
1074 READ( NIN, FMT = * ) SUMMRY
1079 READ( NIN, FMT = 9999 ) USRINFO
1083 READ( NIN, FMT = * ) SUMMRY
1084 READ( NIN, FMT = * ) NOUT
1085.NE..AND..NE.
IF( NOUT0 NOUT6 )
1086 $ OPEN( NOUT, FILE = SUMMRY, STATUS = 'unknown
' )
1092 READ( NIN, FMT = * ) SOF
1096 READ( NIN, FMT = * ) TEE
1100 READ( NIN, FMT = * ) IVERB
1101.LT..OR..GT.
IF( IVERB0 IVERB3 )
1106 READ( NIN, FMT = * ) IGAP
1112 READ( NIN, FMT = * ) NGRIDS
1113.LT..OR..GT.
IF( NGRIDS1 NGRIDSLDPVAL ) THEN
1114 WRITE( NOUT, FMT = 9998 ) 'grids
', LDPVAL
1116.GT.
ELSE IF( NGRIDSLDQVAL ) THEN
1117 WRITE( NOUT, FMT = 9998 ) 'grids
', LDQVAL
1123 READ( NIN, FMT = * ) ( PVAL( I ), I = 1, NGRIDS )
1124 READ( NIN, FMT = * ) ( QVAL( I ), I = 1, NGRIDS )
1128 READ( NIN, FMT = * ) ALPHA
1132 READ( NIN, FMT = * ) NMAT
1133.LT..OR..GT.
IF( NMAT1 NMATLDVAL ) THEN
1134 WRITE( NOUT, FMT = 9998 ) 'tests
', LDVAL
1140 READ( NIN, FMT = * ) ( NVAL( I ), I = 1, NMAT )
1141 READ( NIN, FMT = * ) ( MXVAL( I ), I = 1, NMAT )
1142 READ( NIN, FMT = * ) ( NXVAL( I ), I = 1, NMAT )
1143 READ( NIN, FMT = * ) ( IMBXVAL( I ), I = 1, NMAT )
1144 READ( NIN, FMT = * ) ( INBXVAL( I ), I = 1, NMAT )
1145 READ( NIN, FMT = * ) ( MBXVAL( I ), I = 1, NMAT )
1146 READ( NIN, FMT = * ) ( NBXVAL( I ), I = 1, NMAT )
1147 READ( NIN, FMT = * ) ( RSCXVAL( I ), I = 1, NMAT )
1148 READ( NIN, FMT = * ) ( CSCXVAL( I ), I = 1, NMAT )
1149 READ( NIN, FMT = * ) ( IXVAL( I ), I = 1, NMAT )
1150 READ( NIN, FMT = * ) ( JXVAL( I ), I = 1, NMAT )
1151 READ( NIN, FMT = * ) ( INCXVAL( I ), I = 1, NMAT )
1152 READ( NIN, FMT = * ) ( MYVAL( I ), I = 1, NMAT )
1153 READ( NIN, FMT = * ) ( NYVAL( I ), I = 1, NMAT )
1154 READ( NIN, FMT = * ) ( IMBYVAL( I ), I = 1, NMAT )
1155 READ( NIN, FMT = * ) ( INBYVAL( I ), I = 1, NMAT )
1156 READ( NIN, FMT = * ) ( MBYVAL( I ), I = 1, NMAT )
1157 READ( NIN, FMT = * ) ( NBYVAL( I ), I = 1, NMAT )
1158 READ( NIN, FMT = * ) ( RSCYVAL( I ), I = 1, NMAT )
1159 READ( NIN, FMT = * ) ( CSCYVAL( I ), I = 1, NMAT )
1160 READ( NIN, FMT = * ) ( IYVAL( I ), I = 1, NMAT )
1161 READ( NIN, FMT = * ) ( JYVAL( I ), I = 1, NMAT )
1162 READ( NIN, FMT = * ) ( INCYVAL( I ), I = 1, NMAT )
1168 LTEST( I ) = .FALSE.
1171 READ( NIN, FMT = 9996, END = 50 ) SNAMET, LTESTT
1173.EQ.
IF( SNAMETSNAMES( I ) )
1177 WRITE( NOUT, FMT = 9995 )SNAMET
1193.LT.
IF( NPROCS1 ) THEN
1196 NPROCS = MAX( NPROCS, PVAL( I )*QVAL( I ) )
1198 CALL BLACS_SETUP( IAM, NPROCS )
1204 CALL BLACS_GET( -1, 0, ICTXT )
1205 CALL BLACS_GRIDINIT( ICTXT, 'row-major
', 1, NPROCS )
1209 EPS = PSLAMCH( ICTXT, 'eps
' )
1213 CALL CGEBS2D( ICTXT, 'all
', ' ', 1, 1, ALPHA, 1 )
1217 CALL IGEBS2D( ICTXT, 'all
', ' ', 2, 1, WORK, 2 )
1236 CALL ICOPY( NGRIDS, PVAL, 1, WORK( I ), 1 )
1238 CALL ICOPY( NGRIDS, QVAL, 1, WORK( I ), 1 )
1240 CALL ICOPY( NMAT, NVAL, 1, WORK( I ), 1 )
1242 CALL ICOPY( NMAT, MXVAL, 1, WORK( I ), 1 )
1244 CALL ICOPY( NMAT, NXVAL, 1, WORK( I ), 1 )
1246 CALL ICOPY( NMAT, IMBXVAL, 1, WORK( I ), 1 )
1248 CALL ICOPY( NMAT, INBXVAL, 1, WORK( I ), 1 )
1250 CALL ICOPY( NMAT, MBXVAL, 1, WORK( I ), 1 )
1252 CALL ICOPY( NMAT, NBXVAL, 1, WORK( I ), 1 )
1254 CALL ICOPY( NMAT, RSCXVAL, 1, WORK( I ), 1 )
1256 CALL ICOPY( NMAT, CSCXVAL, 1, WORK( I ), 1 )
1258 CALL ICOPY( NMAT, IXVAL, 1, WORK( I ), 1 )
1260 CALL ICOPY( NMAT, JXVAL, 1, WORK( I ), 1 )
1262 CALL ICOPY( NMAT, INCXVAL, 1, WORK( I ), 1 )
1264 CALL ICOPY( NMAT, MYVAL, 1, WORK( I ), 1 )
1266 CALL ICOPY( NMAT, NYVAL, 1, WORK( I ), 1 )
1268 CALL ICOPY( NMAT, IMBYVAL, 1, WORK( I ), 1 )
1270 CALL ICOPY( NMAT, INBYVAL, 1, WORK( I ), 1 )
1272 CALL ICOPY( NMAT, MBYVAL, 1, WORK( I ), 1 )
1274 CALL ICOPY( NMAT, NBYVAL, 1, WORK( I ), 1 )
1276 CALL ICOPY( NMAT, RSCYVAL, 1, WORK( I ), 1 )
1278 CALL ICOPY( NMAT, CSCYVAL, 1, WORK( I ), 1 )
1280 CALL ICOPY( NMAT, IYVAL, 1, WORK( I ), 1 )
1282 CALL ICOPY( NMAT, JYVAL, 1, WORK( I ), 1 )
1284 CALL ICOPY( NMAT, INCYVAL, 1, WORK( I ), 1 )
1288 IF( LTEST( J ) ) THEN
1296 CALL IGEBS2D( ICTXT, 'all
', ' ', I, 1, WORK, I )
1300 WRITE( NOUT, FMT = 9999 ) 'level 1 pblas testing program.
'
1301 WRITE( NOUT, FMT = 9999 ) USRINFO
1302 WRITE( NOUT, FMT = * )
1303 WRITE( NOUT, FMT = 9999 )
1306 WRITE( NOUT, FMT = * )
1307 WRITE( NOUT, FMT = 9999 )
1308 $ 'the following parameter values will be used:
'
1309 WRITE( NOUT, FMT = * )
1310 WRITE( NOUT, FMT = 9993 ) NMAT
1311 WRITE( NOUT, FMT = 9992 ) NGRIDS
1312 WRITE( NOUT, FMT = 9990 )
1313 $ 'p
', ( PVAL(I), I = 1, MIN(NGRIDS, 5) )
1315 $ WRITE( NOUT, FMT = 9991 ) ( PVAL(I), I = 6,
1316 $ MIN( 10, NGRIDS ) )
1318 $ WRITE( NOUT, FMT = 9991 ) ( PVAL(I), I = 11,
1319 $ MIN( 15, NGRIDS ) )
1321 $ WRITE( NOUT, FMT = 9991 ) ( PVAL(I), I = 16, NGRIDS )
1322 WRITE( NOUT, FMT = 9990 )
1323 $ 'q
', ( QVAL(I), I = 1, MIN(NGRIDS, 5) )
1325 $ WRITE( NOUT, FMT = 9991 ) ( QVAL(I), I = 6,
1326 $ MIN( 10, NGRIDS ) )
1328 $ WRITE( NOUT, FMT = 9991 ) ( QVAL(I), I = 11,
1329 $ MIN( 15, NGRIDS ) )
1331 $ WRITE( NOUT, FMT = 9991 ) ( QVAL(I), I = 16, NGRIDS )
1332 WRITE( NOUT, FMT = 9988 ) SOF
1333 WRITE( NOUT, FMT = 9987 ) TEE
1334 WRITE( NOUT, FMT = 9983 ) IGAP
1335 WRITE( NOUT, FMT = 9986 ) IVERB
1336 WRITE( NOUT, FMT = 9982 ) ALPHA
1337 IF( LTEST( 1 ) ) THEN
1338 WRITE( NOUT, FMT = 9985 ) SNAMES( 1 ), ' ... yes
'
1340 WRITE( NOUT, FMT = 9985 ) SNAMES( 1 ), ' ... no
'
1343 IF( LTEST( I ) ) THEN
1344 WRITE( NOUT, FMT = 9984 ) SNAMES( I ), ' ... yes
'
1346 WRITE( NOUT, FMT = 9984 ) SNAMES( I ), ' ... no
'
1349 WRITE( NOUT, FMT = 9994 ) EPS
1350 WRITE( NOUT, FMT = * )
1357 $ CALL BLACS_SETUP( IAM, NPROCS )
1362 CALL BLACS_GET( -1, 0, ICTXT )
1363 CALL BLACS_GRIDINIT( ICTXT, 'row-major
', 1, NPROCS )
1367 EPS = PSLAMCH( ICTXT, 'eps
' )
1369 CALL CGEBR2D( ICTXT, 'all
', ' ', 1, 1, ALPHA, 1, 0, 0 )
1371 CALL IGEBR2D( ICTXT, 'all
', ' ', 2, 1, WORK, 2, 0, 0 )
1375 I = 2*NGRIDS + 23*NMAT + NSUBS + 4
1376 CALL IGEBR2D( ICTXT, 'all
', ' ', I, 1, WORK, I, 0, 0 )
1379.EQ.
IF( WORK( I )1 ) THEN
1385.EQ.
IF( WORK( I )1 ) THEN
1395 CALL ICOPY( NGRIDS, WORK( I ), 1, PVAL, 1 )
1397 CALL ICOPY( NGRIDS, WORK( I ), 1, QVAL, 1 )
1399 CALL ICOPY( NMAT, WORK( I ), 1, NVAL, 1 )
1401 CALL ICOPY( NMAT, WORK( I ), 1, MXVAL, 1 )
1403 CALL ICOPY( NMAT, WORK( I ), 1, NXVAL, 1 )
1405 CALL ICOPY( NMAT, WORK( I ), 1, IMBXVAL, 1 )
1407 CALL ICOPY( NMAT, WORK( I ), 1, INBXVAL, 1 )
1409 CALL ICOPY( NMAT, WORK( I ), 1, MBXVAL, 1 )
1411 CALL ICOPY( NMAT, WORK( I ), 1, NBXVAL, 1 )
1413 CALL ICOPY( NMAT, WORK( I ), 1, RSCXVAL, 1 )
1415 CALL ICOPY( NMAT, WORK( I ), 1, CSCXVAL, 1 )
1417 CALL ICOPY( NMAT, WORK( I ), 1, IXVAL, 1 )
1419 CALL ICOPY( NMAT, WORK( I ), 1, JXVAL, 1 )
1421 CALL ICOPY( NMAT, WORK( I ), 1, INCXVAL, 1 )
1423 CALL ICOPY( NMAT, WORK( I ), 1, MYVAL, 1 )
1425 CALL ICOPY( NMAT, WORK( I ), 1, NYVAL, 1 )
1427 CALL ICOPY( NMAT, WORK( I ), 1, IMBYVAL, 1 )
1429 CALL ICOPY( NMAT, WORK( I ), 1, INBYVAL, 1 )
1431 CALL ICOPY( NMAT, WORK( I ), 1, MBYVAL, 1 )
1433 CALL ICOPY( NMAT, WORK( I ), 1, NBYVAL, 1 )
1435 CALL ICOPY( NMAT, WORK( I ), 1, RSCYVAL, 1 )
1437 CALL ICOPY( NMAT, WORK( I ), 1, CSCYVAL, 1 )
1439 CALL ICOPY( NMAT, WORK( I ), 1, IYVAL, 1 )
1441 CALL ICOPY( NMAT, WORK( I ), 1, JYVAL, 1 )
1443 CALL ICOPY( NMAT, WORK( I ), 1, INCYVAL, 1 )
1447.EQ.
IF( WORK( I )1 ) THEN
1450 LTEST( J ) = .FALSE.
1457 CALL BLACS_GRIDEXIT( ICTXT )
1461 100 WRITE( NOUT, FMT = 9997 )
1463.NE..AND..NE.
IF( NOUT6 NOUT0 )
1465 CALL BLACS_ABORT( ICTXT, 1 )
1470 9998 FORMAT( ' number of values of
',5A, ' is less than 1 or greater
',
1472 9997 FORMAT( ' illegal input in file
',40A,'. aborting run.
' )
1473 9996 FORMAT( A7, L2 )
1474 9995 FORMAT( ' subprogram name
', A7, ' not recognized
',
1475 $ /' ******* tests abandoned *******
' )
1476 9994 FORMAT( 2X, 'relative machine precision (eps) is taken to be
',
1478 9993 FORMAT( 2X, 'number of tests :
', I6 )
1479 9992 FORMAT( 2X, 'number of process grids :
', I6 )
1480 9991 FORMAT( 2X, ' :
', 5I6 )
1481 9990 FORMAT( 2X, A1, ' :
', 5I6 )
1482 9988 FORMAT( 2X, 'stop on failure flag :
', L6 )
1483 9987 FORMAT( 2X, 'test
for error exits flag :
', L6 )
1484 9986 FORMAT( 2X, 'verbosity level :
', I6 )
1485 9985 FORMAT( 2X, 'routines to be tested :
', A, A8 )
1486 9984 FORMAT( 2X, ' ', A, A8 )
1487 9983 FORMAT( 2X, 'leading dimension gap :
', I6 )
1488 9982 FORMAT( 2X, 'alpha : (', G16.6,
1494 SUBROUTINE PCBLAS1TSTCHKE( LTEST, INOUT, NPROCS )
1502 INTEGER INOUT, NPROCS
1638 PARAMETER ( NSUBS = 10 )
1642 INTEGER I, ICTXT, MYCOL, MYROW, NPCOL, NPROW
1645 INTEGER SCODE( NSUBS )
1648 EXTERNAL BLACS_GET, BLACS_GRIDEXIT, BLACS_GRIDINFO,
1649 $ BLACS_GRIDINIT, PCAMAX, PCAXPY, PCCOPY,
1650 $ PCDIMEE, PCDOTC, PCDOTU, PCSCAL, PCSSCAL,
1651 $ PCSWAP, PCVECEE, PSCASUM, PSCNRM2
1656 CHARACTER*7 SNAMES( NSUBS )
1657 COMMON /SNAMEC/SNAMES
1658 COMMON /PBERRORC/NOUT, ABRTFLG
1661 DATA SCODE/11, 12, 12, 11, 13, 13, 13, 15, 15, 14/
1668 CALL BLACS_GET( -1, 0, ICTXT )
1669 CALL BLACS_GRIDINIT( ICTXT, 'row-major
', 1, NPROCS )
1670 CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL )
1683 IF( LTEST( I ) ) THEN
1684 CALL PCDIMEE( ICTXT, NOUT, PCSWAP, SCODE( I ), SNAMES( I ) )
1685 CALL PCVECEE( ICTXT, NOUT, PCSWAP, SCODE( I ), SNAMES( I ) )
1691 IF( LTEST( I ) ) THEN
1692 CALL PCDIMEE( ICTXT, NOUT, PCSCAL, SCODE( I ), SNAMES( I ) )
1693 CALL PCVECEE( ICTXT, NOUT, PCSCAL, SCODE( I ), SNAMES( I ) )
1699 IF( LTEST( I ) ) THEN
1700 CALL PCDIMEE( ICTXT, NOUT, PCSSCAL, SCODE( I ), SNAMES( I ) )
1701 CALL PCVECEE( ICTXT, NOUT, PCSSCAL, SCODE( I ), SNAMES( I ) )
1707 IF( LTEST( I ) ) THEN
1708 CALL PCDIMEE( ICTXT, NOUT, PCCOPY, SCODE( I ), SNAMES( I ) )
1709 CALL PCVECEE( ICTXT, NOUT, PCCOPY, SCODE( I ), SNAMES( I ) )
1715 IF( LTEST( I ) ) THEN
1716 CALL PCDIMEE( ICTXT, NOUT, PCAXPY, SCODE( I ), SNAMES( I ) )
1717 CALL PCVECEE( ICTXT, NOUT, PCAXPY, SCODE( I ), SNAMES( I ) )
1723 IF( LTEST( I ) ) THEN
1724 CALL PCDIMEE( ICTXT, NOUT, PCDOTU, SCODE( I ), SNAMES( I ) )
1725 CALL PCVECEE( ICTXT, NOUT, PCDOTU, SCODE( I ), SNAMES( I ) )
1731 IF( LTEST( I ) ) THEN
1732 CALL PCDIMEE( ICTXT, NOUT, PCDOTC, SCODE( I ), SNAMES( I ) )
1733 CALL PCVECEE( ICTXT, NOUT, PCDOTC, SCODE( I ), SNAMES( I ) )
1739 IF( LTEST( I ) ) THEN
1740 CALL PCDIMEE( ICTXT, NOUT, PSCNRM2, SCODE( I ), SNAMES( I ) )
1741 CALL PCVECEE( ICTXT, NOUT, PSCNRM2, SCODE( I ), SNAMES( I ) )
1747 IF( LTEST( I ) ) THEN
1748 CALL PCDIMEE( ICTXT, NOUT, PSCASUM, SCODE( I ), SNAMES( I ) )
1749 CALL PCVECEE( ICTXT, NOUT, PSCASUM, SCODE( I ), SNAMES( I ) )
1755 IF( LTEST( I ) ) THEN
1756 CALL PCDIMEE( ICTXT, NOUT, PCAMAX, SCODE( I ), SNAMES( I ) )
1757 CALL PCVECEE( ICTXT, NOUT, PCAMAX, SCODE( I ), SNAMES( I ) )
1760.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
1761 $ WRITE( NOUT, FMT = 9999 )
1763 CALL BLACS_GRIDEXIT( ICTXT )
1769 9999 FORMAT( 2X, 'error-exit tests completed.
' )
1776 SUBROUTINE PCCHKARG1( ICTXT, NOUT, SNAME, N, ALPHA, IX, JX,
1777 $ DESCX, INCX, IY, JY, DESCY, INCY, INFO )
1785 INTEGER ICTXT, INCX, INCY, INFO, IX, IY, JX, JY, N,
1791 INTEGER DESCX( * ), DESCY( * )
1936 INTEGER BLOCK_CYCLIC_2D_INB, CSRC_, CTXT_, DLEN_,
1937 $ DTYPE_, IMB_, INB_, LLD_, MB_, M_, NB_, N_,
1939 PARAMETER ( BLOCK_CYCLIC_2D_INB = 2, DLEN_ = 11,
1940 $ DTYPE_ = 1, CTXT_ = 2, M_ = 3, N_ = 4,
1941 $ IMB_ = 5, INB_ = 6, MB_ = 7, NB_ = 8,
1942 $ RSRC_ = 9, CSRC_ = 10, LLD_ = 11 )
1945 INTEGER I, INCXREF, INCYREF, IXREF, IYREF, JXREF,
1946 $ JYREF, MYCOL, MYROW, NPCOL, NPROW, NREF
1950 CHARACTER*15 ARGNAME
1951 INTEGER DESCXREF( DLEN_ ), DESCYREF( DLEN_ )
1954 EXTERNAL BLACS_GRIDINFO, IGSUM2D
1963 CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL )
1967.EQ.
IF( INFO0 ) THEN
1973 DESCXREF( I ) = DESCX( I )
1979 DESCYREF( I ) = DESCY( I )
1989.NE.
IF( NNREF ) THEN
1990 WRITE( ARGNAME, FMT = '(A)
' ) 'n
'
1991.NE.
ELSE IF( IXIXREF ) THEN
1992 WRITE( ARGNAME, FMT = '(A)
' ) 'ix
'
1993.NE.
ELSE IF( JXJXREF ) THEN
1994 WRITE( ARGNAME, FMT = '(A)
' ) 'jx
'
1995.NE.
ELSE IF( DESCX( DTYPE_ )DESCXREF( DTYPE_ ) ) THEN
1996 WRITE( ARGNAME, FMT = '(A)
' ) 'descx( DTYPE_ )
'
1997.NE.
ELSE IF( DESCX( M_ )DESCXREF( M_ ) ) THEN
1998 WRITE( ARGNAME, FMT = '(A)
' ) 'descx( M_ )
'
1999.NE.
ELSE IF( DESCX( N_ )DESCXREF( N_ ) ) THEN
2000 WRITE( ARGNAME, FMT = '(A)
' ) 'descx( N_ )
'
2001.NE.
ELSE IF( DESCX( IMB_ )DESCXREF( IMB_ ) ) THEN
2002 WRITE( ARGNAME, FMT = '(A)
' ) 'descx( IMB_ )
'
2003.NE.
ELSE IF( DESCX( INB_ )DESCXREF( INB_ ) ) THEN
2004 WRITE( ARGNAME, FMT = '(A)
' ) 'descx( INB_ )
'
2005.NE.
ELSE IF( DESCX( MB_ )DESCXREF( MB_ ) ) THEN
2006 WRITE( ARGNAME, FMT = '(A)
' ) 'descx( MB_ )
'
2007.NE.
ELSE IF( DESCX( NB_ )DESCXREF( NB_ ) ) THEN
2008 WRITE( ARGNAME, FMT = '(A)
' ) 'descx( NB_ )
'
2009.NE.
ELSE IF( DESCX( RSRC_ )DESCXREF( RSRC_ ) ) THEN
2010 WRITE( ARGNAME, FMT = '(A)' )
'DESCX( RSRC_ )'
2011 ELSE IF( descx( csrc_ ).NE.descxref
THEN
2012 WRITE( argname, fmt =
'(A)' )
'DESCX( CSRC_ )'
2013 ELSE IF( descx( ctxt_ ).NE.descxref( ctxt_ ) )
THEN
2014 WRITE( argname, fmt =
'(A)' )
'DESCX( CTXT_ )'
2015 ELSE IF( descx( lld_ ).NE.descxref( lld_ ) )
THEN
2016 WRITE( argname, fmt =
'(A)' )
'DESCX( LLD_ )'
2017 ELSE IF( incx.NE.incxref )
THEN
2018 WRITE( argname, fmt =
'(A)' )
'INCX'
2019 ELSE IF( iy.NE.iyref )
THEN
2020 WRITE( argname, fmt =
'(A)' )
'IY'
2021 ELSE IF( jy.NE.jyref )
THEN
2022 WRITE( argname, fmt =
'(A)' )
'JY'
2023 ELSE IF( descy( dtype_ ).NE.descyref( dtype_ ) )
THEN
2024 WRITE( argname, fmt = '(a)
' ) 'descy( dtype_ )
'
2025.NE.
ELSE IF( DESCY( M_ )DESCYREF( M_ ) ) THEN
2026 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( m_ )
'
2027.NE.
ELSE IF( DESCY( N_ )DESCYREF( N_ ) ) THEN
2028 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( n_ )
'
2029.NE.
ELSE IF( DESCY( IMB_ )DESCYREF( IMB_ ) ) THEN
2030 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( imb_ )
'
2031.NE.
ELSE IF( DESCY( INB_ )DESCYREF( INB_ ) ) THEN
2032 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( inb_ )
'
2033.NE.
ELSE IF( DESCY( MB_ )DESCYREF( MB_ ) ) THEN
2034 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( mb_ )
'
2035.NE.
ELSE IF( DESCY( NB_ )DESCYREF( NB_ ) ) THEN
2036 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( nb_ )
'
2037.NE.
ELSE IF( DESCY( RSRC_ )DESCYREF( RSRC_ ) ) THEN
2038 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( rsrc_ )
'
2039.NE.
ELSE IF( DESCY( CSRC_ )DESCYREF( CSRC_ ) ) THEN
2040 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( csrc_ )
'
2041.NE.
ELSE IF( DESCY( CTXT_ )DESCYREF( CTXT_ ) ) THEN
2042 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( ctxt_ )
'
2043.NE.
ELSE IF( DESCY( LLD_ )DESCYREF( LLD_ ) ) THEN
2044 WRITE( ARGNAME, FMT = '(a)
' ) 'descy( lld_ )
'
2045.NE.
ELSE IF( INCYINCYREF ) THEN
2046 WRITE( ARGNAME, FMT = '(a)
' ) 'incy
'
2047.NE.
ELSE IF( ALPHAALPHAREF ) THEN
2048 WRITE( ARGNAME, FMT = '(a)
' ) 'alpha'
2053 CALL IGSUM2D( ICTXT, 'all
', ' ', 1, 1, INFO, 1, -1, 0 )
2055.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
2057.GT.
IF( INFO0 ) THEN
2058 WRITE( NOUT, FMT = 9999 ) ARGNAME, SNAME
2060 WRITE( NOUT, FMT = 9998 ) SNAME
2067 9999 FORMAT( 2X, ' ***** input-only
parameter check:
', A,
2068 $ ' failed changed
', A, ' *****
' )
2069 9998 FORMAT( 2X, ' ***** input-only
parameter check:
', A,
2077 LOGICAL FUNCTION PISINSCOPE( ICTXT, N, IX, JX, DESCX, INCX )
2085 INTEGER ICTXT, INCX, IX, JX, N
2196 INTEGER BLOCK_CYCLIC_2D_INB, CSRC_, CTXT_, DLEN_,
2197 $ DTYPE_, IMB_, INB_, LLD_, MB_, M_, NB_, N_,
2199 PARAMETER ( BLOCK_CYCLIC_2D_INB = 2, DLEN_ = 11,
2200 $ DTYPE_ = 1, CTXT_ = 2, M_ = 3, N_ = 4,
2201 $ IMB_ = 5, INB_ = 6, MB_ = 7, NB_ = 8,
2202 $ RSRC_ = 9, CSRC_ = 10, LLD_ = 11 )
2205 LOGICAL COLREP, ROWREP
2206 INTEGER IIX, IXCOL, IXROW, JJX, MYCOL, MYROW, NPCOL,
2210 EXTERNAL BLACS_GRIDINFO, PB_INFOG2L
2214 CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL )
2216 CALL PB_INFOG2L( IX, JX, DESCX, NPROW, NPCOL, MYROW, MYCOL,
2217 $ IIX, JJX, IXROW, IXCOL )
2218.EQ.
ROWREP = ( IXROW-1 )
2219.EQ.
COLREP = ( IXCOL-1 )
2221.EQ..AND..EQ.
IF( DESCX( M_ )1 N1 ) THEN
2226.EQ..OR..AND.
PISINSCOPE = ( ( IXROWMYROW ROWREP )
2227.EQ..OR.
$ ( IXCOLMYCOL COLREP ) )
2231.EQ.
IF( INCXDESCX( M_ ) ) THEN
2235.EQ..OR.
PISINSCOPE = ( MYROWIXROW ROWREP )
2241.EQ..OR.
PISINSCOPE = ( MYCOLIXCOL COLREP )
2252 SUBROUTINE PCBLAS1TSTCHK( ICTXT, NOUT, NROUT, N, PSCLR, PUSCLR,
2253 $ PISCLR, X, PX, IX, JX, DESCX, INCX, Y,
2254 $ PY, IY, JY, DESCY, INCY, INFO )
2262 INTEGER ICTXT, INCX, INCY, INFO, IX, IY, JX, JY, N,
2263 $ NOUT, NROUT, PISCLR
2268 INTEGER DESCX( * ), DESCY( * )
2269 COMPLEX PX( * ), PY( * ), X( * ), Y( * )
2449 PARAMETER ( ZERO = ( 0.0E+0, 0.0E+0 ),
2451 INTEGER BLOCK_CYCLIC_2D_INB, CSRC_, CTXT_, DLEN_,
2452 $ DTYPE_, IMB_, INB_, LLD_, MB_, M_, NB_, N_,
2454 PARAMETER ( BLOCK_CYCLIC_2D_INB = 2, DLEN_ = 11,
2455 $ DTYPE_ = 1, CTXT_ = 2, M_ = 3, N_ = 4,
2456 $ IMB_ = 5, INB_ = 6, MB_ = 7, NB_ = 8,
2457 $ RSRC_ = 9, CSRC_ = 10, LLD_ = 11 )
2460 LOGICAL COLREP, INXSCOPE, INYSCOPE, ROWREP
2461 INTEGER I, IB, ICURCOL, ICURROW, IDUMM, IIX, IIY, IN,
2462 $ IOFFX, IOFFY, ISCLR, IXCOL, IXROW, IYCOL,
2463 $ IYROW, J, JB, JJX, JJY, JN, KK, LDX, LDY,
2464 $ MYCOL, MYROW, NPCOL, NPROW
2465 REAL ERR, ERRMAX, PREC, USCLR
2470 CHARACTER*5 ARGIN1, ARGIN2, ARGOUT1, ARGOUT2
2473 EXTERNAL BLACS_GRIDINFO, CCOPY, CSWAP, IGAMX2D,
2474 $ PB_INFOG2L, PCCHKVIN, PCERRASUM, PCERRAXPY,
2475 $ PCERRDOTC, PCERRDOTU, PCERRNRM2, PCERRSCAL,
2482 EXTERNAL ICAMAX, PISINSCOPE, PSLAMCH
2496 CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL )
2506 PREC = PSLAMCH( ICTXT, 'precision
' )
2508.EQ.
IF( NROUT1 ) THEN
2512 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
2513 IOFFY = IY + ( JY - 1 ) * DESCY( M_ )
2514 CALL CSWAP( N, X( IOFFX ), INCX, Y( IOFFY ), INCY )
2515 CALL PCCHKVIN( ERRMAX, N, X, PX, IX, JX, DESCX, INCX,
2517 CALL PCCHKVIN( ERRMAX, N, Y, PY, IY, JY, DESCY, INCY,
2520.EQ.
ELSE IF( NROUT2 ) THEN
2525 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
2526 CALL PB_INFOG2L( IX, JX, DESCX, NPROW, NPCOL, MYROW, MYCOL,
2527 $ IIX, JJX, IXROW, IXCOL )
2530.EQ.
ROWREP = ( IXROW-1 )
2531.EQ.
COLREP = ( IXCOL-1 )
2533.EQ.
IF( INCXDESCX( M_ ) ) THEN
2537 JB = DESCX( INB_ ) - JX + 1
2539 $ JB = ( (-JB ) / DESCX( NB_ ) + 1 ) * DESCX( NB_ ) + JB
2545 CALL PCERRSCAL( ERR, PSCLR, X( IOFFX ), PREC )
2547.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2548.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2549.GT.
IF( ABS( PX( IIX+(JJX-1)*LDX ) - X( IOFFX ) )
2555 IOFFX = IOFFX + INCX
2559 ICURCOL = MOD( ICURCOL+1, NPCOL )
2561 DO 40 J = JN+1, JX+N-1, DESCX( NB_ )
2562 JB = MIN( JX+N-J, DESCX( NB_ ) )
2566 CALL PCERRSCAL( ERR, PSCLR, X( IOFFX ), PREC )
2568.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2569.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2570.GT.
IF( ABS( PX( IIX+(JJX-1)*LDX ) - X( IOFFX ) )
2576 IOFFX = IOFFX + INCX
2580 ICURCOL = MOD( ICURCOL+1, NPCOL )
2588 IB = DESCX( IMB_ ) - IX + 1
2590 $ IB = ( (-IB ) / DESCX( MB_ ) + 1 ) * DESCX( MB_ ) + IB
2596 CALL PCERRSCAL( ERR, PSCLR, X( IOFFX ), PREC )
2598.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2599.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2600.GT.
IF( ABS( PX( IIX+(JJX-1)*LDX ) - X( IOFFX ) )
2606 IOFFX = IOFFX + INCX
2610 ICURROW = MOD( ICURROW+1, NPROW )
2612 DO 70 I = IN+1, IX+N-1, DESCX( MB_ )
2613 IB = MIN( IX+N-I, DESCX( MB_ ) )
2617 CALL PCERRSCAL( ERR, PSCLR, X( IOFFX ), PREC )
2619.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2620.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2621.GT.
IF( ABS( PX( IIX+(JJX-1)*LDX ) - X( IOFFX ) )
2627 IOFFX = IOFFX + INCX
2630 ICURROW = MOD( ICURROW+1, NPROW )
2636.EQ.
ELSE IF( NROUT3 ) THEN
2641 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
2642 CALL PB_INFOG2L( IX, JX, DESCX, NPROW, NPCOL, MYROW, MYCOL,
2643 $ IIX, JJX, IXROW, IXCOL )
2646.EQ.
ROWREP = ( IXROW-1 )
2647.EQ.
COLREP = ( IXCOL-1 )
2649.EQ.
IF( INCXDESCX( M_ ) ) THEN
2653 JB = DESCX( INB_ ) - JX + 1
2655 $ JB = ( (-JB ) / DESCX( NB_ ) + 1 ) * DESCX( NB_ ) + JB
2661 CALL PCSERRSCAL( ERR, PUSCLR, X( IOFFX ), PREC )
2663.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2664.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2665.GT.
IF( ABS( PX( IIX+(JJX-1)*LDX ) - X( IOFFX ) )
2671 IOFFX = IOFFX + INCX
2675 ICURCOL = MOD( ICURCOL+1, NPCOL )
2677 DO 100 J = JN+1, JX+N-1, DESCX( NB_ )
2678 JB = MIN( JX+N-J, DESCX( NB_ ) )
2682 CALL PCSERRSCAL( ERR, PUSCLR, X( IOFFX ), PREC )
2684.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2685.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2686.GT.
IF( ABS( PX( IIX+(JJX-1)*LDX ) - X( IOFFX ) )
2692 IOFFX = IOFFX + INCX
2696 ICURCOL = MOD( ICURCOL+1, NPCOL )
2704 IB = DESCX( IMB_ ) - IX + 1
2706 $ IB = ( (-IB ) / DESCX( MB_ ) + 1 ) * DESCX( MB_ ) + IB
2712 CALL PCSERRSCAL( ERR, PUSCLR, X( IOFFX ), PREC )
2714.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2715.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2716.GT.
IF( ABS( PX( IIX+(JJX-1)*LDX ) - X( IOFFX ) )
2722 IOFFX = IOFFX + INCX
2726 ICURROW = MOD( ICURROW+1, NPROW )
2728 DO 130 I = IN+1, IX+N-1, DESCX( MB_ )
2729 IB = MIN( IX+N-I, DESCX( MB_ ) )
2733 CALL PCSERRSCAL( ERR, PUSCLR, X( IOFFX ), PREC )
2735.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2736.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2737.GT.
IF( ABS( PX( IIX+(JJX-1)*LDX ) - X( IOFFX ) )
2743 IOFFX = IOFFX + INCX
2746 ICURROW = MOD( ICURROW+1, NPROW )
2752.EQ.
ELSE IF( NROUT4 ) THEN
2756 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
2757 IOFFY = IY + ( JY - 1 ) * DESCY( M_ )
2758 CALL CCOPY( N, X( IOFFX ), INCX, Y( IOFFY ), INCY )
2759 CALL PCCHKVIN( ERRMAX, N, X, PX, IX, JX, DESCX, INCX,
2761 CALL PCCHKVIN( ERRMAX, N, Y, PY, IY, JY, DESCY, INCY,
2764.EQ.
ELSE IF( NROUT5 ) THEN
2768 CALL PCCHKVIN( ERRMAX, N, X, PX, IX, JX, DESCX, INCX,
2771 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
2772 IOFFY = IY + ( JY - 1 ) * DESCY( M_ )
2773 CALL PB_INFOG2L( IY, JY, DESCY, NPROW, NPCOL, MYROW, MYCOL,
2774 $ IIY, JJY, IYROW, IYCOL )
2777.EQ.
ROWREP = ( IYROW-1 )
2778.EQ.
COLREP = ( IYCOL-1 )
2780.EQ.
IF( INCYDESCY( M_ ) ) THEN
2784 JB = DESCY( INB_ ) - JY + 1
2786 $ JB = ( (-JB ) / DESCY( NB_ ) + 1 ) * DESCY( NB_ ) + JB
2792 CALL PCERRAXPY( ERR, PSCLR, X( IOFFX ), Y( IOFFY ),
2795.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2796.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2797.GT.
IF( ABS( PY( IIY+(JJY-1)*LDY ) - Y( IOFFY ) )
2804 IOFFX = IOFFX + INCX
2805 IOFFY = IOFFY + INCY
2809 ICURCOL = MOD( ICURCOL+1, NPCOL )
2811 DO 160 J = JN+1, JY+N-1, DESCY( NB_ )
2812 JB = MIN( JY+N-J, DESCY( NB_ ) )
2816 CALL PCERRAXPY( ERR, PSCLR, X( IOFFX ), Y( IOFFY ),
2819.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2820.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2821.GT.
IF( ABS( PY( IIY+(JJY-1)*LDY ) - Y( IOFFY ) )
2828 IOFFX = IOFFX + INCX
2829 IOFFY = IOFFY + INCY
2833 ICURCOL = MOD( ICURCOL+1, NPCOL )
2841 IB = DESCY( IMB_ ) - IY + 1
2843 $ IB = ( (-IB ) / DESCY( MB_ ) + 1 ) * DESCY( MB_ ) + IB
2849 CALL PCERRAXPY( ERR, PSCLR, X( IOFFX ), Y( IOFFY ),
2852.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2853.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2854.GT.
IF( ABS( PY( IIY+(JJY-1)*LDY ) - Y( IOFFY ) )
2861 IOFFX = IOFFX + INCX
2862 IOFFY = IOFFY + INCY
2866 ICURROW = MOD( ICURROW+1, NPROW )
2868 DO 190 I = IN+1, IY+N-1, DESCY( MB_ )
2869 IB = MIN( IY+N-I, DESCY( MB_ ) )
2873 CALL PCERRAXPY( ERR, PSCLR, X( IOFFX ), Y( IOFFY ),
2876.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2877.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2878.GT.
IF( ABS( PY( IIY+(JJY-1)*LDY ) - Y( IOFFY ) )
2885 IOFFX = IOFFX + INCX
2886 IOFFY = IOFFY + INCY
2890 ICURROW = MOD( ICURROW+1, NPROW )
2896.EQ.
ELSE IF( NROUT6 ) THEN
2900 CALL PCCHKVIN( ERRMAX, N, X, PX, IX, JX, DESCX, INCX,
2902 CALL PCCHKVIN( ERRMAX, N, Y, PY, IY, JY, DESCY, INCY,
2904 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
2905 IOFFY = IY + ( JY - 1 ) * DESCY( M_ )
2906 CALL PCERRDOTU( ERR, N, SCLR, X( IOFFX ), INCX, Y( IOFFY ),
2908 INXSCOPE = PISINSCOPE( ICTXT, N, IX, JX, DESCX, INCX )
2909 INYSCOPE = PISINSCOPE( ICTXT, N, IY, JY, DESCY, INCY )
2910.OR.
IF( INXSCOPEINYSCOPE ) THEN
2911.GT.
IF( ABS( PSCLR - SCLR )ERR ) THEN
2913 WRITE( ARGIN1, FMT = '(a)
' ) 'dotu
'
2914.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
2915 WRITE( NOUT, FMT = 9998 ) ARGIN1
2916 WRITE( NOUT, FMT = 9996 ) SCLR, PSCLR
2921.NE.
IF( PSCLRSCLR ) THEN
2923 WRITE( ARGOUT1, FMT = '(a)
' ) 'dotu
'
2924.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
2925 WRITE( NOUT, FMT = 9997 ) ARGOUT1
2926 WRITE( NOUT, FMT = 9996 ) SCLR, PSCLR
2931.EQ.
ELSE IF( NROUT7 ) THEN
2935 CALL PCCHKVIN( ERRMAX, N, X, PX, IX, JX, DESCX, INCX,
2937 CALL PCCHKVIN( ERRMAX, N, Y, PY, IY, JY, DESCY, INCY,
2939 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
2940 IOFFY = IY + ( JY - 1 ) * DESCY( M_ )
2941 CALL PCERRDOTC( ERR, N, SCLR, X( IOFFX ), INCX, Y( IOFFY ),
2943 INXSCOPE = PISINSCOPE( ICTXT, N, IX, JX, DESCX, INCX )
2944 INYSCOPE = PISINSCOPE( ICTXT, N, IY, JY, DESCY, INCY )
2945.OR.
IF( INXSCOPEINYSCOPE ) THEN
2946.GT.
IF( ABS( PSCLR - SCLR )ERR ) THEN
2948 WRITE( ARGIN1, FMT = '(a)
' ) 'dotc
'
2949.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
2950 WRITE( NOUT, FMT = 9998 ) ARGIN1
2951 WRITE( NOUT, FMT = 9996 ) SCLR, PSCLR
2956.NE.
IF( PSCLRSCLR ) THEN
2958 WRITE( ARGOUT1, FMT = '(a)
' ) 'dotc
'
2959.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
2960 WRITE( NOUT, FMT = 9997 ) ARGOUT1
2961 WRITE( NOUT, FMT = 9996 ) SCLR, PSCLR
2966.EQ.
ELSE IF( NROUT8 ) THEN
2970 CALL PCCHKVIN( ERRMAX, N, X, PX, IX, JX, DESCX, INCX,
2972 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
2973 CALL PCERRNRM2( ERR, N, USCLR, X( IOFFX ), INCX, PREC )
2974 IF( PISINSCOPE( ICTXT, N, IX, JX, DESCX, INCX ) ) THEN
2975.GT.
IF( ABS( PUSCLR - USCLR )ERR ) THEN
2977 WRITE( ARGIN1, FMT = '(a)
' ) 'nrm2
'
2978.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
2979 WRITE( NOUT, FMT = 9998 ) ARGIN1
2980 WRITE( NOUT, FMT = 9994 ) USCLR, PUSCLR
2985.NE.
IF( PUSCLRUSCLR ) THEN
2987 WRITE( ARGOUT1, FMT = '(a)
' ) 'nrm2
'
2988.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
2989 WRITE( NOUT, FMT = 9997 ) ARGOUT1
2990 WRITE( NOUT, FMT = 9994 ) USCLR, PUSCLR
2995.EQ.
ELSE IF( NROUT9 ) THEN
2999 CALL PCCHKVIN( ERRMAX, N, X, PX, IX, JX, DESCX, INCX,
3001 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
3002 CALL PCERRASUM( ERR, N, USCLR, X( IOFFX ), INCX, PREC )
3003 IF( PISINSCOPE( ICTXT, N, IX, JX, DESCX, INCX ) ) THEN
3004.GT.
IF( ABS( PUSCLR - USCLR ) ERR ) THEN
3006 WRITE( ARGIN1, FMT = '(a)
' ) 'asum
'
3007.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
3008 WRITE( NOUT, FMT = 9998 ) ARGIN1
3009 WRITE( NOUT, FMT = 9994 ) USCLR, PUSCLR
3014.NE.
IF( PUSCLRUSCLR ) THEN
3016 WRITE( ARGOUT1, FMT = '(a)
' ) 'asum
'
3017.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
3018 WRITE( NOUT, FMT = 9997 ) ARGOUT1
3019 WRITE( NOUT, FMT = 9994 ) USCLR, PUSCLR
3024.EQ.
ELSE IF( NROUT10 ) THEN
3028 CALL PCCHKVIN( ERRMAX, N, X, PX, IX, JX, DESCX, INCX,
3030 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
3031 IF( PISINSCOPE( ICTXT, N, IX, JX, DESCX, INCX ) ) THEN
3032 ISCLR = ICAMAX( N, X( IOFFX ), INCX )
3035.EQ..AND..EQ..AND.
ELSE IF( ( INCX1 )( DESCX( M_ )1 )
3039.EQ.
ELSE IF( INCXDESCX( M_ ) ) THEN
3040 ISCLR = JX + ISCLR - 1
3041 SCLR = X( IX + ( ISCLR - 1 ) * DESCX( M_ ) )
3043 ISCLR = IX + ISCLR - 1
3044 SCLR = X( ISCLR + ( JX - 1 ) * DESCX( M_ ) )
3047.NE.
IF( PSCLRSCLR ) THEN
3049 WRITE( ARGIN1, FMT = '(a)
' ) 'amax
'
3050.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
3051 WRITE( NOUT, FMT = 9998 ) ARGIN1
3052 WRITE( NOUT, FMT = 9996 ) SCLR, PSCLR
3056.NE.
IF( PISCLRISCLR ) THEN
3058 WRITE( ARGIN2, FMT = '(a)
' ) 'indx
'
3059.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
3060 WRITE( NOUT, FMT = 9998 ) ARGIN2
3061 WRITE( NOUT, FMT = 9995 ) ISCLR, PISCLR
3067.NE.
IF( PSCLRSCLR ) THEN
3069 WRITE( ARGOUT1, FMT = '(a)
' ) 'amax
'
3070.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
3071 WRITE( NOUT, FMT = 9997 ) ARGOUT1
3072 WRITE( NOUT, FMT = 9996 ) SCLR, PSCLR
3075.NE.
IF( PISCLRISCLR ) THEN
3077 WRITE( ARGOUT2, FMT = '(a)
' ) 'indx
'
3078.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
3079 WRITE( NOUT, FMT = 9997 ) ARGOUT2
3080 WRITE( NOUT, FMT = 9995 ) ISCLR, PISCLR
3089 CALL IGAMX2D( ICTXT, 'all
', ' ', 6, 1, IERR, 6, IDUMM, IDUMM, -1,
3094.NE.
IF( IERR( 1 )0 ) THEN
3096.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
3097 $ WRITE( NOUT, FMT = 9999 ) 'x
'
3100.NE.
IF( IERR( 2 )0 ) THEN
3102.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
3103 $ WRITE( NOUT, FMT = 9999 ) 'y
'
3106.NE.
IF( IERR( 3 )0 )
3109.NE.
IF( IERR( 4 )0 )
3112.NE.
IF( IERR( 5 )0 )
3115.NE.
IF( IERR( 6 )0 )
3118 9999 FORMAT( 2X, ' ***** error: vector operand
', A,
3119 $ ' is incorrect.
' )
3120 9998 FORMAT( 2X, ' ***** error: output scalar result
', A,
3121 $ ' in scope is incorrect.
' )
3122 9997 FORMAT( 2X, ' ***** error: output scalar result ', a,
3123 $
' out of scope is incorrect.' )
3124 9996
FORMAT( 2x,
' ***** Expected value is: ', e16.8,
'+i*(',
3125 $ e16.8,
'),', /2x, ' obtained
value is:
',
3126 $ E16.8, '+i*(
', E16.8, ')
' )
3127 9995 FORMAT( 2X, ' ***** expected
value is:
', I6, /2X,
3128 $ ' obtained
value is:
', I6 )
3129 9994 FORMAT( 2X, ' ***** expected
value is:
', E16.8, /2X,
3130 $ ' obtained
value is:
', E16.8 )
3137 SUBROUTINE PCERRDOTU( ERRBND, N, SCLR, X, INCX, Y, INCY, PREC )
3145 INTEGER INCX, INCY, N
3150 COMPLEX X( * ), Y( * )
3213 PARAMETER ( ONE = 1.0E+0, TWO = 2.0E+0,
3218 REAL ADDBND, FACT, SUMINEG, SUMIPOS, SUMRNEG,
3222 INTRINSIC ABS, AIMAG, MAX, REAL
3233 FACT = TWO * ( ONE + PREC )
3234 ADDBND = TWO * TWO * TWO * PREC
3238 SCLR = SCLR + X( IX ) * Y( IY )
3240 TMP = REAL( X( IX ) ) * REAL( Y ( IY ) )
3241.GE.
IF( TMPZERO ) THEN
3242 SUMRPOS = SUMRPOS + TMP * FACT
3244 SUMRNEG = SUMRNEG - TMP * FACT
3247 TMP = - AIMAG( X( IX ) ) * AIMAG( Y ( IY ) )
3248.GE.
IF( TMPZERO ) THEN
3249 SUMRPOS = SUMRPOS + TMP * FACT
3251 SUMRNEG = SUMRNEG - TMP * FACT
3254 TMP = AIMAG( X( IX ) ) * REAL( Y ( IY ) )
3255.GE.
IF( TMPZERO ) THEN
3256 SUMIPOS = SUMIPOS + TMP * FACT
3258 SUMINEG = SUMINEG - TMP * FACT
3261 TMP = REAL( X( IX ) ) * AIMAG( Y ( IY ) )
3262.GE.
IF( TMPZERO ) THEN
3263 SUMIPOS = SUMIPOS + TMP * FACT
3265 SUMINEG = SUMINEG - TMP * FACT
3273 ERRBND = ADDBND * MAX( MAX( SUMRPOS, SUMRNEG ),
3274 $ MAX( SUMIPOS, SUMINEG ) )
3281 SUBROUTINE PCERRDOTC( ERRBND, N, SCLR, X, INCX, Y, INCY, PREC )
3289 INTEGER INCX, INCY, N
3294 COMPLEX X( * ), Y( * )
3357 PARAMETER ( ONE = 1.0E+0, TWO = 2.0E+0,
3362 REAL ADDBND, FACT, SUMINEG, SUMIPOS, SUMRNEG,
3366 INTRINSIC ABS, AIMAG, CONJG, MAX, REAL
3377 FACT = TWO * ( ONE + PREC )
3378 ADDBND = TWO * TWO * TWO * PREC
3382 SCLR = SCLR + CONJG( X( IX ) ) * Y( IY )
3384 TMP = REAL( X( IX ) ) * REAL( Y ( IY ) )
3385.GE.
IF( TMPZERO ) THEN
3386 SUMRPOS = SUMRPOS + TMP * FACT
3388 SUMRNEG = SUMRNEG - TMP * FACT
3391 TMP = AIMAG( X( IX ) ) * AIMAG( Y ( IY ) )
3392.GE.
IF( TMPZERO ) THEN
3393 SUMRPOS = SUMRPOS + TMP * FACT
3395 SUMRNEG = SUMRNEG - TMP * FACT
3398 TMP = - AIMAG( X( IX ) ) * REAL( Y ( IY ) )
3399.GE.
IF( TMPZERO ) THEN
3400 SUMIPOS = SUMIPOS + TMP * FACT
3402 SUMINEG = SUMINEG - TMP * FACT
3405 TMP = REAL( X( IX ) ) * AIMAG( Y ( IY ) )
3406.GE.
IF( TMPZERO ) THEN
3407 SUMIPOS = SUMIPOS + TMP * FACT
3409 SUMINEG = SUMINEG - TMP * FACT
3417 ERRBND = ADDBND * MAX( MAX( SUMRPOS, SUMRNEG ),
3418 $ MAX( SUMIPOS, SUMINEG ) )
3425 SUBROUTINE PCERRNRM2( ERRBND, N, USCLR, X, INCX, PREC )
3434 REAL ERRBND, PREC, USCLR
3490 PARAMETER ( ONE = 1.0E+0, TWO = 2.0E+0,
3495 REAL ABSXI, ADDBND, FACT, SCALE, SSQ, SUMSCA, SUMSSQ
3498 INTRINSIC ABS, AIMAG, REAL
3505 ADDBND = TWO * TWO * TWO * PREC
3506 FACT = ONE + TWO * ( ( ONE + PREC )**3 - ONE )
3510 DO 10 IX = 1, 1 + ( N - 1 )*INCX, INCX
3511.NE.
IF( REAL( X( IX ) )ZERO ) THEN
3512 ABSXI = ABS( REAL( X( IX ) ) )
3513.LT.
IF( SCALEABSXI )THEN
3514 SUMSSQ = ONE + ( SSQ*( SCALE/ABSXI )**2 ) * FACT
3515 ERRBND = ADDBND * SUMSSQ
3516 SUMSSQ = SUMSSQ + ERRBND
3517 SSQ = ONE + SSQ*( SCALE/ABSXI )**2
3521 SUMSSQ = SSQ + ( ( ABSXI/SCALE )**2 ) * FACT
3522 ERRBND = ADDBND * SUMSSQ
3523 SUMSSQ = SUMSSQ + ERRBND
3524 SSQ = SSQ + ( ABSXI/SCALE )**2
3527.NE.
IF( AIMAG( X( IX ) )ZERO ) THEN
3528 ABSXI = ABS( AIMAG( X( IX ) ) )
3529.LT.
IF( SCALEABSXI )THEN
3530 SUMSSQ = ONE + ( SSQ*( SCALE/ABSXI )**2 ) * FACT
3531 ERRBND = ADDBND * SUMSSQ
3532 SUMSSQ = SUMSSQ + ERRBND
3533 SSQ = ONE + SSQ*( SCALE/ABSXI )**2
3537 SUMSSQ = SSQ + ( ( ABSXI/SCALE )**2 ) * FACT
3538 ERRBND = ADDBND * SUMSSQ
3539 SUMSSQ = SUMSSQ + ERRBND
3540 SSQ = SSQ + ( ABSXI/SCALE )**2
3545 USCLR = SCALE * SQRT( SSQ )
3549 ERRBND = SQRT( SUMSSQ ) * ( ONE + TWO * ( 1.00001E+0 * PREC ) )
3551 ERRBND = ( SUMSCA * ERRBND ) - USCLR
3558 SUBROUTINE PCERRASUM( ERRBND, N, USCLR, X, INCX, PREC )
3567 REAL ERRBND, PREC, USCLR
3614 PARAMETER ( TWO = 2.0E+0, ZERO = 0.0E+0 )
3621 INTRINSIC ABS, AIMAG, REAL
3627 ADDBND = TWO * TWO * TWO * PREC
3629 DO 10 IX = 1, 1 + ( N - 1 )*INCX, INCX
3630 USCLR = USCLR + ABS( REAL( X( IX ) ) ) +
3631 $ ABS( AIMAG( X( IX ) ) )
3634 ERRBND = ADDBND * USCLR
3641 SUBROUTINE PCERRSCAL( ERRBND, PSCLR, X, PREC )
3693 PARAMETER ( TWO = 2.0E+0 )
3702 ERRBND = ( TWO * PREC ) * ABS( X )
3709 SUBROUTINE PCSERRSCAL( ERRBND, PUSCLR, X, PREC )
3717 REAL ERRBND, PREC, PUSCLR
3761 PARAMETER ( TWO = 2.0E+0 )
3764 INTRINSIC ABS, AIMAG, CMPLX, REAL
3768 X = CMPLX( PUSCLR * REAL( X ), PUSCLR * AIMAG( X ) )
3770 ERRBND = ( TWO * PREC ) * ABS( X )
3777 SUBROUTINE PCERRAXPY( ERRBND, PSCLR, X, Y, PREC )
3822 PARAMETER ( ONE = 1.0E+0, TWO = 2.0E+0,
3826 REAL ADDBND, FACT, SUMINEG, SUMIPOS, SUMRNEG,
3831 INTRINSIC AIMAG, MAX, REAL
3839 FACT = ONE + TWO * PREC
3840 ADDBND = TWO * TWO * TWO * PREC
3843.GE.
IF( REAL( TMP )ZERO ) THEN
3844 SUMRPOS = SUMRPOS + REAL( TMP ) * FACT
3846 SUMRNEG = SUMRNEG - REAL( TMP ) * FACT
3848.GE.
IF( AIMAG( TMP )ZERO ) THEN
3849 SUMIPOS = SUMIPOS + AIMAG( TMP ) * FACT
3851 SUMINEG = SUMINEG - AIMAG( TMP ) * FACT
3855.GE.
IF( REAL( TMP )ZERO ) THEN
3856 SUMRPOS = SUMRPOS + REAL( TMP )
3858 SUMRNEG = SUMRNEG - REAL( TMP )
3860.GE.
IF( AIMAG( TMP )ZERO ) THEN
3861 SUMIPOS = SUMIPOS + AIMAG( TMP )
3863 SUMINEG = SUMINEG - AIMAG( TMP )
3866 Y = Y + ( PSCLR * X )
3868 ERRBND = ADDBND * MAX( MAX( SUMRPOS, SUMRNEG ),
3869 $ MAX( SUMIPOS, SUMINEG ) )
end diagonal values have been computed in the(sparse) matrix id.SOL
subroutine blacs_gridinit(cntxt, c, nprow, npcol)
subroutine pcscal(n, alpha, x, ix, jx, descx, incx)
subroutine pscnrm2(n, norm2, x, ix, jx, descx, incx)
subroutine blacs_gridexit(cntxt)
subroutine pcaxpy(n, a, x, ix, jx, descx, incx, y, iy, jy, descy, incy)
subroutine blacs_gridinfo(cntxt, nprow, npcol, myrow, mycol)
for(i8=*sizetab-1;i8 >=0;i8--)
subroutine pvdimchk(ictxt, nout, n, matrix, ix, jx, descx, incx, info)
subroutine pb_descset2(desc, m, n, imb, inb, mb, nb, rsrc, csrc, ctxt, lld)
subroutine pvdescchk(ictxt, nout, matrix, descx, dtx, mx, nx, imbx, inbx, mbx, nbx, rsrcx, csrcx, incx, mpx, nqx, iprex, imidx, ipostx, igap, gapmul, info)
subroutine pcbla1tstinfo(summry, nout, nmat, nval, mxval, nxval, imbxval, mbxval, inbxval, nbxval, rscxval, cscxval, ixval, jxval, incxval, myval, nyval, imbyval, mbyval, inbyval, nbyval, rscyval, cscyval, iyval, jyval, incyval, ldval, ngrids, pval, ldpval, qval, ldqval, ltest, sof, tee, iam, igap, iverb, nprocs, alpha, work)
subroutine pcblas1tstchke(ltest, inout, nprocs)
subroutine pcchkarg1(ictxt, nout, sname, n, alpha, ix, jx, descx, incx, iy, jy, descy, incy, info)
subroutine pcblas1tstchk(ictxt, nout, nrout, n, psclr, pusclr, pisclr, x, px, ix, jx, descx, incx, y, py, iy, jy, descy, incy, info)
subroutine pclagen(inplace, aform, diag, offa, m, n, ia, ja, desca, iaseed, a, lda)
subroutine pcchkvout(n, x, px, ix, jx, descx, incx, info)
subroutine pb_cchekpad(ictxt, mess, m, n, a, lda, ipre, ipost, chkval)
subroutine pb_pclaprnt(m, n, a, ia, ja, desca, irprnt, icprnt, cmatnm, nout, work)
subroutine pcmprnt(ictxt, nout, m, n, a, lda, irprnt, icprnt, cmatnm)
subroutine pb_cfillpad(ictxt, m, n, a, lda, ipre, ipost, chkval)
subroutine pcvprnt(ictxt, nout, n, x, incx, irprnt, icprnt, cvecnm)