94
95
96
97
98
99
100 INTEGER LDA, NN, NOUT
101 DOUBLE PRECISION THRESH
102
103
104 INTEGER NVAL( NN )
105 DOUBLE PRECISION A( LDA, * ), ARF( * ), WORK( * )
106
107
108
109
110
111 DOUBLE PRECISION ONE
112 parameter( one = 1.0d+0 )
113 INTEGER NTESTS
114 parameter( ntests = 1 )
115
116
117 CHARACTER UPLO, CFORM, NORM
118 INTEGER I, IFORM, IIN, IIT, INFO, INORM, IUPLO, J, N,
119 + NERRS, NFAIL, NRUN
120 DOUBLE PRECISION EPS, LARGE, NORMA, NORMARF, SMALL
121
122
123 CHARACTER UPLOS( 2 ), FORMS( 2 ), NORMS( 4 )
124 INTEGER ISEED( 4 ), ISEEDY( 4 )
125 DOUBLE PRECISION RESULT( NTESTS )
126
127
128 DOUBLE PRECISION DLAMCH, DLANSY, DLANSF, DLARND
130
131
133
134
135 CHARACTER*32 SRNAMT
136
137
138 COMMON / srnamc / srnamt
139
140
141 DATA iseedy / 1988, 1989, 1990, 1991 /
142 DATA uplos / 'U', 'L' /
143 DATA forms / 'N', 'T' /
144 DATA norms / 'M', '1', 'I', 'F' /
145
146
147
148
149
150 nrun = 0
151 nfail = 0
152 nerrs = 0
153 info = 0
154 DO 10 i = 1, 4
155 iseed( i ) = iseedy( i )
156 10 CONTINUE
157
158 eps =
dlamch(
'Precision' )
159 small =
dlamch(
'Safe minimum' )
160 large = one / small
161 small = small * lda * lda
162 large = large / lda / lda
163
164 DO 130 iin = 1, nn
165
166 n = nval( iin )
167
168 DO 120 iit = 1, 3
169
170 IF ( n .EQ. 0 ) EXIT
171
172
173
174
175
176 DO j = 1, n
177 DO i = 1, n
178 a( i, j) =
dlarnd( 2, iseed )
179 END DO
180 END DO
181
182 IF ( iit.EQ.2 ) THEN
183 DO j = 1, n
184 DO i = 1, n
185 a( i, j) = a( i, j ) * large
186 END DO
187 END DO
188 END IF
189
190 IF ( iit.EQ.3 ) THEN
191 DO j = 1, n
192 DO i = 1, n
193 a( i, j) = a( i, j) * small
194 END DO
195 END DO
196 END IF
197
198
199
200 DO 110 iuplo = 1, 2
201
202 uplo = uplos( iuplo )
203
204
205
206 DO 100 iform = 1, 2
207
208 cform = forms( iform )
209
210 srnamt = 'DTRTTF'
211 CALL dtrttf( cform, uplo, n, a, lda, arf, info )
212
213
214
215 IF( info.NE.0 ) THEN
216 IF( nfail.EQ.0 .AND. nerrs.EQ.0 ) THEN
217 WRITE( nout, * )
218 WRITE( nout, fmt = 9999 )
219 END IF
220 WRITE( nout, fmt = 9998 ) srnamt, uplo, cform, n
221 nerrs = nerrs + 1
222 GO TO 100
223 END IF
224
225 DO 90 inorm = 1, 4
226
227
228
229 norm = norms( inorm )
230 normarf =
dlansf( norm, cform, uplo, n, arf, work )
231 norma =
dlansy( norm, uplo, n, a, lda, work )
232
233 result(1) = ( norma - normarf ) / norma / eps
234 nrun = nrun + 1
235
236 IF( result(1).GE.thresh ) THEN
237 IF( nfail.EQ.0 .AND. nerrs.EQ.0 ) THEN
238 WRITE( nout, * )
239 WRITE( nout, fmt = 9999 )
240 END IF
241 WRITE( nout, fmt = 9997 ) 'DLANSF',
242 + n, iit, uplo, cform, norm, result(1)
243 nfail = nfail + 1
244 END IF
245 90 CONTINUE
246 100 CONTINUE
247 110 CONTINUE
248 120 CONTINUE
249 130 CONTINUE
250
251
252
253 IF ( nfail.EQ.0 ) THEN
254 WRITE( nout, fmt = 9996 ) 'DLANSF', nrun
255 ELSE
256 WRITE( nout, fmt = 9995 ) 'DLANSF', nfail, nrun
257 END IF
258 IF ( nerrs.NE.0 ) THEN
259 WRITE( nout, fmt = 9994 ) nerrs, 'DLANSF'
260 END IF
261
262 9999 FORMAT( 1x, ' *** Error(s) or Failure(s) while testing DLANSF
263 + ***')
264 9998 FORMAT( 1x, ' Error in ',a6,' with UPLO=''',a1,''', FORM=''',
265 + a1,''', N=',i5)
266 9997 FORMAT( 1x, ' Failure in ',a6,' N=',i5,' TYPE=',i5,' UPLO=''',
267 + a1, ''', FORM =''',a1,''', NORM=''',a1,''', test=',g12.5)
268 9996 FORMAT( 1x, 'All tests for ',a6,' auxiliary routine passed the ',
269 + 'threshold ( ',i5,' tests run)')
270 9995 FORMAT( 1x, a6, ' auxiliary routine: ',i5,' out of ',i5,
271 + ' tests failed to pass the threshold')
272 9994 FORMAT( 26x, i5,' error message recorded (',a6,')')
273
274 RETURN
275
276
277
double precision function dlarnd(idist, iseed)
DLARND
double precision function dlamch(cmach)
DLAMCH
double precision function dlansy(norm, uplo, n, a, lda, work)
DLANSY returns the value of the 1-norm, or the Frobenius norm, or the infinity norm,...
double precision function dlansf(norm, transr, uplo, n, a, work)
DLANSF returns the value of the 1-norm, or the Frobenius norm, or the infinity norm,...
subroutine dtrttf(transr, uplo, n, a, lda, arf, info)
DTRTTF copies a triangular matrix from the standard full format (TR) to the rectangular full packed f...