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

◆ sprinterrs()

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

Definition at line 8210 of file blacstest.f.

8212*
8213* -- BLACS tester (version 1.0) --
8214* University of Tennessee
8215* December 15, 1994
8216*
8217*
8218* .. Scalar Arguments ..
8219 LOGICAL COUNTING
8220 INTEGER OUTNUM, MAXERR, NERR
8221* ..
8222* .. Array Arguments ..
8223 INTEGER ERRIBUF(6, MAXERR), TFAILED(*)
8224 REAL ERRDBUF(2, MAXERR)
8225* ..
8226*
8227* Purpose
8228* =======
8229* SPRINTERRS: Print errors that have been recorded
8230*
8231* Arguments
8232* =========
8233* OUTNUM (input) INTEGER
8234* Device number for output.
8235*
8236* MAXERR (input) INTEGER
8237* Max number of errors that can be stored in ERRIBUFF or
8238* ERRSBUFF
8239*
8240* NERR (output) INTEGER
8241* The number of errors that have been found.
8242*
8243* ERRIBUF (output) INTEGER array, dimension (6,MAXERRS)
8244* Buffer in which to store integer error information. It will
8245* be built up in the following format for the call to TSEND.
8246* All integer information is recorded in the following 6-tuple
8247* {TESTNUM, SRC, DEST, I, J, WHAT}. These values are figured:
8248* SRC = RSRC * NPROCS + CSRC
8249* DEST = RDEST * NPROCS + CDEST
8250* WHAT
8251* = 1 : Error in pre-padding
8252* = 2 : Error in post-padding
8253* = 3 : Error in LDA-M gap
8254* = 4 : Error in complementory triangle
8255* ELSE: Error in matrix
8256* If there are more errors than can fit in the error buffer,
8257* the error number will indicate the actual number of errors
8258* found, but the buffer will be truncated to the maximum
8259* number of errors which can fit.
8260*
8261* ERRDBUF (output) @(doctype) array, dimension (2, MAXERRS)
8262* Buffer in which to store error data information.
8263* {Incorrect, Predicted}
8264*
8265* TFAILED (input/ourput) INTEGER array, dimension NTESTS
8266* Workspace used to keep track of which tests failed.
8267* This array not accessed unless COUNTING is true.
8268*
8269* ===================================================================
8270*
8271* .. Parameters ..
8272 INTEGER ERR_PRE, ERR_POST, ERR_GAP, ERR_TRI, ERR_MAT
8273 parameter( err_pre = 1, err_post = 2, err_gap = 3, err_tri = 4 )
8274 parameter( err_mat = 5 )
8275* ..
8276* .. External Functions ..
8277 INTEGER IBTMYPROC, IBTNPROCS
8278 EXTERNAL ibtmyproc, ibtnprocs
8279* ..
8280* .. Local Scalars ..
8281 CHARACTER*1 MAT
8282 LOGICAL MATISINT
8283 INTEGER OLDTEST, NPROCS, PROW, PCOL, I, ERRTYPE
8284* ..
8285* .. Executable Statements ..
8286*
8287 IF( (ibtmyproc().NE.0) .OR. (nerr.LE.0) ) RETURN
8288 oldtest = -1
8289 nprocs = ibtnprocs()
8290 prow = erribuf(3,1) / nprocs
8291 pcol = mod( erribuf(3,1), nprocs )
8292 IF( nerr .GT. maxerr ) WRITE(outnum,13000)
8293*
8294 DO 20 i = 1, min( nerr, maxerr )
8295 IF( erribuf(1,i) .NE. oldtest ) THEN
8296 IF( oldtest .NE. -1 )
8297 $ WRITE(outnum,12000) prow, pcol, oldtest
8298 WRITE(outnum,*) ' '
8299 WRITE(outnum,1000) prow, pcol, erribuf(1,i)
8300 IF( counting ) tfailed( erribuf(1,i) ) = 1
8301 oldtest = erribuf(1, i)
8302 END IF
8303*
8304* Print out error message depending on type of error
8305*
8306 errtype = erribuf(6, i)
8307 IF( errtype .LT. -10 ) THEN
8308 errtype = -errtype - 10
8309 mat = 'C'
8310 matisint = .true.
8311 ELSE IF( errtype .LT. 0 ) THEN
8312 errtype = -errtype
8313 mat = 'R'
8314 matisint = .true.
8315 ELSE
8316 matisint = .false.
8317 END IF
8318*
8319* RA/CA arrays from MAX/MIN have different printing protocol
8320*
8321 IF( matisint ) THEN
8322 IF( erribuf(2, i) .EQ. -1 ) THEN
8323 WRITE(outnum,11000) erribuf(4,i), erribuf(5,i), mat,
8324 $ int( errdbuf(2,i) ), int( errdbuf(1,i) )
8325 ELSE IF( errtype .EQ. err_pre ) THEN
8326 WRITE(outnum,7000) erribuf(5,i), mat,
8327 $ int( errdbuf(2,i) ), int( errdbuf(1,i) )
8328 ELSE IF( errtype .EQ. err_post ) THEN
8329 WRITE(outnum,8000) erribuf(4,i), mat,
8330 $ int( errdbuf(2,i) ), int( errdbuf(1,i) )
8331 ELSE IF( errtype .EQ. err_gap ) THEN
8332 WRITE(outnum,9000) mat, erribuf(4,i), erribuf(5,i),
8333 $ int( errdbuf(2,i) ), int( errdbuf(1,i) )
8334 ELSE
8335 WRITE(outnum,10000) mat, erribuf(4,i), erribuf(5,i),
8336 $ int( errdbuf(2,i) ),
8337 $ int( errdbuf(1,i) )
8338 END IF
8339*
8340* Have memory overwrites in matrix A
8341*
8342 ELSE
8343 IF( errtype .EQ. err_pre ) THEN
8344 WRITE(outnum,2000) erribuf(5,i), errdbuf(2,i),
8345 $ errdbuf(1,i)
8346 ELSE IF( errtype .EQ. err_post ) THEN
8347 WRITE(outnum,3000) erribuf(4,i), errdbuf(2,i),
8348 $ errdbuf(1,i)
8349 ELSE IF( errtype .EQ. err_gap ) THEN
8350 WRITE(outnum,4000) erribuf(4,i), erribuf(5,i),
8351 $ errdbuf(2,i), errdbuf(1,i)
8352 ELSE IF( errtype .EQ. err_tri ) THEN
8353 WRITE(outnum,5000) erribuf(4,i), erribuf(5,i),
8354 $ errdbuf(2,i), errdbuf(1,i)
8355 ELSE
8356 WRITE(outnum,6000) erribuf(4,i), erribuf(5,i),
8357 $ errdbuf(2,i), errdbuf(1,i)
8358 END IF
8359 END IF
8360 20 CONTINUE
8361 WRITE(outnum,12000) prow, pcol, oldtest
8362*
8363 1000 FORMAT('PROCESS {',i4,',',i4,'} REPORTS ERRORS IN TEST#',i6,':')
8364 2000 FORMAT(' Buffer overwrite ',i4,
8365 $ ' elements before the start of A:',/,
8366 $ ' Expected=',g15.8,
8367 $ '; Received=',g15.8)
8368 3000 FORMAT(' Buffer overwrite ',i4,' elements after the end of A:',
8369 $ /,' Expected=',g15.8,
8370 $ '; Received=',g15.8)
8371 4000 FORMAT(' LDA-M gap overwrite at postion (',i4,',',i4,'):',/,
8372 $ ' Expected=',g15.8,
8373 $ '; Received=',g15.8)
8374 5000 FORMAT(' Complementory triangle overwrite at A(',i4,',',i4,
8375 $ '):',/,' Expected=',g15.8,
8376 $ '; Received=',g15.8)
8377 6000 FORMAT(' Invalid element at A(',i4,',',i4,'):',/,
8378 $ ' Expected=',g15.8,
8379 $ '; Received=',g15.8)
8380 7000 FORMAT(' Buffer overwrite ',i4,' elements before the start of ',
8381 $ a1,'A:',/,' Expected=',i12,'; Received=',i12)
8382 8000 FORMAT(' Buffer overwrite ',i4,' elements after the end of ',
8383 $ a1,'A:',/,' Expected=',i12,'; Received=',i12)
8384*
8385 9000 FORMAT(' LD',a1,'A-M gap overwrite at postion (',i4,',',i4,'):'
8386 $ ,/,' Expected=',i12,'; Received=',i12)
8387*
838810000 FORMAT(' Invalid element at ',a1,'A(',i4,',',i4,'):',/,
8389 $ ' Expected=',i12,'; Received=',i12)
839011000 FORMAT(' Overwrite at position (',i4,',',i4,') of non-existent '
8391 $ ,a1,'A array.',/,' Expected=',i12,'; Received=',i12)
839212000 FORMAT('PROCESS {',i4,',',i4,'} DONE ERROR REPORT FOR TEST#',
8393 $ i6,'.')
839413000 FORMAT('WARNING: There were more errors than could be recorded.',
8395 $ /,'Increase MEMELTS to get complete listing.')
8396 RETURN
8397*
8398* End SPRINTERRS
8399*
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: