Cloned library LAPACK-3.11.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

187 lines
5.7 KiB

2 years ago
*> \brief \b SLAFTS
*
* =========== DOCUMENTATION ===========
*
* Online html documentation available at
* http://www.netlib.org/lapack/explore-html/
*
* Definition:
* ===========
*
* SUBROUTINE SLAFTS( TYPE, M, N, IMAT, NTESTS, RESULT, ISEED,
* THRESH, IOUNIT, IE )
*
* .. Scalar Arguments ..
* CHARACTER*3 TYPE
* INTEGER IE, IMAT, IOUNIT, M, N, NTESTS
* REAL THRESH
* ..
* .. Array Arguments ..
* INTEGER ISEED( 4 )
* REAL RESULT( * )
* ..
*
*
*> \par Purpose:
* =============
*>
*> \verbatim
*>
*> SLAFTS tests the result vector against the threshold value to
*> see which tests for this matrix type failed to pass the threshold.
*> Output is to the file given by unit IOUNIT.
*> \endverbatim
*
* Arguments:
* ==========
*
*> \verbatim
*> TYPE - CHARACTER*3
*> On entry, TYPE specifies the matrix type to be used in the
*> printed messages.
*> Not modified.
*>
*> N - INTEGER
*> On entry, N specifies the order of the test matrix.
*> Not modified.
*>
*> IMAT - INTEGER
*> On entry, IMAT specifies the type of the test matrix.
*> A listing of the different types is printed by SLAHD2
*> to the output file if a test fails to pass the threshold.
*> Not modified.
*>
*> NTESTS - INTEGER
*> On entry, NTESTS is the number of tests performed on the
*> subroutines in the path given by TYPE.
*> Not modified.
*>
*> RESULT - REAL array of dimension( NTESTS )
*> On entry, RESULT contains the test ratios from the tests
*> performed in the calling program.
*> Not modified.
*>
*> ISEED - INTEGER array of dimension( 4 )
*> Contains the random seed that generated the matrix used
*> for the tests whose ratios are in RESULT.
*> Not modified.
*>
*> THRESH - REAL
*> On entry, THRESH specifies the acceptable threshold of the
*> test ratios. If RESULT( K ) > THRESH, then the K-th test
*> did not pass the threshold and a message will be printed.
*> Not modified.
*>
*> IOUNIT - INTEGER
*> On entry, IOUNIT specifies the unit number of the file
*> to which the messages are printed.
*> Not modified.
*>
*> IE - INTEGER
*> On entry, IE contains the number of tests which have
*> failed to pass the threshold so far.
*> Updated on exit if any of the ratios in RESULT also fail.
*> \endverbatim
*
* Authors:
* ========
*
*> \author Univ. of Tennessee
*> \author Univ. of California Berkeley
*> \author Univ. of Colorado Denver
*> \author NAG Ltd.
*
*> \ingroup single_eig
*
* =====================================================================
SUBROUTINE SLAFTS( TYPE, M, N, IMAT, NTESTS, RESULT, ISEED,
$ THRESH, IOUNIT, IE )
*
* -- LAPACK test routine --
* -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
*
* .. Scalar Arguments ..
CHARACTER*3 TYPE
INTEGER IE, IMAT, IOUNIT, M, N, NTESTS
REAL THRESH
* ..
* .. Array Arguments ..
INTEGER ISEED( 4 )
REAL RESULT( * )
* ..
*
* =====================================================================
*
* .. Local Scalars ..
INTEGER K
* ..
* .. External Subroutines ..
EXTERNAL SLAHD2
* ..
* .. Executable Statements ..
*
IF( M.EQ.N ) THEN
*
* Output for square matrices:
*
DO 10 K = 1, NTESTS
IF( RESULT( K ).GE.THRESH ) THEN
*
* If this is the first test to fail, call SLAHD2
* to print a header to the data file.
*
IF( IE.EQ.0 )
$ CALL SLAHD2( IOUNIT, TYPE )
IE = IE + 1
IF( RESULT( K ).LT.10000.0 ) THEN
WRITE( IOUNIT, FMT = 9999 )N, IMAT, ISEED, K,
$ RESULT( K )
9999 FORMAT( ' Matrix order=', I5, ', type=', I2,
$ ', seed=', 4( I4, ',' ), ' result ', I3, ' is',
$ 0P, F8.2 )
ELSE
WRITE( IOUNIT, FMT = 9998 )N, IMAT, ISEED, K,
$ RESULT( K )
9998 FORMAT( ' Matrix order=', I5, ', type=', I2,
$ ', seed=', 4( I4, ',' ), ' result ', I3, ' is',
$ 1P, E10.3 )
END IF
END IF
10 CONTINUE
ELSE
*
* Output for rectangular matrices
*
DO 20 K = 1, NTESTS
IF( RESULT( K ).GE.THRESH ) THEN
*
* If this is the first test to fail, call SLAHD2
* to print a header to the data file.
*
IF( IE.EQ.0 )
$ CALL SLAHD2( IOUNIT, TYPE )
IE = IE + 1
IF( RESULT( K ).LT.10000.0 ) THEN
WRITE( IOUNIT, FMT = 9997 )M, N, IMAT, ISEED, K,
$ RESULT( K )
9997 FORMAT( 1X, I5, ' x', I5, ' matrix, type=', I2, ', s',
$ 'eed=', 3( I4, ',' ), I4, ': result ', I3,
$ ' is', 0P, F8.2 )
ELSE
WRITE( IOUNIT, FMT = 9996 )M, N, IMAT, ISEED, K,
$ RESULT( K )
9996 FORMAT( 1X, I5, ' x', I5, ' matrix, type=', I2, ', s',
$ 'eed=', 3( I4, ',' ), I4, ': result ', I3,
$ ' is', 1P, E10.3 )
END IF
END IF
20 CONTINUE
*
END IF
RETURN
*
* End of SLAFTS
*
END