LAPACK  3.8.0
LAPACK: Linear Algebra PACKage

◆ sdrvrf1()

subroutine sdrvrf1 ( integer  NOUT,
integer  NN,
integer, dimension( nn )  NVAL,
real  THRESH,
real, dimension( lda, * )  A,
integer  LDA,
real, dimension( * )  ARF,
real, dimension( * )  WORK 
)

SDRVRF1

Purpose:
 SDRVRF1 tests the LAPACK RFP routines:
     SLANSF
Parameters
[in]NOUT
          NOUT is INTEGER
                The unit number for output.
[in]NN
          NN is INTEGER
                The number of values of N contained in the vector NVAL.
[in]NVAL
          NVAL is INTEGER array, dimension (NN)
                The values of the matrix dimension N.
[in]THRESH
          THRESH is REAL
                The threshold value for the test ratios.  A result is
                included in the output file if RESULT >= THRESH.  To have
                every test ratio printed, use THRESH = 0.
[out]A
          A is REAL array, dimension (LDA,NMAX)
[in]LDA
          LDA is INTEGER
                The leading dimension of the array A.  LDA >= max(1,NMAX).
[out]ARF
          ARF is REAL array, dimension ((NMAX*(NMAX+1))/2).
[out]WORK
          WORK is REAL array, dimension ( NMAX )
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Date
December 2016

Definition at line 96 of file sdrvrf1.f.

96 *
97 * -- LAPACK test routine (version 3.7.0) --
98 * -- LAPACK is a software package provided by Univ. of Tennessee, --
99 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
100 * December 2016
101 *
102 * .. Scalar Arguments ..
103  INTEGER lda, nn, nout
104  REAL thresh
105 * ..
106 * .. Array Arguments ..
107  INTEGER nval( nn )
108  REAL a( lda, * ), arf( * ), work( * )
109 * ..
110 *
111 * =====================================================================
112 * ..
113 * .. Parameters ..
114  REAL one
115  parameter( one = 1.0e+0 )
116  INTEGER ntests
117  parameter( ntests = 1 )
118 * ..
119 * .. Local Scalars ..
120  CHARACTER uplo, cform, norm
121  INTEGER i, iform, iin, iit, info, inorm, iuplo, j, n,
122  + nerrs, nfail, nrun
123  REAL eps, large, norma, normarf, small
124 * ..
125 * .. Local Arrays ..
126  CHARACTER uplos( 2 ), forms( 2 ), norms( 4 )
127  INTEGER iseed( 4 ), iseedy( 4 )
128  REAL result( ntests )
129 * ..
130 * .. External Functions ..
131  REAL slamch, slansy, slansf, slarnd
132  EXTERNAL slamch, slansy, slansf, slarnd
133 * ..
134 * .. External Subroutines ..
135  EXTERNAL strttf
136 * ..
137 * .. Scalars in Common ..
138  CHARACTER*32 srnamt
139 * ..
140 * .. Common blocks ..
141  COMMON / srnamc / srnamt
142 * ..
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' /
148 * ..
149 * .. Executable Statements ..
150 *
151 * Initialize constants and the random number seed.
152 *
153  nrun = 0
154  nfail = 0
155  nerrs = 0
156  info = 0
157  DO 10 i = 1, 4
158  iseed( i ) = iseedy( i )
159  10 CONTINUE
160 *
161  eps = slamch( 'Precision' )
162  small = slamch( 'Safe minimum' )
163  large = one / small
164  small = small * lda * lda
165  large = large / lda / lda
166 *
167  DO 130 iin = 1, nn
168 *
169  n = nval( iin )
170 *
171  DO 120 iit = 1, 3
172 * Nothing to do for N=0
173  IF ( n .EQ. 0 ) EXIT
174 
175 * Quick Return if possible
176  IF ( n .EQ. 0 ) EXIT
177 *
178 * IIT = 1 : random matrix
179 * IIT = 2 : random matrix scaled near underflow
180 * IIT = 3 : random matrix scaled near overflow
181 *
182  DO j = 1, n
183  DO i = 1, n
184  a( i, j) = slarnd( 2, iseed )
185  END DO
186  END DO
187 *
188  IF ( iit.EQ.2 ) THEN
189  DO j = 1, n
190  DO i = 1, n
191  a( i, j) = a( i, j ) * large
192  END DO
193  END DO
194  END IF
195 *
196  IF ( iit.EQ.3 ) THEN
197  DO j = 1, n
198  DO i = 1, n
199  a( i, j) = a( i, j) * small
200  END DO
201  END DO
202  END IF
203 *
204 * Do first for UPLO = 'U', then for UPLO = 'L'
205 *
206  DO 110 iuplo = 1, 2
207 *
208  uplo = uplos( iuplo )
209 *
210 * Do first for CFORM = 'N', then for CFORM = 'C'
211 *
212  DO 100 iform = 1, 2
213 *
214  cform = forms( iform )
215 *
216  srnamt = 'STRTTF'
217  CALL strttf( cform, uplo, n, a, lda, arf, info )
218 *
219 * Check error code from STRTTF
220 *
221  IF( info.NE.0 ) THEN
222  IF( nfail.EQ.0 .AND. nerrs.EQ.0 ) THEN
223  WRITE( nout, * )
224  WRITE( nout, fmt = 9999 )
225  END IF
226  WRITE( nout, fmt = 9998 ) srnamt, uplo, cform, n
227  nerrs = nerrs + 1
228  GO TO 100
229  END IF
230 *
231  DO 90 inorm = 1, 4
232 *
233 * Check all four norms: 'M', '1', 'I', 'F'
234 *
235  norm = norms( inorm )
236  normarf = slansf( norm, cform, uplo, n, arf, work )
237  norma = slansy( norm, uplo, n, a, lda, work )
238 *
239  result(1) = ( norma - normarf ) / norma / eps
240  nrun = nrun + 1
241 *
242  IF( result(1).GE.thresh ) THEN
243  IF( nfail.EQ.0 .AND. nerrs.EQ.0 ) THEN
244  WRITE( nout, * )
245  WRITE( nout, fmt = 9999 )
246  END IF
247  WRITE( nout, fmt = 9997 ) 'SLANSF',
248  + n, iit, uplo, cform, norm, result(1)
249  nfail = nfail + 1
250  END IF
251  90 CONTINUE
252  100 CONTINUE
253  110 CONTINUE
254  120 CONTINUE
255  130 CONTINUE
256 *
257 * Print a summary of the results.
258 *
259  IF ( nfail.EQ.0 ) THEN
260  WRITE( nout, fmt = 9996 ) 'SLANSF', nrun
261  ELSE
262  WRITE( nout, fmt = 9995 ) 'SLANSF', nfail, nrun
263  END IF
264  IF ( nerrs.NE.0 ) THEN
265  WRITE( nout, fmt = 9994 ) nerrs, 'SLANSF'
266  END IF
267 *
268  9999 FORMAT( 1x, ' *** Error(s) or Failure(s) while testing SLANSF
269  + ***')
270  9998 FORMAT( 1x, ' Error in ',a6,' with UPLO=''',a1,''', FORM=''',
271  + a1,''', N=',i5)
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,')')
279 *
280  RETURN
281 *
282 * End of SDRVRF1
283 *
real function slansf(NORM, TRANSR, UPLO, N, A, WORK)
SLANSF
Definition: slansf.f:211
subroutine strttf(TRANSR, UPLO, N, A, LDA, ARF, INFO)
STRTTF copies a triangular matrix from the standard full format (TR) to the rectangular full packed f...
Definition: strttf.f:196
real function slarnd(IDIST, ISEED)
SLARND
Definition: slarnd.f:75
real function slamch(CMACH)
SLAMCH
Definition: slamch.f:69
real function slansy(NORM, UPLO, N, A, LDA, WORK)
SLANSY returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a real symmetric matrix.
Definition: slansy.f:124
Here is the call graph for this function:
Here is the caller graph for this function: