3 * =========== DOCUMENTATION ===========
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
11 * SUBROUTINE SDRVRF1( NOUT, NN, NVAL, THRESH, A, LDA, ARF, WORK )
13 * .. Scalar Arguments ..
14 * INTEGER LDA, NN, NOUT
17 * .. Array Arguments ..
19 * REAL A( LDA, * ), ARF( * ), WORK( * )
28 *> SDRVRF1 tests the LAPACK RFP routines:
38 *> The unit number for output.
44 *> The number of values of N contained in the vector NVAL.
49 *> NVAL is INTEGER array, dimension (NN)
50 *> The values of the matrix dimension N.
56 *> The threshold value for the test ratios. A result is
57 *> included in the output file if RESULT >= THRESH. To have
58 *> every test ratio printed, use THRESH = 0.
63 *> A is REAL array, dimension (LDA,NMAX)
69 *> The leading dimension of the array A. LDA >= max(1,NMAX).
74 *> ARF is REAL array, dimension ((NMAX*(NMAX+1))/2).
79 *> WORK is REAL array, dimension ( NMAX )
85 *> \author Univ. of Tennessee
86 *> \author Univ. of California Berkeley
87 *> \author Univ. of Colorado Denver
90 *> \date November 2011
92 *> \ingroup single_lin
94 * =====================================================================
95 SUBROUTINE SDRVRF1( NOUT, NN, NVAL, THRESH, A, LDA, ARF, WORK )
97 * -- LAPACK test routine (version 3.4.0) --
98 * -- LAPACK is a software package provided by Univ. of Tennessee, --
99 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
102 * .. Scalar Arguments ..
103 INTEGER LDA, NN, NOUT
106 * .. Array Arguments ..
108 REAL A( LDA, * ), ARF( * ), WORK( * )
111 * =====================================================================
115 PARAMETER ( ONE = 1.0E+0 )
117 PARAMETER ( NTESTS = 1 )
119 * .. Local Scalars ..
120 CHARACTER UPLO, CFORM, NORM
121 INTEGER I, IFORM, IIN, IIT, INFO, INORM, IUPLO, J, N,
123 REAL EPS, LARGE, NORMA, NORMARF, SMALL
126 CHARACTER UPLOS( 2 ), FORMS( 2 ), NORMS( 4 )
127 INTEGER ISEED( 4 ), ISEEDY( 4 )
128 REAL RESULT( NTESTS )
130 * .. External Functions ..
131 REAL SLAMCH, SLANSY, SLANSF, SLARND
132 EXTERNAL SLAMCH, SLANSY, SLANSF, SLARND
134 * .. External Subroutines ..
137 * .. Scalars in Common ..
140 * .. Common blocks ..
141 COMMON / SRNAMC / SRNAMT
143 * .. Data statements ..
144 DATA ISEEDY / 1988, 1989, 1990, 1991 /
145 DATA UPLOS / 'U', 'L' /
146 DATA FORMS / 'N', 'T' /
147 DATA NORMS / 'M', '1', 'I', 'F' /
149 * .. Executable Statements ..
151 * Initialize constants and the random number seed.
158 ISEED( I ) = ISEEDY( I )
161 EPS = SLAMCH( 'Precision' )
162 SMALL = SLAMCH( 'Safe minimum' )
164 SMALL = SMALL * LDA * LDA
165 LARGE = LARGE / LDA / LDA
172 * Nothing to do for N=0
175 * Quick Return if possible
178 * IIT = 1 : random matrix
179 * IIT = 2 : random matrix scaled near underflow
180 * IIT = 3 : random matrix scaled near overflow
184 A( I, J) = SLARND( 2, ISEED )
191 A( I, J) = A( I, J ) * LARGE
199 A( I, J) = A( I, J) * SMALL
204 * Do first for UPLO = 'U', then for UPLO = 'L'
208 UPLO = UPLOS( IUPLO )
210 * Do first for CFORM = 'N', then for CFORM = 'C'
214 CFORM = FORMS( IFORM )
217 CALL STRTTF( CFORM, UPLO, N, A, LDA, ARF, INFO )
219 * Check error code from STRTTF
222 IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) THEN
224 WRITE( NOUT, FMT = 9999 )
226 WRITE( NOUT, FMT = 9998 ) SRNAMT, UPLO, CFORM, N
233 * Check all four norms: 'M', '1', 'I', 'F'
235 NORM = NORMS( INORM )
236 NORMARF = SLANSF( NORM, CFORM, UPLO, N, ARF, WORK )
237 NORMA = SLANSY( NORM, UPLO, N, A, LDA, WORK )
239 RESULT(1) = ( NORMA - NORMARF ) / NORMA / EPS
242 IF( RESULT(1).GE.THRESH ) THEN
243 IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 ) THEN
245 WRITE( NOUT, FMT = 9999 )
247 WRITE( NOUT, FMT = 9997 ) 'SLANSF',
248 + N, IIT, UPLO, CFORM, NORM, RESULT(1)
257 * Print a summary of the results.
259 IF ( NFAIL.EQ.0 ) THEN
260 WRITE( NOUT, FMT = 9996 ) 'SLANSF', NRUN
262 WRITE( NOUT, FMT = 9995 ) 'SLANSF', NFAIL, NRUN
264 IF ( NERRS.NE.0 ) THEN
265 WRITE( NOUT, FMT = 9994 ) NERRS, 'SLANSF'
268 9999 FORMAT( 1X, ' *** Error(s) or Failure(s) while testing SLANSF
270 9998 FORMAT( 1X, ' Error in ',A6,' with UPLO=''',A1,''', FORM=''',
272 9997 FORMAT( 1X, ' Failure in ',A6,' N=',I5,' TYPE=',I5,' UPLO=''',
273 + A1, ''', FORM =''',A1,''', NORM=''',A1,''', test=',G12.5)
274 9996 FORMAT( 1X, 'All tests for ',A6,' auxiliary routine passed the ',
275 + 'threshold ( ',I5,' tests run)')
276 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5,
277 + ' tests failed to pass the threshold')
278 9994 FORMAT( 26X, I5,' error message recorded (',A6,')')