4 CHARACTER*7 SNAMES( NSUBS )
6 DATA snames/
'PZSWAP ',
'PZSCAL ',
7 $
'PZDSCAL',
'PZCOPY ',
'PZAXPY ',
8 $
'PZDOTU ',
'PZDOTC ',
'PDZNRM2',
108 INTEGER MAXTESTS, MAXGRIDS, GAPMUL, ZPLXSZ, TOTMEM,
110 DOUBLE PRECISION RZERO
111 COMPLEX*16 PADVAL, ZERO
112 PARAMETER ( MAXTESTS = 20, MAXGRIDS = 20, GAPMUL = 10,
113 $ ZPLXSZ = 16, TOTMEM = 2000000,
114 $ MEMSIZ = TOTMEM / ZPLXSZ,
115 $ PADVAL = ( -9923.0D+0, -9923.0D+0 ),
116 $ RZERO = 0.0D+0, ZERO = ( 0.0D+0, 0.0D+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
136 DOUBLE PRECISION PUSCLR
137 COMPLEX*16 ALPHA, PSCLR
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*16 MEM( MEMSIZ )
161 EXTERNAL BLACS_EXIT, BLACS_GET, BLACS_GRIDEXIT,
162 $ BLACS_GRIDINFO, BLACS_GRIDINIT, BLACS_PINFO,
163 $ IGSUM2D, PB_DESCSET2, PB_PZLAPRNT, PB_ZCHEKPAD,
164 $ PB_ZFILLPAD, PDZASUM, PDZNRM2, PVDESCCHK,
165 $ PVDIMCHK, PZAMAX, PZAXPY, PZBLA1TSTINFO,
166 $ PZBLAS1TSTCHK, PZBLAS1TSTCHKE, PZCHKARG1,
167 $ PZCHKVOUT, PZCOPY, PZDOTC, PZDOTU, PZDSCAL,
168 $ PZLAGEN, PZMPRNT, PZSCAL, PZSWAP, PZVPRNT
171 INTRINSIC ABS, DBLE, MAX, MOD
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 PZBLA1TSTINFO( 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 = * )
237 $ CALL PZBLAS1TSTCHKE( LTEST, NOUT, NPROCS )
249.LT.
IF( NPROW1 ) THEN
251 $ WRITE( NOUT, FMT = 9999 ) 'grid size
', 'nprow
', NPROW
253.LT.
ELSE IF( NPCOL1 ) THEN
255 $ WRITE( NOUT, FMT = 9999 ) 'grid size
', 'npcol
', NPCOL
257.GT.
ELSE IF( NPROW*NPCOLNPROCS ) THEN
259 $ WRITE( NOUT, FMT = 9998 ) NPROW*NPCOL, NPROCS
263.GT.
IF( IERR( 1 )0 ) THEN
265 $ WRITE( NOUT, FMT = 9997 ) 'grid
'
272 CALL BLACS_GET( -1, 0, ICTXT )
273 CALL BLACS_GRIDINIT( ICTXT, 'row-major
', NPROW, NPCOL )
274 CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL )
279.GE..OR..GE.
IF( MYROWNPROW MYCOLNPCOL )
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 )
334 CALL PVDESCCHK( ICTXT, NOUT, 'x
', DESCX,
335 $ BLOCK_CYCLIC_2D_INB, MX, NX, IMBX, INBX,
336 $ MBX, NBX, RSRCX, CSRCX, INCX, MPX, NQX,
337 $ IPREX, IMIDX, IPOSTX, IGAP, GAPMUL,
339 CALL PVDESCCHK( ICTXT, NOUT, 'y
', DESCY,
340 $ BLOCK_CYCLIC_2D_INB, MY, NY, IMBY, INBY,
341 $ MBY, NBY, RSRCY, CSRCY, INCY, MPY, NQY,
342 $ IPREY, IMIDY, IPOSTY, IGAP, GAPMUL,
345.GT..OR..GT.
IF( IERR( 1 )0 IERR( 2 )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.GT.
IF( MEMREQDMEMSIZ ) THEN
372 $ WRITE( NOUT, FMT = 9990 ) MEMREQD*ZPLXSZ
378 CALL IGSUM2D( ICTXT, 'all
', ' ', 1, 1, IERR, 1, -1, 0 )
380.GT.
IF( IERR( 1 )0 ) THEN
382 $ WRITE( NOUT, FMT = 9991 )
393.NOT.
IF( 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.NE..OR..NE.
IF( IERR( 1 )0 IERR( 2 )0 ) THEN
409 KSKIP( K ) = KSKIP( K ) + 1
415 CALL PZLAGEN( .FALSE., 'none
', 'no diag
', 0, MX, NX, 1,
416 $ 1, DESCX, IXSEED, MEM( IPX ),
419 $ CALL PZLAGEN( .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 PZLAGEN( .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 PZLAGEN( .FALSE., 'none
', 'no diag
', 0, MY, NY,
434 $ 1, 1, DESCYR, IYSEED, MEM( IPMATY ),
440 CALL PB_ZFILLPAD( ICTXT, MPX, NQX, MEM( IPX-IPREX ),
441 $ DESCX( LLD_ ), IPREX, IPOSTX, PADVAL )
443 IF( YCHECK( K ) ) THEN
444 CALL PB_ZFILLPAD( ICTXT, MPY, NQY, MEM( IPY-IPREY ),
445 $ DESCY( LLD_ ), IPREY, IPOSTY,
452 CALL PZCHKARG1( 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_PZLAPRNT( 1, N, MEM( IPX ), IX, JX, DESCX,
466 $ 0, 0, 'parallel_initial_x
', NOUT,
469 CALL PB_PZLAPRNT( 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_PZLAPRNT( 1, N, MEM( IPY ), IY, JY,
477 $ 'parallel_initial_y
', NOUT,
480 CALL PB_PZLAPRNT( N, 1, MEM( IPY ), IY, JY,
482 $ 'parallel_initial_y
', NOUT,
486.GE.
ELSE IF( IVERB3 ) THEN
487 CALL PB_PZLAPRNT( MX, NX, MEM( IPX ), 1, 1, DESCX, 0,
488 $ 0, 'parallel_initial_x
', NOUT,
491 $ CALL PB_PZLAPRNT( MY, NY, MEM( IPY ), 1, 1, DESCY,
492 $ 0, 0, 'parallel_initial_y
', NOUT,
502 CALL PZSWAP( N, MEM( IPX ), IX, JX, DESCX, INCX,
503 $ MEM( IPY ), IY, JY, DESCY, INCY )
505.EQ.
ELSE IF( K2 ) THEN
510 CALL PZSCAL( N, ALPHA, MEM( IPX ), IX, JX, DESCX,
513.EQ.
ELSE IF( K3 ) THEN
517 PUSCLR = DBLE( ALPHA )
518 CALL PZDSCAL( N, DBLE( ALPHA ), MEM( IPX ), IX, JX,
521.EQ.
ELSE IF( K4 ) THEN
525 CALL PZCOPY( N, MEM( IPX ), IX, JX, DESCX, INCX,
526 $ MEM( IPY ), IY, JY, DESCY, INCY )
528.EQ.
ELSE IF( K5 ) THEN
533 CALL PZAXPY( N, ALPHA, MEM( IPX ), IX, JX, DESCX,
534 $ INCX, MEM( IPY ), IY, JY, DESCY, INCY )
536.EQ.
ELSE IF( K6 ) THEN
540 CALL PZDOTU( N, PSCLR, MEM( IPX ), IX, JX, DESCX,
541 $ INCX, MEM( IPY ), IY, JY, DESCY, INCY )
543.EQ.
ELSE IF( K7 ) THEN
547 CALL PZDOTC( N, PSCLR, MEM( IPX ), IX, JX, DESCX,
548 $ INCX, MEM( IPY ), IY, JY, DESCY, INCY )
550.EQ.
ELSE IF( K8 ) THEN
554 CALL PDZNRM2( N, PUSCLR, MEM( IPX ), IX, JX, DESCX,
557.EQ.
ELSE IF( K9 ) THEN
561 CALL PDZASUM( N, PUSCLR, MEM( IPX ), IX, JX, DESCX,
564.EQ.
ELSE IF( K10 ) THEN
566 CALL PZAMAX( N, PSCLR, PISCLR, MEM( IPX ), IX, JX,
574 KSKIP( K ) = KSKIP( K ) + 1
576 $ WRITE( NOUT, FMT = 9978 ) INFO
582 CALL PZBLAS1TSTCHK( 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_ZCHEKPAD( ICTXT, SNAMES( K ), MPX, NQX,
599 $ MEM( IPX-IPREX ), DESCX( LLD_ ),
600 $ IPREX, IPOSTX, PADVAL )
601 IF( YCHECK( K ) ) THEN
602 CALL PB_ZCHEKPAD( ICTXT, SNAMES( K ), MPY, NQY,
603 $ MEM( IPY-IPREY ), DESCY( LLD_ ),
604 $ IPREY, IPOSTY, PADVAL )
610 CALL PZCHKARG1( ICTXT, NOUT, SNAMES( K ), N, ALPHA, IX,
611 $ JX, DESCX, INCX, IY, JY, DESCY, INCY,
616 CALL PZCHKVOUT( 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 PZCHKVOUT( 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 PZMPRNT( ICTXT, NOUT, MX, NX, MEM( IPMATX ),
654 $ LDX, 0, 0, 'serial_x
' )
655 CALL PB_PZLAPRNT( MX, NX, MEM( IPX ), 1, 1, DESCX,
656 $ 0, 0, 'parallel_x
', NOUT,
658.NE.
ELSE IF( IERR( 1 )0 ) THEN
660 $ CALL PZVPRNT( 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_PZLAPRNT( 1, N, MEM( IPX ), IX, JX,
665 $ DESCX, 0, 0, 'parallel_x
',
666 $ NOUT, MEM( IPMATX ) )
668 CALL PB_PZLAPRNT( 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 PZMPRNT( ICTXT, NOUT, MY, NY,
676 $ MEM( IPMATY ), LDY, 0, 0,
678 CALL PB_PZLAPRNT( 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 PZVPRNT( 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_PZLAPRNT( 1, N, MEM( IPY ), IY, JY,
688 $ DESCY, 0, 0, 'parallel_y
',
689 $ NOUT, MEM( IPMATX ) )
691 CALL PB_PZLAPRNT( 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, '---------------------------------------------------
',
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 PZBLA1TSTINFO( 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 )
1042 DOUBLE PRECISION EPS
1046 CHARACTER*79 USRINFO
1049 EXTERNAL BLACS_ABORT, BLACS_GET, BLACS_GRIDEXIT,
1050 $ BLACS_GRIDINIT, BLACS_SETUP, ICOPY, IGEBR2D,
1051 $ IGEBS2D, SGEBR2D, SGEBS2D, ZGEBR2D, ZGEBS2D
1054 DOUBLE PRECISION PDLAMCH
1061 CHARACTER*7 SNAMES( NSUBS )
1062 COMMON /SNAMEC/SNAMES
1073 OPEN( NIN, FILE='pzblas1tst.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 = PDLAMCH( ICTXT, 'eps
' )
1213 CALL ZGEBS2D( 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 = PDLAMCH( ICTXT, 'eps
' )
1369 CALL ZGEBR2D( 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 PZBLAS1TSTCHKE( 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, PDZASUM, PDZNRM2, PZAMAX,
1650 $ PZAXPY, PZCOPY, PZDIMEE, PZDOTC, PZDOTU,
1651 $ PZDSCAL, PZSCAL, PZSWAP, PZVECEE
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 PZDIMEE( ICTXT, NOUT, PZSWAP, SCODE( I ), SNAMES( I ) )
1685 CALL PZVECEE( ICTXT, NOUT, PZSWAP, SCODE( I ), SNAMES( I ) )
1691 IF( LTEST( I ) ) THEN
1692 CALL PZDIMEE( ICTXT, NOUT, PZSCAL, SCODE( I ), SNAMES( I ) )
1693 CALL PZVECEE( ICTXT, NOUT, PZSCAL, SCODE( I ), SNAMES( I ) )
1699 IF( LTEST( I ) ) THEN
1700 CALL PZDIMEE( ICTXT, NOUT, PZDSCAL, SCODE( I ), SNAMES( I ) )
1701 CALL PZVECEE( ICTXT, NOUT, PZDSCAL, SCODE( I ), SNAMES( I ) )
1707 IF( LTEST( I ) ) THEN
1708 CALL PZDIMEE( ICTXT, NOUT, PZCOPY, SCODE( I ), SNAMES( I ) )
1709 CALL PZVECEE( ICTXT, NOUT, PZCOPY, SCODE( I ), SNAMES( I ) )
1715 IF( LTEST( I ) ) THEN
1716 CALL PZDIMEE( ICTXT, NOUT, PZAXPY, SCODE( I ), SNAMES( I ) )
1717 CALL PZVECEE( ICTXT, NOUT, PZAXPY, SCODE( I ), SNAMES( I ) )
1723 IF( LTEST( I ) ) THEN
1724 CALL PZDIMEE( ICTXT, NOUT, PZDOTU, SCODE( I ), SNAMES( I ) )
1725 CALL PZVECEE( ICTXT, NOUT, PZDOTU, SCODE( I ), SNAMES( I ) )
1731 IF( LTEST( I ) ) THEN
1732 CALL PZDIMEE( ICTXT, NOUT, PZDOTC, SCODE( I ), SNAMES( I ) )
1733 CALL PZVECEE( ICTXT, NOUT, PZDOTC, SCODE( I ), SNAMES( I ) )
1739 IF( LTEST( I ) ) THEN
1740 CALL PZDIMEE( ICTXT, NOUT, PDZNRM2, SCODE( I ), SNAMES( I ) )
1741 CALL PZVECEE( ICTXT, NOUT, PDZNRM2, SCODE( I ), SNAMES( I ) )
1747 IF( LTEST( I ) ) THEN
1748 CALL PZDIMEE( ICTXT, NOUT, PDZASUM, SCODE( I ), SNAMES( I ) )
1749 CALL PZVECEE( ICTXT, NOUT, PDZASUM, SCODE( I ), SNAMES( I ) )
1755 IF( LTEST( I ) ) THEN
1756 CALL PZDIMEE( ICTXT, NOUT, PZAMAX, SCODE( I ), SNAMES( I ) )
1757 CALL PZVECEE( ICTXT, NOUT, PZAMAX, 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 PZCHKARG1( 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.NE.
ELSE IF( DESCX( CSRC_ )DESCXREF( CSRC_ ) ) THEN
2012 WRITE( ARGNAME, FMT = '(a)
' ) 'descx( csrc_ )
'
2013.NE.
ELSE IF( DESCX( CTXT_ )DESCXREF( CTXT_ ) ) THEN
2014 WRITE( ARGNAME, FMT = '(a)
' ) 'descx( ctxt_ )
'
2015.NE.
ELSE IF( DESCX( LLD_ )DESCXREF( LLD_ ) ) THEN
2016 WRITE( ARGNAME, FMT = '(a)
' ) 'descx( lld_ )
'
2017.NE.
ELSE IF( INCXINCXREF ) THEN
2018 WRITE( ARGNAME, FMT = '(a)
' ) 'incx
'
2019.NE.
ELSE IF( IYIYREF ) THEN
2020 WRITE( ARGNAME, FMT = '(a)
' ) 'iy
'
2021.NE.
ELSE IF( JYJYREF ) THEN
2022 WRITE( ARGNAME, FMT = '(a)
' ) 'jy
'
2023.NE.
ELSE IF( DESCY( DTYPE_ )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 ELSE IF( descy( inb_ ).NE.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 PZBLAS1TSTCHK( 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
2264 DOUBLE PRECISION PUSCLR
2268 INTEGER DESCX( * ), DESCY( * )
2269 COMPLEX*16 PX( * ), PY( * ), X( * ), Y( * )
2447 DOUBLE PRECISION RZERO
2449 PARAMETER ( ZERO = ( 0.0D+0, 0.0D+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 DOUBLE PRECISION ERR, ERRMAX, PREC, USCLR
2470 CHARACTER*5 ARGIN1, ARGIN2, ARGOUT1, ARGOUT2
2473 EXTERNAL BLACS_GRIDINFO, IGAMX2D, PB_INFOG2L, PZCHKVIN,
2474 $ PZDERRSCAL, PZERRASUM, PZERRAXPY, PZERRDOTC,
2475 $ PZERRDOTU, PZERRNRM2, PZERRSCAL, ZCOPY, ZSWAP
2480 DOUBLE PRECISION PDLAMCH
2481 EXTERNAL IZAMAX, PDLAMCH, PISINSCOPE
2495 CALL BLACS_GRIDINFO( ICTXT, NPROW, NPCOL, MYROW, MYCOL )
2505 PREC = PDLAMCH( ICTXT, 'precision
' )
2507.EQ.
IF( NROUT1 ) THEN
2511 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
2512 IOFFY = IY + ( JY - 1 ) * DESCY( M_ )
2513 CALL ZSWAP( N, X( IOFFX ), INCX, Y( IOFFY ), INCY )
2514 CALL PZCHKVIN( ERRMAX, N, X, PX, IX, JX, DESCX, INCX,
2516 CALL PZCHKVIN( ERRMAX, N, Y, PY, IY, JY, DESCY, INCY,
2519.EQ.
ELSE IF( NROUT2 ) THEN
2524 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
2525 CALL PB_INFOG2L( IX, JX, DESCX, NPROW, NPCOL, MYROW, MYCOL,
2526 $ IIX, JJX, IXROW, IXCOL )
2529.EQ.
ROWREP = ( IXROW-1 )
2530.EQ.
COLREP = ( IXCOL-1 )
2532.EQ.
IF( INCXDESCX( M_ ) ) THEN
2536 JB = DESCX( INB_ ) - JX + 1
2538 $ JB = ( (-JB ) / DESCX( NB_ ) + 1 ) * DESCX( NB_ ) + JB
2544 CALL PZERRSCAL( ERR, PSCLR, X( IOFFX ), PREC )
2546.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2547.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2548.GT.
IF( ABS( PX( IIX+(JJX-1)*LDX ) - X( IOFFX ) )
2554 IOFFX = IOFFX + INCX
2558 ICURCOL = MOD( ICURCOL+1, NPCOL )
2560 DO 40 J = JN+1, JX+N-1, DESCX( NB_ )
2561 JB = MIN( JX+N-J, DESCX( NB_ ) )
2565 CALL PZERRSCAL( ERR, PSCLR, X( IOFFX ), PREC )
2567.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2568.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2569.GT.
IF( ABS( PX( IIX+(JJX-1)*LDX ) - X( IOFFX ) )
2575 IOFFX = IOFFX + INCX
2579 ICURCOL = MOD( ICURCOL+1, NPCOL )
2587 IB = DESCX( IMB_ ) - IX + 1
2589 $ IB = ( (-IB ) / DESCX( MB_ ) + 1 ) * DESCX( MB_ ) + IB
2595 CALL PZERRSCAL( ERR, PSCLR, X( IOFFX ), PREC )
2597.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2598.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2599.GT.
IF( ABS( PX( IIX+(JJX-1)*LDX ) - X( IOFFX ) )
2605 IOFFX = IOFFX + INCX
2609 ICURROW = MOD( ICURROW+1, NPROW )
2611 DO 70 I = IN+1, IX+N-1, DESCX( MB_ )
2612 IB = MIN( IX+N-I, DESCX( MB_ ) )
2616 CALL PZERRSCAL( ERR, PSCLR, X( IOFFX ), PREC )
2618.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2619.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2620.GT.
IF( ABS( PX( IIX+(JJX-1)*LDX ) - X( IOFFX ) )
2626 IOFFX = IOFFX + INCX
2629 ICURROW = MOD( ICURROW+1, NPROW )
2635.EQ.
ELSE IF( NROUT3 ) THEN
2640 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
2641 CALL PB_INFOG2L( IX, JX, DESCX, NPROW, NPCOL, MYROW, MYCOL,
2642 $ IIX, JJX, IXROW, IXCOL )
2645.EQ.
ROWREP = ( IXROW-1 )
2646.EQ.
COLREP = ( IXCOL-1 )
2648.EQ.
IF( INCXDESCX( M_ ) ) THEN
2652 JB = DESCX( INB_ ) - JX + 1
2654 $ JB = ( (-JB ) / DESCX( NB_ ) + 1 ) * DESCX( NB_ ) + JB
2660 CALL PZDERRSCAL( ERR, PUSCLR, X( IOFFX ), PREC )
2662.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2663.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2664.GT.
IF( ABS( PX( IIX+(JJX-1)*LDX ) - X( IOFFX ) )
2670 IOFFX = IOFFX + INCX
2674 ICURCOL = MOD( ICURCOL+1, NPCOL )
2676 DO 100 J = JN+1, JX+N-1, DESCX( NB_ )
2677 JB = MIN( JX+N-J, DESCX( NB_ ) )
2681 CALL PZDERRSCAL( ERR, PUSCLR, X( IOFFX ), PREC )
2683.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2684.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2685.GT.
IF( ABS( PX( IIX+(JJX-1)*LDX ) - X( IOFFX ) )
2691 IOFFX = IOFFX + INCX
2695 ICURCOL = MOD( ICURCOL+1, NPCOL )
2703 IB = DESCX( IMB_ ) - IX + 1
2705 $ IB = ( (-IB ) / DESCX( MB_ ) + 1 ) * DESCX( MB_ ) + IB
2711 CALL PZDERRSCAL( ERR, PUSCLR, X( IOFFX ), PREC )
2713.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2714.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2715.GT.
IF( ABS( PX( IIX+(JJX-1)*LDX ) - X( IOFFX ) )
2721 IOFFX = IOFFX + INCX
2725 ICURROW = MOD( ICURROW+1, NPROW )
2727 DO 130 I = IN+1, IX+N-1, DESCX( MB_ )
2728 IB = MIN( IX+N-I, DESCX( MB_ ) )
2732 CALL PZDERRSCAL( ERR, PUSCLR, X( IOFFX ), PREC )
2734.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2735.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2736.GT.
IF( ABS( PX( IIX+(JJX-1)*LDX ) - X( IOFFX ) )
2742 IOFFX = IOFFX + INCX
2745 ICURROW = MOD( ICURROW+1, NPROW )
2751.EQ.
ELSE IF( NROUT4 ) THEN
2755 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
2756 IOFFY = IY + ( JY - 1 ) * DESCY( M_ )
2757 CALL ZCOPY( N, X( IOFFX ), INCX, Y( IOFFY ), INCY )
2758 CALL PZCHKVIN( ERRMAX, N, X, PX, IX, JX, DESCX, INCX,
2760 CALL PZCHKVIN( ERRMAX, N, Y, PY, IY, JY, DESCY, INCY,
2763.EQ.
ELSE IF( NROUT5 ) THEN
2767 CALL PZCHKVIN( ERRMAX, N, X, PX, IX, JX, DESCX, INCX,
2770 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
2771 IOFFY = IY + ( JY - 1 ) * DESCY( M_ )
2772 CALL PB_INFOG2L( IY, JY, DESCY, NPROW, NPCOL, MYROW, MYCOL,
2773 $ IIY, JJY, IYROW, IYCOL )
2776.EQ.
ROWREP = ( IYROW-1 )
2777.EQ.
COLREP = ( IYCOL-1 )
2779.EQ.
IF( INCYDESCY( M_ ) ) THEN
2783 JB = DESCY( INB_ ) - JY + 1
2785 $ JB = ( (-JB ) / DESCY( NB_ ) + 1 ) * DESCY( NB_ ) + JB
2791 CALL PZERRAXPY( ERR, PSCLR, X( IOFFX ), Y( IOFFY ),
2794.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2795.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2796.GT.
IF( ABS( PY( IIY+(JJY-1)*LDY ) - Y( IOFFY ) )
2803 IOFFX = IOFFX + INCX
2804 IOFFY = IOFFY + INCY
2808 ICURCOL = MOD( ICURCOL+1, NPCOL )
2810 DO 160 J = JN+1, JY+N-1, DESCY( NB_ )
2811 JB = MIN( JY+N-J, DESCY( NB_ ) )
2815 CALL PZERRAXPY( ERR, PSCLR, X( IOFFX ), Y( IOFFY ),
2818.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2819.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2820.GT.
IF( ABS( PY( IIY+(JJY-1)*LDY ) - Y( IOFFY ) )
2827 IOFFX = IOFFX + INCX
2828 IOFFY = IOFFY + INCY
2832 ICURCOL = MOD( ICURCOL+1, NPCOL )
2840 IB = DESCY( IMB_ ) - IY + 1
2842 $ IB = ( (-IB ) / DESCY( MB_ ) + 1 ) * DESCY( MB_ ) + IB
2848 CALL PZERRAXPY( ERR, PSCLR, X( IOFFX ), Y( IOFFY ),
2851.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2852.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2853.GT.
IF( ABS( PY( IIY+(JJY-1)*LDY ) - Y( IOFFY ) )
2860 IOFFX = IOFFX + INCX
2861 IOFFY = IOFFY + INCY
2865 ICURROW = MOD( ICURROW+1, NPROW )
2867 DO 190 I = IN+1, IY+N-1, DESCY( MB_ )
2868 IB = MIN( IY+N-I, DESCY( MB_ ) )
2872 CALL PZERRAXPY( ERR, PSCLR, X( IOFFX ), Y( IOFFY ),
2875.EQ..OR..AND.
IF( ( MYROWICURROW ROWREP )
2876.EQ..OR.
$ ( MYCOLICURCOL COLREP ) ) THEN
2877.GT.
IF( ABS( PY( IIY+(JJY-1)*LDY ) - Y( IOFFY ) )
2884 IOFFX = IOFFX + INCX
2885 IOFFY = IOFFY + INCY
2889 ICURROW = MOD( ICURROW+1, NPROW )
2895.EQ.
ELSE IF( NROUT6 ) THEN
2899 CALL PZCHKVIN( ERRMAX, N, X, PX, IX, JX, DESCX, INCX,
2901 CALL PZCHKVIN( ERRMAX, N, Y, PY, IY, JY, DESCY, INCY,
2903 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
2904 IOFFY = IY + ( JY - 1 ) * DESCY( M_ )
2905 CALL PZERRDOTU( ERR, N, SCLR, X( IOFFX ), INCX, Y( IOFFY ),
2907 INXSCOPE = PISINSCOPE( ICTXT, N, IX, JX, DESCX, INCX )
2908 INYSCOPE = PISINSCOPE( ICTXT, N, IY, JY, DESCY, INCY )
2909.OR.
IF( INXSCOPEINYSCOPE ) THEN
2910.GT.
IF( ABS( PSCLR - SCLR )ERR ) THEN
2912 WRITE( ARGIN1, FMT = '(a)
' ) 'dotu
'
2913.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
2914 WRITE( NOUT, FMT = 9998 ) ARGIN1
2915 WRITE( NOUT, FMT = 9996 ) SCLR, PSCLR
2920.NE.
IF( PSCLRSCLR ) THEN
2922 WRITE( ARGOUT1, FMT = '(a)
' ) 'dotu
'
2923.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
2924 WRITE( NOUT, FMT = 9997 ) ARGOUT1
2925 WRITE( NOUT, FMT = 9996 ) SCLR, PSCLR
2930.EQ.
ELSE IF( NROUT7 ) THEN
2934 CALL PZCHKVIN( ERRMAX, N, X, PX, IX, JX, DESCX, INCX,
2936 CALL PZCHKVIN( ERRMAX, N, Y, PY, IY, JY, DESCY, INCY,
2938 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
2939 IOFFY = IY + ( JY - 1 ) * DESCY( M_ )
2940 CALL PZERRDOTC( ERR, N, SCLR, X( IOFFX ), INCX, Y( IOFFY ),
2942 INXSCOPE = PISINSCOPE( ICTXT, N, IX, JX, DESCX, INCX )
2943 INYSCOPE = PISINSCOPE( ICTXT, N, IY, JY, DESCY, INCY )
2944.OR.
IF( INXSCOPEINYSCOPE ) THEN
2945.GT.
IF( ABS( PSCLR - SCLR )ERR ) THEN
2947 WRITE( ARGIN1, FMT = '(a)
' ) 'dotc
'
2948.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
2949 WRITE( NOUT, FMT = 9998 ) ARGIN1
2950 WRITE( NOUT, FMT = 9996 ) SCLR, PSCLR
2955.NE.
IF( PSCLRSCLR ) THEN
2957 WRITE( ARGOUT1, FMT = '(a)
' ) 'dotc
'
2958.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
2959 WRITE( NOUT, FMT = 9997 ) ARGOUT1
2960 WRITE( NOUT, FMT = 9996 ) SCLR, PSCLR
2965.EQ.
ELSE IF( NROUT8 ) THEN
2969 CALL PZCHKVIN( ERRMAX, N, X, PX, IX, JX, DESCX, INCX,
2971 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
2972 CALL PZERRNRM2( ERR, N, USCLR, X( IOFFX ), INCX, PREC )
2973 IF( PISINSCOPE( ICTXT, N, IX, JX, DESCX, INCX ) ) THEN
2974.GT.
IF( ABS( PUSCLR - USCLR )ERR ) THEN
2976 WRITE( ARGIN1, FMT = '(a)
' ) 'nrm2
'
2977.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
2978 WRITE( NOUT, FMT = 9998 ) ARGIN1
2979 WRITE( NOUT, FMT = 9994 ) USCLR, PUSCLR
2984.NE.
IF( PUSCLRUSCLR ) THEN
2986 WRITE( ARGOUT1, FMT = '(a)
' ) 'nrm2
'
2987.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
2988 WRITE( NOUT, FMT = 9997 ) ARGOUT1
2989 WRITE( NOUT, FMT = 9994 ) USCLR, PUSCLR
2994.EQ.
ELSE IF( NROUT9 ) THEN
2998 CALL PZCHKVIN( ERRMAX, N, X, PX, IX, JX, DESCX, INCX,
3000 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
3001 CALL PZERRASUM( ERR, N, USCLR, X( IOFFX ), INCX, PREC )
3002 IF( PISINSCOPE( ICTXT, N, IX, JX, DESCX, INCX ) ) THEN
3003.GT.
IF( ABS( PUSCLR - USCLR ) ERR ) THEN
3005 WRITE( ARGIN1, FMT = '(a)
' ) 'asum
'
3006.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
3007 WRITE( NOUT, FMT = 9998 ) ARGIN1
3008 WRITE( NOUT, FMT = 9994 ) USCLR, PUSCLR
3013.NE.
IF( PUSCLRUSCLR ) THEN
3015 WRITE( ARGOUT1, FMT = '(a)
' ) 'asum
'
3016.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
3017 WRITE( NOUT, FMT = 9997 ) ARGOUT1
3018 WRITE( NOUT, FMT = 9994 ) USCLR, PUSCLR
3023.EQ.
ELSE IF( NROUT10 ) THEN
3027 CALL PZCHKVIN( ERRMAX, N, X, PX, IX, JX, DESCX, INCX,
3029 IOFFX = IX + ( JX - 1 ) * DESCX( M_ )
3030 IF( PISINSCOPE( ICTXT, N, IX, JX, DESCX, INCX ) ) THEN
3031 ISCLR = IZAMAX( N, X( IOFFX ), INCX )
3034.EQ..AND..EQ..AND.
ELSE IF( ( INCX1 )( DESCX( M_ )1 )
3038.EQ.
ELSE IF( INCXDESCX( M_ ) ) THEN
3039 ISCLR = JX + ISCLR - 1
3040 SCLR = X( IX + ( ISCLR - 1 ) * DESCX( M_ ) )
3042 ISCLR = IX + ISCLR - 1
3043 SCLR = X( ISCLR + ( JX - 1 ) * DESCX( M_ ) )
3046.NE.
IF( PSCLRSCLR ) THEN
3048 WRITE( ARGIN1, FMT = '(a)
' ) 'amax
'
3049.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
3050 WRITE( NOUT, FMT = 9998 ) ARGIN1
3051 WRITE( NOUT, FMT = 9996 ) SCLR, PSCLR
3055.NE.
IF( PISCLRISCLR ) THEN
3057 WRITE( ARGIN2, FMT = '(a)
' ) 'indx
'
3058.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
3059 WRITE( NOUT, FMT = 9998 ) ARGIN2
3060 WRITE( NOUT, FMT = 9995 ) ISCLR, PISCLR
3066.NE.
IF( PSCLRSCLR ) THEN
3068 WRITE( ARGOUT1, FMT = '(a)
' ) 'amax
'
3069.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
3070 WRITE( NOUT, FMT = 9997 ) ARGOUT1
3071 WRITE( NOUT, FMT = 9996 ) SCLR, PSCLR
3074.NE.
IF( PISCLRISCLR ) THEN
3076 WRITE( ARGOUT2, FMT = '(a)
' ) 'indx
'
3077.EQ..AND..EQ.
IF( MYROW0 MYCOL0 ) THEN
3078 WRITE( NOUT, FMT = 9997 ) ARGOUT2
3079 WRITE( NOUT, FMT = 9995 ) ISCLR, PISCLR
3088 CALL IGAMX2D( ICTXT, 'all
', ' ', 6, 1, IERR, 6, IDUMM, IDUMM, -1,
3093.NE.
IF( IERR( 1 )0 ) THEN
3095.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
3096 $ WRITE( NOUT, FMT = 9999 ) 'x
'
3099.NE.
IF( IERR( 2 )0 ) THEN
3101.EQ..AND..EQ.
IF( MYROW0 MYCOL0 )
3102 $ WRITE( NOUT, FMT = 9999 ) 'y
'
3105.NE.
IF( IERR( 3 )0 )
3108.NE.
IF( IERR( 4 )0 )
3111.NE.
IF( IERR( 5 )0 )
3114.NE.
IF( IERR( 6 )0 )
3117 9999 FORMAT( 2X, ' ***** error: vector operand
', A,
3118 $ ' is incorrect.
' )
3119 9998 FORMAT( 2X, ' ***** error: output scalar result
', A,
3120 $ ' in scope is incorrect.
' )
3121 9997 FORMAT( 2X, ' ***** error: output scalar result
', A,
3122 $ ' out of scope is incorrect.
' )
3123 9996 FORMAT( 2X, ' ***** expected
value is:
', D30.18, '+i*(
',
3124 $ D30.18, '),
', /2X, ' obtained
value is:
',
3125 $ D30.18, '+i*(
', D30.18, ')
' )
3126 9995 FORMAT( 2X, ' ***** expected
value is:
', I6, /2X,
3127 $ ' obtained
value is:
', I6 )
3128 9994 FORMAT( 2X, ' ***** expected
value is:
', D30.18, /2X,
3129 $ ' obtained
value is:
', D30.18 )
3136 SUBROUTINE PZERRDOTU( ERRBND, N, SCLR, X, INCX, Y, INCY, PREC )
3144 INTEGER INCX, INCY, N
3145 DOUBLE PRECISION ERRBND, PREC
3149 COMPLEX*16 X( * ), Y( * )
3211 DOUBLE PRECISION ONE, TWO, ZERO
3212 PARAMETER ( ONE = 1.0D+0, TWO = 2.0D+0,
3217 DOUBLE PRECISION ADDBND, FACT, SUMINEG, SUMIPOS, SUMRNEG,
3221 INTRINSIC ABS, DBLE, DIMAG, MAX
3232 FACT = TWO * ( ONE + PREC )
3233 ADDBND = TWO * TWO * TWO * PREC
3237 SCLR = SCLR + X( IX ) * Y( IY )
3239 TMP = DBLE( X( IX ) ) * DBLE( Y ( IY ) )
3240.GE.
IF( TMPZERO ) THEN
3241 SUMRPOS = SUMRPOS + TMP * FACT
3243 SUMRNEG = SUMRNEG - TMP * FACT
3246 TMP = - DIMAG( X( IX ) ) * DIMAG( Y ( IY ) )
3247.GE.
IF( TMPZERO ) THEN
3248 SUMRPOS = SUMRPOS + TMP * FACT
3250 SUMRNEG = SUMRNEG - TMP * FACT
3253 TMP = DIMAG( X( IX ) ) * DBLE( Y ( IY ) )
3254.GE.
IF( TMPZERO ) THEN
3255 SUMIPOS = SUMIPOS + TMP * FACT
3257 SUMINEG = SUMINEG - TMP * FACT
3260 TMP = DBLE( X( IX ) ) * DIMAG( Y ( IY ) )
3261.GE.
IF( TMPZERO ) THEN
3262 SUMIPOS = SUMIPOS + TMP * FACT
3264 SUMINEG = SUMINEG - TMP * FACT
3272 ERRBND = ADDBND * MAX( MAX( SUMRPOS, SUMRNEG ),
3273 $ MAX( SUMIPOS, SUMINEG ) )
3280 SUBROUTINE PZERRDOTC( ERRBND, N, SCLR, X, INCX, Y, INCY, PREC )
3288 INTEGER INCX, INCY, N
3289 DOUBLE PRECISION ERRBND, PREC
3293 COMPLEX*16 X( * ), Y( * )
3355 DOUBLE PRECISION ONE, TWO, ZERO
3356 PARAMETER ( ONE = 1.0D+0, TWO = 2.0D+0,
3361 DOUBLE PRECISION ADDBND, FACT, SUMINEG, SUMIPOS, SUMRNEG,
3365 INTRINSIC ABS, DBLE, DCONJG, DIMAG, MAX
3376 FACT = TWO * ( ONE + PREC )
3377 ADDBND = TWO * TWO * TWO * PREC
3381 SCLR = SCLR + DCONJG( X( IX ) ) * Y( IY )
3383 TMP = DBLE( X( IX ) ) * DBLE( Y ( IY ) )
3384.GE.
IF( TMPZERO ) THEN
3385 SUMRPOS = SUMRPOS + TMP * FACT
3387 SUMRNEG = SUMRNEG - TMP * FACT
3390 TMP = DIMAG( X( IX ) ) * DIMAG( Y ( IY ) )
3391.GE.
IF( TMPZERO ) THEN
3392 SUMRPOS = SUMRPOS + TMP * FACT
3394 SUMRNEG = SUMRNEG - TMP * FACT
3397 TMP = - DIMAG( X( IX ) ) * DBLE( Y ( IY ) )
3398.GE.
IF( TMPZERO ) THEN
3399 SUMIPOS = SUMIPOS + TMP * FACT
3401 SUMINEG = SUMINEG - TMP * FACT
3404 TMP = DBLE( X( IX ) ) * DIMAG( Y ( IY ) )
3405.GE.
IF( TMPZERO ) THEN
3406 SUMIPOS = SUMIPOS + TMP * FACT
3408 SUMINEG = SUMINEG - TMP * FACT
3416 ERRBND = ADDBND * MAX( MAX( SUMRPOS, SUMRNEG ),
3417 $ MAX( SUMIPOS, SUMINEG ) )
3424 SUBROUTINE PZERRNRM2( ERRBND, N, USCLR, X, INCX, PREC )
3433 DOUBLE PRECISION ERRBND, PREC, USCLR
3488 DOUBLE PRECISION ONE, TWO, ZERO
3489 PARAMETER ( ONE = 1.0D+0, TWO = 2.0D+0,
3494 DOUBLE PRECISION ABSXI, ADDBND, FACT, SCALE, SSQ, SUMSCA, SUMSSQ
3497 INTRINSIC ABS, DBLE, DIMAG
3504 ADDBND = TWO * TWO * TWO * PREC
3505 FACT = ONE + TWO * ( ( ONE + PREC )**3 - ONE )
3509 DO 10 IX = 1, 1 + ( N - 1 )*INCX, INCX
3510.NE.
IF( DBLE( X( IX ) )ZERO ) THEN
3511 ABSXI = ABS( DBLE( X( IX ) ) )
3512.LT.
IF( SCALEABSXI )THEN
3513 SUMSSQ = ONE + ( SSQ*( SCALE/ABSXI )**2 ) * FACT
3514 ERRBND = ADDBND * SUMSSQ
3515 SUMSSQ = SUMSSQ + ERRBND
3516 SSQ = ONE + SSQ*( SCALE/ABSXI )**2
3520 SUMSSQ = SSQ + ( ( ABSXI/SCALE )**2 ) * FACT
3521 ERRBND = ADDBND * SUMSSQ
3522 SUMSSQ = SUMSSQ + ERRBND
3523 SSQ = SSQ + ( ABSXI/SCALE )**2
3526.NE.
IF( DIMAG( X( IX ) )ZERO ) THEN
3527 ABSXI = ABS( DIMAG( X( IX ) ) )
3528.LT.
IF( SCALEABSXI )THEN
3529 SUMSSQ = ONE + ( SSQ*( SCALE/ABSXI )**2 ) * FACT
3530 ERRBND = ADDBND * SUMSSQ
3531 SUMSSQ = SUMSSQ + ERRBND
3532 SSQ = ONE + SSQ*( SCALE/ABSXI )**2
3536 SUMSSQ = SSQ + ( ( ABSXI/SCALE )**2 ) * FACT
3537 ERRBND = ADDBND * SUMSSQ
3538 SUMSSQ = SUMSSQ + ERRBND
3539 SSQ = SSQ + ( ABSXI/SCALE )**2
3544 USCLR = SCALE * SQRT( SSQ )
3548 ERRBND = SQRT( SUMSSQ ) * ( ONE + TWO * ( 1.00001D+0 * PREC ) )
3550 ERRBND = ( SUMSCA * ERRBND ) - USCLR
3557 SUBROUTINE PZERRASUM( ERRBND, N, USCLR, X, INCX, PREC )
3566 DOUBLE PRECISION ERRBND, PREC, USCLR
3612 DOUBLE PRECISION TWO, ZERO
3613 PARAMETER ( TWO = 2.0D+0, ZERO = 0.0D+0 )
3617 DOUBLE PRECISION ADDBND
3620 INTRINSIC ABS, DBLE, DIMAG
3626 ADDBND = TWO * TWO * TWO * PREC
3628 DO 10 IX = 1, 1 + ( N - 1 )*INCX, INCX
3629 USCLR = USCLR + ABS( DBLE( X( IX ) ) ) +
3630 $ ABS( DIMAG( X( IX ) ) )
3633 ERRBND = ADDBND * USCLR
3640 SUBROUTINE PZERRSCAL( ERRBND, PSCLR, X, PREC )
3648 DOUBLE PRECISION ERRBND, PREC
3691 DOUBLE PRECISION TWO
3692 PARAMETER ( TWO = 2.0D+0 )
3701 ERRBND = ( TWO * PREC ) * ABS( X )
3708 SUBROUTINE PZDERRSCAL( ERRBND, PUSCLR, X, PREC )
3716 DOUBLE PRECISION ERRBND, PREC, PUSCLR
3759 DOUBLE PRECISION TWO
3760 PARAMETER ( TWO = 2.0D+0 )
3763 INTRINSIC ABS, DBLE, DCMPLX, DIMAG
3767 X = DCMPLX( PUSCLR * DBLE( X ), PUSCLR * DIMAG( X ) )
3769 ERRBND = ( TWO * PREC ) * ABS( X )
3776 SUBROUTINE PZERRAXPY( ERRBND, PSCLR, X, Y, PREC )
3784 DOUBLE PRECISION ERRBND, PREC
3785 COMPLEX*16 PSCLR, X, Y
3820 DOUBLE PRECISION ONE, TWO, ZERO
3821 PARAMETER ( ONE = 1.0D+0, TWO = 2.0D+0,
3825 DOUBLE PRECISION ADDBND, FACT, SUMINEG, SUMIPOS, SUMRNEG,
3830 INTRINSIC DBLE, DIMAG, MAX
3838 FACT = ONE + TWO * PREC
3839 ADDBND = TWO * TWO * TWO * PREC
3842.GE.
IF( DBLE( TMP )ZERO ) THEN
3843 SUMRPOS = SUMRPOS + DBLE( TMP ) * FACT
3845 SUMRNEG = SUMRNEG - DBLE( TMP ) * FACT
3847.GE.
IF( DIMAG( TMP )ZERO ) THEN
3848 SUMIPOS = SUMIPOS + DIMAG( TMP ) * FACT
3850 SUMINEG = SUMINEG - DIMAG( TMP ) * FACT
3854.GE.
IF( DBLE( TMP )ZERO ) THEN
3855 SUMRPOS = SUMRPOS + DBLE( TMP )
3857 SUMRNEG = SUMRNEG - DBLE( TMP )
3859.GE.
IF( DIMAG( TMP )ZERO ) THEN
3860 SUMIPOS = SUMIPOS + DIMAG( TMP )
3862 SUMINEG = SUMINEG - DIMAG( TMP )
3865 Y = Y + ( PSCLR * X )
3867 ERRBND = ADDBND * MAX( MAX( SUMRPOS, SUMRNEG ),
3868 $ MAX( SUMIPOS, SUMINEG ) )
end diagonal values have been computed in the(sparse) matrix id.SOL
for(i8=*sizetab-1;i8 >=0;i8--)