SCALAPACK 2.2.2
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches

◆ zprinterrs()

subroutine zprinterrs ( integer  outnum,
integer  maxerr,
integer  nerr,
integer, dimension(6, maxerr)  erribuf,
double complex, dimension(2, maxerr)  errdbuf,
logical  counting,
integer, dimension(*)  tfailed 
)

Definition at line 11404 of file blacstest.f.

11406*
11407* -- BLACS tester (version 1.0) --
11408* University of Tennessee
11409* December 15, 1994
11410*
11411*
11412* .. Scalar Arguments ..
11413 LOGICAL COUNTING
11414 INTEGER OUTNUM, MAXERR, NERR
11415* ..
11416* .. Array Arguments ..
11417 INTEGER ERRIBUF(6, MAXERR), TFAILED(*)
11418 DOUBLE COMPLEX ERRDBUF(2, MAXERR)
11419* ..
11420*
11421* Purpose
11422* =======
11423* ZPRINTERRS: Print errors that have been recorded
11424*
11425* Arguments
11426* =========
11427* OUTNUM (input) INTEGER
11428* Device number for output.
11429*
11430* MAXERR (input) INTEGER
11431* Max number of errors that can be stored in ERRIBUFF or
11432* ERRZBUFF
11433*
11434* NERR (output) INTEGER
11435* The number of errors that have been found.
11436*
11437* ERRIBUF (output) INTEGER array, dimension (6,MAXERRS)
11438* Buffer in which to store integer error information. It will
11439* be built up in the following format for the call to TSEND.
11440* All integer information is recorded in the following 6-tuple
11441* {TESTNUM, SRC, DEST, I, J, WHAT}. These values are figured:
11442* SRC = RSRC * NPROCS + CSRC
11443* DEST = RDEST * NPROCS + CDEST
11444* WHAT
11445* = 1 : Error in pre-padding
11446* = 2 : Error in post-padding
11447* = 3 : Error in LDA-M gap
11448* = 4 : Error in complementory triangle
11449* ELSE: Error in matrix
11450* If there are more errors than can fit in the error buffer,
11451* the error number will indicate the actual number of errors
11452* found, but the buffer will be truncated to the maximum
11453* number of errors which can fit.
11454*
11455* ERRDBUF (output) @(doctype) array, dimension (2, MAXERRS)
11456* Buffer in which to store error data information.
11457* {Incorrect, Predicted}
11458*
11459* TFAILED (input/ourput) INTEGER array, dimension NTESTS
11460* Workspace used to keep track of which tests failed.
11461* This array not accessed unless COUNTING is true.
11462*
11463* ===================================================================
11464*
11465* .. Parameters ..
11466 INTEGER ERR_PRE, ERR_POST, ERR_GAP, ERR_TRI, ERR_MAT
11467 parameter( err_pre = 1, err_post = 2, err_gap = 3, err_tri = 4 )
11468 parameter( err_mat = 5 )
11469* ..
11470* .. External Functions ..
11471 INTEGER IBTMYPROC, IBTNPROCS
11472 EXTERNAL ibtmyproc, ibtnprocs
11473* ..
11474* .. Local Scalars ..
11475 CHARACTER*1 MAT
11476 LOGICAL MATISINT
11477 INTEGER OLDTEST, NPROCS, PROW, PCOL, I, ERRTYPE
11478* ..
11479* .. Executable Statements ..
11480*
11481 IF( (ibtmyproc().NE.0) .OR. (nerr.LE.0) ) RETURN
11482 oldtest = -1
11483 nprocs = ibtnprocs()
11484 prow = erribuf(3,1) / nprocs
11485 pcol = mod( erribuf(3,1), nprocs )
11486 IF( nerr .GT. maxerr ) WRITE(outnum,13000)
11487*
11488 DO 20 i = 1, min( nerr, maxerr )
11489 IF( erribuf(1,i) .NE. oldtest ) THEN
11490 IF( oldtest .NE. -1 )
11491 $ WRITE(outnum,12000) prow, pcol, oldtest
11492 WRITE(outnum,*) ' '
11493 WRITE(outnum,1000) prow, pcol, erribuf(1,i)
11494 IF( counting ) tfailed( erribuf(1,i) ) = 1
11495 oldtest = erribuf(1, i)
11496 END IF
11497*
11498* Print out error message depending on type of error
11499*
11500 errtype = erribuf(6, i)
11501 IF( errtype .LT. -10 ) THEN
11502 errtype = -errtype - 10
11503 mat = 'C'
11504 matisint = .true.
11505 ELSE IF( errtype .LT. 0 ) THEN
11506 errtype = -errtype
11507 mat = 'R'
11508 matisint = .true.
11509 ELSE
11510 matisint = .false.
11511 END IF
11512*
11513* RA/CA arrays from MAX/MIN have different printing protocol
11514*
11515 IF( matisint ) THEN
11516 IF( erribuf(2, i) .EQ. -1 ) THEN
11517 WRITE(outnum,11000) erribuf(4,i), erribuf(5,i), mat,
11518 $ int( errdbuf(2,i) ), int( errdbuf(1,i) )
11519 ELSE IF( errtype .EQ. err_pre ) THEN
11520 WRITE(outnum,7000) erribuf(5,i), mat,
11521 $ int( errdbuf(2,i) ), int( errdbuf(1,i) )
11522 ELSE IF( errtype .EQ. err_post ) THEN
11523 WRITE(outnum,8000) erribuf(4,i), mat,
11524 $ int( errdbuf(2,i) ), int( errdbuf(1,i) )
11525 ELSE IF( errtype .EQ. err_gap ) THEN
11526 WRITE(outnum,9000) mat, erribuf(4,i), erribuf(5,i),
11527 $ int( errdbuf(2,i) ), int( errdbuf(1,i) )
11528 ELSE
11529 WRITE(outnum,10000) mat, erribuf(4,i), erribuf(5,i),
11530 $ int( errdbuf(2,i) ),
11531 $ int( errdbuf(1,i) )
11532 END IF
11533*
11534* Have memory overwrites in matrix A
11535*
11536 ELSE
11537 IF( errtype .EQ. err_pre ) THEN
11538 WRITE(outnum,2000) erribuf(5,i),
11539 $ real( errdbuf(2,i) ), dimag( errdbuf(2,i) ),
11540 $ real( errdbuf(1,i) ), dimag( errdbuf(1,i) )
11541 ELSE IF( errtype .EQ. err_post ) THEN
11542 WRITE(outnum,3000) erribuf(4,i),
11543 $ real( errdbuf(2,i) ), dimag( errdbuf(2,i) ),
11544 $ real( errdbuf(1,i) ), dimag( errdbuf(1,i) )
11545 ELSE IF( errtype .EQ. err_gap ) THEN
11546 WRITE(outnum,4000)
11547 $ erribuf(4,i), erribuf(5,i),
11548 $ real( errdbuf(2,i) ), dimag( errdbuf(2,i) ),
11549 $ real( errdbuf(1,i) ), dimag( errdbuf(1,i) )
11550 ELSE IF( errtype .EQ. err_tri ) THEN
11551 WRITE(outnum,5000) erribuf(4,i), erribuf(5,i),
11552 $ real( errdbuf(2,i) ), dimag( errdbuf(2,i) ),
11553 $ real( errdbuf(1,i) ), dimag( errdbuf(1,i) )
11554 ELSE
11555 WRITE(outnum,6000) erribuf(4,i), erribuf(5,i),
11556 $ real( errdbuf(2,i) ), dimag( errdbuf(2,i) ),
11557 $ real( errdbuf(1,i) ), dimag( errdbuf(1,i) )
11558 END IF
11559 END IF
11560 20 CONTINUE
11561 WRITE(outnum,12000) prow, pcol, oldtest
11562*
11563 1000 FORMAT('PROCESS {',i4,',',i4,'} REPORTS ERRORS IN TEST#',i6,':')
11564 2000 FORMAT(' Buffer overwrite ',i4,
11565 $ ' elements before the start of A:',/,
11566 $ ' Expected=','[',g22.15,',',g22.15,']',
11567 $ '; Received=','[',g22.15,',',g22.15,']')
11568 3000 FORMAT(' Buffer overwrite ',i4,' elements after the end of A:',
11569 $ /,' Expected=','[',g22.15,',',g22.15,']',
11570 $ '; Received=','[',g22.15,',',g22.15,']')
11571 4000 FORMAT(' LDA-M gap overwrite at postion (',i4,',',i4,'):',/,
11572 $ ' Expected=','[',g22.15,',',g22.15,']',
11573 $ '; Received=','[',g22.15,',',g22.15,']')
11574 5000 FORMAT(' Complementory triangle overwrite at A(',i4,',',i4,
11575 $ '):',/,' Expected=','[',g22.15,',',g22.15,']',
11576 $ '; Received=','[',g22.15,',',g22.15,']')
11577 6000 FORMAT(' Invalid element at A(',i4,',',i4,'):',/,
11578 $ ' Expected=','[',g22.15,',',g22.15,']',
11579 $ '; Received=','[',g22.15,',',g22.15,']')
11580 7000 FORMAT(' Buffer overwrite ',i4,' elements before the start of ',
11581 $ a1,'A:',/,' Expected=',i12,'; Received=',i12)
11582 8000 FORMAT(' Buffer overwrite ',i4,' elements after the end of ',
11583 $ a1,'A:',/,' Expected=',i12,'; Received=',i12)
11584*
11585 9000 FORMAT(' LD',a1,'A-M gap overwrite at postion (',i4,',',i4,'):'
11586 $ ,/,' Expected=',i12,'; Received=',i12)
11587*
1158810000 FORMAT(' Invalid element at ',a1,'A(',i4,',',i4,'):',/,
11589 $ ' Expected=',i12,'; Received=',i12)
1159011000 FORMAT(' Overwrite at position (',i4,',',i4,') of non-existent '
11591 $ ,a1,'A array.',/,' Expected=',i12,'; Received=',i12)
1159212000 FORMAT('PROCESS {',i4,',',i4,'} DONE ERROR REPORT FOR TEST#',
11593 $ i6,'.')
1159413000 FORMAT('WARNING: There were more errors than could be recorded.',
11595 $ /,'Increase MEMELTS to get complete listing.')
11596 RETURN
11597*
11598* End ZPRINTERRS
11599*
integer function ibtnprocs()
Definition btprim.f:81
integer function ibtmyproc()
Definition btprim.f:47
#define min(A, B)
Definition pcgemr.c:181
Here is the caller graph for this function: