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

◆ iprinterrs()

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

Definition at line 7146 of file blacstest.f.

7148*
7149* -- BLACS tester (version 1.0) --
7150* University of Tennessee
7151* December 15, 1994
7152*
7153*
7154* .. Scalar Arguments ..
7155 LOGICAL COUNTING
7156 INTEGER OUTNUM, MAXERR, NERR
7157* ..
7158* .. Array Arguments ..
7159 INTEGER ERRIBUF(6, MAXERR), TFAILED(*)
7160 INTEGER ERRDBUF(2, MAXERR)
7161* ..
7162*
7163* Purpose
7164* =======
7165* IPRINTERRS: Print errors that have been recorded
7166*
7167* Arguments
7168* =========
7169* OUTNUM (input) INTEGER
7170* Device number for output.
7171*
7172* MAXERR (input) INTEGER
7173* Max number of errors that can be stored in ERRIBUFF or
7174* ERRIBUFF
7175*
7176* NERR (output) INTEGER
7177* The number of errors that have been found.
7178*
7179* ERRIBUF (output) INTEGER array, dimension (6,MAXERRS)
7180* Buffer in which to store integer error information. It will
7181* be built up in the following format for the call to TSEND.
7182* All integer information is recorded in the following 6-tuple
7183* {TESTNUM, SRC, DEST, I, J, WHAT}. These values are figured:
7184* SRC = RSRC * NPROCS + CSRC
7185* DEST = RDEST * NPROCS + CDEST
7186* WHAT
7187* = 1 : Error in pre-padding
7188* = 2 : Error in post-padding
7189* = 3 : Error in LDA-M gap
7190* = 4 : Error in complementory triangle
7191* ELSE: Error in matrix
7192* If there are more errors than can fit in the error buffer,
7193* the error number will indicate the actual number of errors
7194* found, but the buffer will be truncated to the maximum
7195* number of errors which can fit.
7196*
7197* ERRDBUF (output) @(doctype) array, dimension (2, MAXERRS)
7198* Buffer in which to store error data information.
7199* {Incorrect, Predicted}
7200*
7201* TFAILED (input/ourput) INTEGER array, dimension NTESTS
7202* Workspace used to keep track of which tests failed.
7203* This array not accessed unless COUNTING is true.
7204*
7205* ===================================================================
7206*
7207* .. Parameters ..
7208 INTEGER ERR_PRE, ERR_POST, ERR_GAP, ERR_TRI, ERR_MAT
7209 parameter( err_pre = 1, err_post = 2, err_gap = 3, err_tri = 4 )
7210 parameter( err_mat = 5 )
7211* ..
7212* .. External Functions ..
7213 INTEGER IBTMYPROC, IBTNPROCS
7214 EXTERNAL ibtmyproc, ibtnprocs
7215* ..
7216* .. Local Scalars ..
7217 CHARACTER*1 MAT
7218 LOGICAL MATISINT
7219 INTEGER OLDTEST, NPROCS, PROW, PCOL, I, ERRTYPE
7220* ..
7221* .. Executable Statements ..
7222*
7223 IF( (ibtmyproc().NE.0) .OR. (nerr.LE.0) ) RETURN
7224 oldtest = -1
7225 nprocs = ibtnprocs()
7226 prow = erribuf(3,1) / nprocs
7227 pcol = mod( erribuf(3,1), nprocs )
7228 IF( nerr .GT. maxerr ) WRITE(outnum,13000)
7229*
7230 DO 20 i = 1, min( nerr, maxerr )
7231 IF( erribuf(1,i) .NE. oldtest ) THEN
7232 IF( oldtest .NE. -1 )
7233 $ WRITE(outnum,12000) prow, pcol, oldtest
7234 WRITE(outnum,*) ' '
7235 WRITE(outnum,1000) prow, pcol, erribuf(1,i)
7236 IF( counting ) tfailed( erribuf(1,i) ) = 1
7237 oldtest = erribuf(1, i)
7238 END IF
7239*
7240* Print out error message depending on type of error
7241*
7242 errtype = erribuf(6, i)
7243 IF( errtype .LT. -10 ) THEN
7244 errtype = -errtype - 10
7245 mat = 'C'
7246 matisint = .true.
7247 ELSE IF( errtype .LT. 0 ) THEN
7248 errtype = -errtype
7249 mat = 'R'
7250 matisint = .true.
7251 ELSE
7252 matisint = .false.
7253 END IF
7254*
7255* RA/CA arrays from MAX/MIN have different printing protocol
7256*
7257 IF( matisint ) THEN
7258 IF( erribuf(2, i) .EQ. -1 ) THEN
7259 WRITE(outnum,11000) erribuf(4,i), erribuf(5,i), mat,
7260 $ int( errdbuf(2,i) ), int( errdbuf(1,i) )
7261 ELSE IF( errtype .EQ. err_pre ) THEN
7262 WRITE(outnum,7000) erribuf(5,i), mat,
7263 $ int( errdbuf(2,i) ), int( errdbuf(1,i) )
7264 ELSE IF( errtype .EQ. err_post ) THEN
7265 WRITE(outnum,8000) erribuf(4,i), mat,
7266 $ int( errdbuf(2,i) ), int( errdbuf(1,i) )
7267 ELSE IF( errtype .EQ. err_gap ) THEN
7268 WRITE(outnum,9000) mat, erribuf(4,i), erribuf(5,i),
7269 $ int( errdbuf(2,i) ), int( errdbuf(1,i) )
7270 ELSE
7271 WRITE(outnum,10000) mat, erribuf(4,i), erribuf(5,i),
7272 $ int( errdbuf(2,i) ),
7273 $ int( errdbuf(1,i) )
7274 END IF
7275*
7276* Have memory overwrites in matrix A
7277*
7278 ELSE
7279 IF( errtype .EQ. err_pre ) THEN
7280 WRITE(outnum,2000) erribuf(5,i), errdbuf(2,i),
7281 $ errdbuf(1,i)
7282 ELSE IF( errtype .EQ. err_post ) THEN
7283 WRITE(outnum,3000) erribuf(4,i), errdbuf(2,i),
7284 $ errdbuf(1,i)
7285 ELSE IF( errtype .EQ. err_gap ) THEN
7286 WRITE(outnum,4000) erribuf(4,i), erribuf(5,i),
7287 $ errdbuf(2,i), errdbuf(1,i)
7288 ELSE IF( errtype .EQ. err_tri ) THEN
7289 WRITE(outnum,5000) erribuf(4,i), erribuf(5,i),
7290 $ errdbuf(2,i), errdbuf(1,i)
7291 ELSE
7292 WRITE(outnum,6000) erribuf(4,i), erribuf(5,i),
7293 $ errdbuf(2,i), errdbuf(1,i)
7294 END IF
7295 END IF
7296 20 CONTINUE
7297 WRITE(outnum,12000) prow, pcol, oldtest
7298*
7299 1000 FORMAT('PROCESS {',i4,',',i4,'} REPORTS ERRORS IN TEST#',i6,':')
7300 2000 FORMAT(' Buffer overwrite ',i4,
7301 $ ' elements before the start of A:',/,
7302 $ ' Expected=',i12,
7303 $ '; Received=',i12)
7304 3000 FORMAT(' Buffer overwrite ',i4,' elements after the end of A:',
7305 $ /,' Expected=',i12,
7306 $ '; Received=',i12)
7307 4000 FORMAT(' LDA-M gap overwrite at postion (',i4,',',i4,'):',/,
7308 $ ' Expected=',i12,
7309 $ '; Received=',i12)
7310 5000 FORMAT(' Complementory triangle overwrite at A(',i4,',',i4,
7311 $ '):',/,' Expected=',i12,
7312 $ '; Received=',i12)
7313 6000 FORMAT(' Invalid element at A(',i4,',',i4,'):',/,
7314 $ ' Expected=',i12,
7315 $ '; Received=',i12)
7316 7000 FORMAT(' Buffer overwrite ',i4,' elements before the start of ',
7317 $ a1,'A:',/,' Expected=',i12,'; Received=',i12)
7318 8000 FORMAT(' Buffer overwrite ',i4,' elements after the end of ',
7319 $ a1,'A:',/,' Expected=',i12,'; Received=',i12)
7320*
7321 9000 FORMAT(' LD',a1,'A-M gap overwrite at postion (',i4,',',i4,'):'
7322 $ ,/,' Expected=',i12,'; Received=',i12)
7323*
732410000 FORMAT(' Invalid element at ',a1,'A(',i4,',',i4,'):',/,
7325 $ ' Expected=',i12,'; Received=',i12)
732611000 FORMAT(' Overwrite at position (',i4,',',i4,') of non-existent '
7327 $ ,a1,'A array.',/,' Expected=',i12,'; Received=',i12)
732812000 FORMAT('PROCESS {',i4,',',i4,'} DONE ERROR REPORT FOR TEST#',
7329 $ i6,'.')
733013000 FORMAT('WARNING: There were more errors than could be recorded.',
7331 $ /,'Increase MEMELTS to get complete listing.')
7332 RETURN
7333*
7334* End IPRINTERRS
7335*
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: