OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches

Functions

subroutine alahdg (iounit, path)
 ALAHDG
subroutine alareq (path, nmats, dotype, ntypes, nin, nout)
 ALAREQ
subroutine alarqg (path, nmats, dotype, ntypes, nin, nout)
 ALARQG
subroutine alasmg (type, nout, nfail, nrun, nerrs)
 ALASMG
subroutine alasum (type, nout, nfail, nrun, nerrs)
 ALASUM
subroutine alasvm (type, nout, nfail, nrun, nerrs)
 ALASVM
subroutine xerbla (srname, info)
 XERBLA
subroutine xlaenv (ispec, nvalue)
 XLAENV

Detailed Description

This is the group of auxiliary LAPACK TESTING EIG routines.

Function Documentation

◆ alahdg()

subroutine alahdg ( integer iounit,
character*3 path )

ALAHDG

Purpose:
!>
!> ALAHDG prints header information for the different test paths.
!> 
Parameters
[in]IOUNIT
!>          IOUNIT is INTEGER
!>          The unit number to which the header information should be
!>          printed.
!> 
[in]PATH
!>          PATH is CHARACTER*3
!>          The name of the path for which the header information is to
!>          be printed.  Current paths are
!>             GQR:  GQR (general matrices)
!>             GRQ:  GRQ (general matrices)
!>             LSE:  LSE Problem
!>             GLM:  GLM Problem
!>             GSV:  Generalized Singular Value Decomposition
!>             CSD:  CS Decomposition
!> 
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

Definition at line 61 of file alahdg.f.

62*
63* -- LAPACK test routine --
64* -- LAPACK is a software package provided by Univ. of Tennessee, --
65* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
66*
67* .. Scalar Arguments ..
68 CHARACTER*3 PATH
69 INTEGER IOUNIT
70* ..
71*
72* =====================================================================
73*
74* .. Local Scalars ..
75 CHARACTER*3 C2
76 INTEGER ITYPE
77* ..
78* .. External Functions ..
79 LOGICAL LSAMEN
80 EXTERNAL lsamen
81* ..
82* .. Executable Statements ..
83*
84 IF( iounit.LE.0 )
85 $ RETURN
86 c2 = path( 1: 3 )
87*
88* First line describing matrices in this path
89*
90 IF( lsamen( 3, c2, 'GQR' ) ) THEN
91 itype = 1
92 WRITE( iounit, fmt = 9991 )path
93 ELSE IF( lsamen( 3, c2, 'GRQ' ) ) THEN
94 itype = 2
95 WRITE( iounit, fmt = 9992 )path
96 ELSE IF( lsamen( 3, c2, 'LSE' ) ) THEN
97 itype = 3
98 WRITE( iounit, fmt = 9993 )path
99 ELSE IF( lsamen( 3, c2, 'GLM' ) ) THEN
100 itype = 4
101 WRITE( iounit, fmt = 9994 )path
102 ELSE IF( lsamen( 3, c2, 'GSV' ) ) THEN
103 itype = 5
104 WRITE( iounit, fmt = 9995 )path
105 ELSE IF( lsamen( 3, c2, 'CSD' ) ) THEN
106 itype = 6
107 WRITE( iounit, fmt = 9996 )path
108 END IF
109*
110* Matrix types
111*
112 WRITE( iounit, fmt = 9999 )'Matrix types: '
113*
114 IF( itype.EQ.1 )THEN
115 WRITE( iounit, fmt = 9950 )1
116 WRITE( iounit, fmt = 9952 )2
117 WRITE( iounit, fmt = 9954 )3
118 WRITE( iounit, fmt = 9955 )4
119 WRITE( iounit, fmt = 9956 )5
120 WRITE( iounit, fmt = 9957 )6
121 WRITE( iounit, fmt = 9961 )7
122 WRITE( iounit, fmt = 9962 )8
123 ELSE IF( itype.EQ.2 )THEN
124 WRITE( iounit, fmt = 9951 )1
125 WRITE( iounit, fmt = 9953 )2
126 WRITE( iounit, fmt = 9954 )3
127 WRITE( iounit, fmt = 9955 )4
128 WRITE( iounit, fmt = 9956 )5
129 WRITE( iounit, fmt = 9957 )6
130 WRITE( iounit, fmt = 9961 )7
131 WRITE( iounit, fmt = 9962 )8
132 ELSE IF( itype.EQ.3 )THEN
133 WRITE( iounit, fmt = 9950 )1
134 WRITE( iounit, fmt = 9952 )2
135 WRITE( iounit, fmt = 9954 )3
136 WRITE( iounit, fmt = 9955 )4
137 WRITE( iounit, fmt = 9955 )5
138 WRITE( iounit, fmt = 9955 )6
139 WRITE( iounit, fmt = 9955 )7
140 WRITE( iounit, fmt = 9955 )8
141 ELSE IF( itype.EQ.4 )THEN
142 WRITE( iounit, fmt = 9951 )1
143 WRITE( iounit, fmt = 9953 )2
144 WRITE( iounit, fmt = 9954 )3
145 WRITE( iounit, fmt = 9955 )4
146 WRITE( iounit, fmt = 9955 )5
147 WRITE( iounit, fmt = 9955 )6
148 WRITE( iounit, fmt = 9955 )7
149 WRITE( iounit, fmt = 9955 )8
150 ELSE IF( itype.EQ.5 )THEN
151 WRITE( iounit, fmt = 9950 )1
152 WRITE( iounit, fmt = 9952 )2
153 WRITE( iounit, fmt = 9954 )3
154 WRITE( iounit, fmt = 9955 )4
155 WRITE( iounit, fmt = 9956 )5
156 WRITE( iounit, fmt = 9957 )6
157 WRITE( iounit, fmt = 9959 )7
158 WRITE( iounit, fmt = 9960 )8
159 ELSE IF( itype.EQ.6 )THEN
160 WRITE( iounit, fmt = 9963 )1
161 WRITE( iounit, fmt = 9964 )2
162 WRITE( iounit, fmt = 9965 )3
163 END IF
164*
165* Tests performed
166*
167 WRITE( iounit, fmt = 9999 )'Test ratios: '
168*
169 IF( itype.EQ.1 ) THEN
170*
171* GQR decomposition of rectangular matrices
172*
173 WRITE( iounit, fmt = 9930 )1
174 WRITE( iounit, fmt = 9931 )2
175 WRITE( iounit, fmt = 9932 )3
176 WRITE( iounit, fmt = 9933 )4
177 ELSE IF( itype.EQ.2 ) THEN
178*
179* GRQ decomposition of rectangular matrices
180*
181 WRITE( iounit, fmt = 9934 )1
182 WRITE( iounit, fmt = 9935 )2
183 WRITE( iounit, fmt = 9932 )3
184 WRITE( iounit, fmt = 9933 )4
185 ELSE IF( itype.EQ.3 ) THEN
186*
187* LSE Problem
188*
189 WRITE( iounit, fmt = 9937 )1
190 WRITE( iounit, fmt = 9938 )2
191 ELSE IF( itype.EQ.4 ) THEN
192*
193* GLM Problem
194*
195 WRITE( iounit, fmt = 9939 )1
196 ELSE IF( itype.EQ.5 ) THEN
197*
198* GSVD
199*
200 WRITE( iounit, fmt = 9940 )1
201 WRITE( iounit, fmt = 9941 )2
202 WRITE( iounit, fmt = 9942 )3
203 WRITE( iounit, fmt = 9943 )4
204 WRITE( iounit, fmt = 9944 )5
205 ELSE IF( itype.EQ.6 ) THEN
206*
207* CSD
208*
209 WRITE( iounit, fmt = 9910 )
210 WRITE( iounit, fmt = 9911 )1
211 WRITE( iounit, fmt = 9912 )2
212 WRITE( iounit, fmt = 9913 )3
213 WRITE( iounit, fmt = 9914 )4
214 WRITE( iounit, fmt = 9915 )5
215 WRITE( iounit, fmt = 9916 )6
216 WRITE( iounit, fmt = 9917 )7
217 WRITE( iounit, fmt = 9918 )8
218 WRITE( iounit, fmt = 9919 )9
219 WRITE( iounit, fmt = 9920 )
220 WRITE( iounit, fmt = 9921 )10
221 WRITE( iounit, fmt = 9922 )11
222 WRITE( iounit, fmt = 9923 )12
223 WRITE( iounit, fmt = 9924 )13
224 WRITE( iounit, fmt = 9925 )14
225 WRITE( iounit, fmt = 9926 )15
226 END IF
227*
228 9999 FORMAT( 1x, a )
229 9991 FORMAT( / 1x, a3, ': GQR factorization of general matrices' )
230 9992 FORMAT( / 1x, a3, ': GRQ factorization of general matrices' )
231 9993 FORMAT( / 1x, a3, ': LSE Problem' )
232 9994 FORMAT( / 1x, a3, ': GLM Problem' )
233 9995 FORMAT( / 1x, a3, ': Generalized Singular Value Decomposition' )
234 9996 FORMAT( / 1x, a3, ': CS Decomposition' )
235*
236 9950 FORMAT( 3x, i2, ': A-diagonal matrix B-upper triangular' )
237 9951 FORMAT( 3x, i2, ': A-diagonal matrix B-lower triangular' )
238 9952 FORMAT( 3x, i2, ': A-upper triangular B-upper triangular' )
239 9953 FORMAT( 3x, i2, ': A-lower triangular B-diagonal triangular' )
240 9954 FORMAT( 3x, i2, ': A-lower triangular B-upper triangular' )
241*
242 9955 FORMAT( 3x, i2, ': Random matrices cond(A)=100, cond(B)=10,' )
243*
244 9956 FORMAT( 3x, i2, ': Random matrices cond(A)= sqrt( 0.1/EPS ) ',
245 $ 'cond(B)= sqrt( 0.1/EPS )' )
246 9957 FORMAT( 3x, i2, ': Random matrices cond(A)= 0.1/EPS ',
247 $ 'cond(B)= 0.1/EPS' )
248 9959 FORMAT( 3x, i2, ': Random matrices cond(A)= sqrt( 0.1/EPS ) ',
249 $ 'cond(B)= 0.1/EPS ' )
250 9960 FORMAT( 3x, i2, ': Random matrices cond(A)= 0.1/EPS ',
251 $ 'cond(B)= sqrt( 0.1/EPS )' )
252*
253 9961 FORMAT( 3x, i2, ': Matrix scaled near underflow limit' )
254 9962 FORMAT( 3x, i2, ': Matrix scaled near overflow limit' )
255 9963 FORMAT( 3x, i2, ': Random orthogonal matrix (Haar measure)' )
256 9964 FORMAT( 3x, i2, ': Nearly orthogonal matrix with uniformly ',
257 $ 'distributed angles atan2( S, C ) in CS decomposition' )
258 9965 FORMAT( 3x, i2, ': Random orthogonal matrix with clustered ',
259 $ 'angles atan2( S, C ) in CS decomposition' )
260*
261*
262* GQR test ratio
263*
264 9930 FORMAT( 3x, i2, ': norm( R - Q'' * A ) / ( min( N, M )*norm( A )',
265 $ '* EPS )' )
266 9931 FORMAT( 3x, i2, ': norm( T * Z - Q'' * B ) / ( min(P,N)*norm(B)',
267 $ '* EPS )' )
268 9932 FORMAT( 3x, i2, ': norm( I - Q''*Q ) / ( N * EPS )' )
269 9933 FORMAT( 3x, i2, ': norm( I - Z''*Z ) / ( P * EPS )' )
270*
271* GRQ test ratio
272*
273 9934 FORMAT( 3x, i2, ': norm( R - A * Q'' ) / ( min( N,M )*norm(A) * ',
274 $ 'EPS )' )
275 9935 FORMAT( 3x, i2, ': norm( T * Q - Z'' * B ) / ( min( P,N ) * nor',
276 $ 'm(B)*EPS )' )
277*
278* LSE test ratio
279*
280 9937 FORMAT( 3x, i2, ': norm( A*x - c ) / ( norm(A)*norm(x) * EPS )' )
281 9938 FORMAT( 3x, i2, ': norm( B*x - d ) / ( norm(B)*norm(x) * EPS )' )
282*
283* GLM test ratio
284*
285 9939 FORMAT( 3x, i2, ': norm( d - A*x - B*y ) / ( (norm(A)+norm(B) )*',
286 $ '(norm(x)+norm(y))*EPS )' )
287*
288* GSVD test ratio
289*
290 9940 FORMAT( 3x, i2, ': norm( U'' * A * Q - D1 * R ) / ( min( M, N )*',
291 $ 'norm( A ) * EPS )' )
292 9941 FORMAT( 3x, i2, ': norm( V'' * B * Q - D2 * R ) / ( min( P, N )*',
293 $ 'norm( B ) * EPS )' )
294 9942 FORMAT( 3x, i2, ': norm( I - U''*U ) / ( M * EPS )' )
295 9943 FORMAT( 3x, i2, ': norm( I - V''*V ) / ( P * EPS )' )
296 9944 FORMAT( 3x, i2, ': norm( I - Q''*Q ) / ( N * EPS )' )
297*
298* CSD test ratio
299*
300 9910 FORMAT( 3x, '2-by-2 CSD' )
301 9911 FORMAT( 3x, i2, ': norm( U1'' * X11 * V1 - C ) / ( max( P, Q)',
302 $ ' * max(norm(I-X''*X),EPS) )' )
303 9912 FORMAT( 3x, i2, ': norm( U1'' * X12 * V2-(-S)) / ( max( P,',
304 $ 'M-Q) * max(norm(I-X''*X),EPS) )' )
305 9913 FORMAT( 3x, i2, ': norm( U2'' * X21 * V1 - S ) / ( max(M-P,',
306 $ ' Q) * max(norm(I-X''*X),EPS) )' )
307 9914 FORMAT( 3x, i2, ': norm( U2'' * X22 * V2 - C ) / ( max(M-P,',
308 $ 'M-Q) * max(norm(I-X''*X),EPS) )' )
309 9915 FORMAT( 3x, i2, ': norm( I - U1''*U1 ) / ( P * EPS )' )
310 9916 FORMAT( 3x, i2, ': norm( I - U2''*U2 ) / ( (M-P) * EPS )' )
311 9917 FORMAT( 3x, i2, ': norm( I - V1''*V1 ) / ( Q * EPS )' )
312 9918 FORMAT( 3x, i2, ': norm( I - V2''*V2 ) / ( (M-Q) * EPS )' )
313 9919 FORMAT( 3x, i2, ': principal angle ordering ( 0 or ULP )' )
314 9920 FORMAT( 3x, '2-by-1 CSD' )
315 9921 FORMAT( 3x, i2, ': norm( U1'' * X11 * V1 - C ) / ( max( P, Q)',
316 $ ' * max(norm(I-X''*X),EPS) )' )
317 9922 FORMAT( 3x, i2, ': norm( U2'' * X21 * V1 - S ) / ( max( M-P,',
318 $ 'Q) * max(norm(I-X''*X),EPS) )' )
319 9923 FORMAT( 3x, i2, ': norm( I - U1''*U1 ) / ( P * EPS )' )
320 9924 FORMAT( 3x, i2, ': norm( I - U2''*U2 ) / ( (M-P) * EPS )' )
321 9925 FORMAT( 3x, i2, ': norm( I - V1''*V1 ) / ( Q * EPS )' )
322 9926 FORMAT( 3x, i2, ': principal angle ordering ( 0 or ULP )' )
323 RETURN
324*
325* End of ALAHDG
326*
logical function lsamen(n, ca, cb)
LSAMEN
Definition lsamen.f:74

◆ alareq()

subroutine alareq ( character*3 path,
integer nmats,
logical, dimension( * ) dotype,
integer ntypes,
integer nin,
integer nout )

ALAREQ

Purpose:
!>
!> ALAREQ handles input for the LAPACK test program.  It is called
!> to evaluate the input line which requested NMATS matrix types for
!> PATH.  The flow of control is as follows:
!>
!> If NMATS = NTYPES then
!>    DOTYPE(1:NTYPES) = .TRUE.
!> else
!>    Read the next input line for NMATS matrix types
!>    Set DOTYPE(I) = .TRUE. for each valid type I
!> endif
!> 
Parameters
[in]PATH
!>          PATH is CHARACTER*3
!>          An LAPACK path name for testing.
!> 
[in]NMATS
!>          NMATS is INTEGER
!>          The number of matrix types to be used in testing this path.
!> 
[out]DOTYPE
!>          DOTYPE is LOGICAL array, dimension (NTYPES)
!>          The vector of flags indicating if each type will be tested.
!> 
[in]NTYPES
!>          NTYPES is INTEGER
!>          The maximum number of matrix types for this path.
!> 
[in]NIN
!>          NIN is INTEGER
!>          The unit number for input.  NIN >= 1.
!> 
[in]NOUT
!>          NOUT is INTEGER
!>          The unit number for output.  NOUT >= 1.
!> 
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

Definition at line 89 of file alareq.f.

90*
91* -- LAPACK test routine --
92* -- LAPACK is a software package provided by Univ. of Tennessee, --
93* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
94*
95* .. Scalar Arguments ..
96 CHARACTER*3 PATH
97 INTEGER NIN, NMATS, NOUT, NTYPES
98* ..
99* .. Array Arguments ..
100 LOGICAL DOTYPE( * )
101* ..
102*
103* =====================================================================
104*
105* .. Local Scalars ..
106 LOGICAL FIRSTT
107 CHARACTER C1
108 CHARACTER*10 INTSTR
109 CHARACTER*80 LINE
110 INTEGER I, I1, IC, J, K, LENP, NT
111* ..
112* .. Local Arrays ..
113 INTEGER NREQ( 100 )
114* ..
115* .. Intrinsic Functions ..
116 INTRINSIC len
117* ..
118* .. Data statements ..
119 DATA intstr / '0123456789' /
120* ..
121* .. Executable Statements ..
122*
123 IF( nmats.GE.ntypes ) THEN
124*
125* Test everything if NMATS >= NTYPES.
126*
127 DO 10 i = 1, ntypes
128 dotype( i ) = .true.
129 10 CONTINUE
130 ELSE
131 DO 20 i = 1, ntypes
132 dotype( i ) = .false.
133 20 CONTINUE
134 firstt = .true.
135*
136* Read a line of matrix types if 0 < NMATS < NTYPES.
137*
138 IF( nmats.GT.0 ) THEN
139 READ( nin, fmt = '(A80)', END = 90 )line
140 lenp = len( line )
141 i = 0
142 DO 60 j = 1, nmats
143 nreq( j ) = 0
144 i1 = 0
145 30 CONTINUE
146 i = i + 1
147 IF( i.GT.lenp ) THEN
148 IF( j.EQ.nmats .AND. i1.GT.0 ) THEN
149 GO TO 60
150 ELSE
151 WRITE( nout, fmt = 9995 )line
152 WRITE( nout, fmt = 9994 )nmats
153 GO TO 80
154 END IF
155 END IF
156 IF( line( i: i ).NE.' ' .AND. line( i: i ).NE.',' ) THEN
157 i1 = i
158 c1 = line( i1: i1 )
159*
160* Check that a valid integer was read
161*
162 DO 40 k = 1, 10
163 IF( c1.EQ.intstr( k: k ) ) THEN
164 ic = k - 1
165 GO TO 50
166 END IF
167 40 CONTINUE
168 WRITE( nout, fmt = 9996 )i, line
169 WRITE( nout, fmt = 9994 )nmats
170 GO TO 80
171 50 CONTINUE
172 nreq( j ) = 10*nreq( j ) + ic
173 GO TO 30
174 ELSE IF( i1.GT.0 ) THEN
175 GO TO 60
176 ELSE
177 GO TO 30
178 END IF
179 60 CONTINUE
180 END IF
181 DO 70 i = 1, nmats
182 nt = nreq( i )
183 IF( nt.GT.0 .AND. nt.LE.ntypes ) THEN
184 IF( dotype( nt ) ) THEN
185 IF( firstt )
186 $ WRITE( nout, fmt = * )
187 firstt = .false.
188 WRITE( nout, fmt = 9997 )nt, path
189 END IF
190 dotype( nt ) = .true.
191 ELSE
192 WRITE( nout, fmt = 9999 )path, nt, ntypes
193 9999 FORMAT( ' *** Invalid type request for ', a3, ', type ',
194 $ i4, ': must satisfy 1 <= type <= ', i2 )
195 END IF
196 70 CONTINUE
197 80 CONTINUE
198 END IF
199 RETURN
200*
201 90 CONTINUE
202 WRITE( nout, fmt = 9998 )path
203 9998 FORMAT( /' *** End of file reached when trying to read matrix ',
204 $ 'types for ', a3, /' *** Check that you are requesting the',
205 $ ' right number of types for each path', / )
206 9997 FORMAT( ' *** Warning: duplicate request of matrix type ', i2,
207 $ ' for ', a3 )
208 9996 FORMAT( //' *** Invalid integer value in column ', i2,
209 $ ' of input', ' line:', /a79 )
210 9995 FORMAT( //' *** Not enough matrix types on input line', /a79 )
211 9994 FORMAT( ' ==> Specify ', i4, ' matrix types on this line or ',
212 $ 'adjust NTYPES on previous line' )
213 WRITE( nout, fmt = * )
214 stop
215*
216* End of ALAREQ
217*

◆ alarqg()

subroutine alarqg ( character*3 path,
integer nmats,
logical, dimension( * ) dotype,
integer ntypes,
integer nin,
integer nout )

ALARQG

Purpose:
!>
!> ALARQG handles input for the LAPACK test program.  It is called
!> to evaluate the input line which requested NMATS matrix types for
!> PATH.  The flow of control is as follows:
!>
!> If NMATS = NTYPES then
!>    DOTYPE(1:NTYPES) = .TRUE.
!> else
!>    Read the next input line for NMATS matrix types
!>    Set DOTYPE(I) = .TRUE. for each valid type I
!> endif
!> 
Parameters
[in]PATH
!>          PATH is CHARACTER*3
!>          An LAPACK path name for testing.
!> 
[in]NMATS
!>          NMATS is INTEGER
!>          The number of matrix types to be used in testing this path.
!> 
[out]DOTYPE
!>          DOTYPE is LOGICAL array, dimension (NTYPES)
!>          The vector of flags indicating if each type will be tested.
!> 
[in]NTYPES
!>          NTYPES is INTEGER
!>          The maximum number of matrix types for this path.
!> 
[in]NIN
!>          NIN is INTEGER
!>          The unit number for input.  NIN >= 1.
!> 
[in]NOUT
!>          NOUT is INTEGER
!>          The unit number for output.  NOUT >= 1.
!> 
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

Definition at line 89 of file alarqg.f.

90*
91* -- LAPACK test routine --
92* -- LAPACK is a software package provided by Univ. of Tennessee, --
93* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
94*
95* .. Scalar Arguments ..
96 CHARACTER*3 PATH
97 INTEGER NIN, NMATS, NOUT, NTYPES
98* ..
99* .. Array Arguments ..
100 LOGICAL DOTYPE( * )
101* ..
102*
103* ======================================================================
104*
105* .. Local Scalars ..
106 LOGICAL FIRSTT
107 CHARACTER C1
108 CHARACTER*10 INTSTR
109 CHARACTER*80 LINE
110 INTEGER I, I1, IC, J, K, LENP, NT
111* ..
112* .. Local Arrays ..
113 INTEGER NREQ( 100 )
114* ..
115* .. Intrinsic Functions ..
116 INTRINSIC len
117* ..
118* .. Data statements ..
119 DATA intstr / '0123456789' /
120* ..
121* .. Executable Statements ..
122*
123 IF( nmats.GE.ntypes ) THEN
124*
125* Test everything if NMATS >= NTYPES.
126*
127 DO 10 i = 1, ntypes
128 dotype( i ) = .true.
129 10 CONTINUE
130 ELSE
131 DO 20 i = 1, ntypes
132 dotype( i ) = .false.
133 20 CONTINUE
134 firstt = .true.
135*
136* Read a line of matrix types if 0 < NMATS < NTYPES.
137*
138 IF( nmats.GT.0 ) THEN
139 READ( nin, fmt = '(A80)', END = 90 )line
140 lenp = len( line )
141 i = 0
142 DO 60 j = 1, nmats
143 nreq( j ) = 0
144 i1 = 0
145 30 CONTINUE
146 i = i + 1
147 IF( i.GT.lenp ) THEN
148 IF( j.EQ.nmats .AND. i1.GT.0 ) THEN
149 GO TO 60
150 ELSE
151 WRITE( nout, fmt = 9995 )line
152 WRITE( nout, fmt = 9994 )nmats
153 GO TO 80
154 END IF
155 END IF
156 IF( line( i: i ).NE.' ' .AND. line( i: i ).NE.',' ) THEN
157 i1 = i
158 c1 = line( i1: i1 )
159*
160* Check that a valid integer was read
161*
162 DO 40 k = 1, 10
163 IF( c1.EQ.intstr( k: k ) ) THEN
164 ic = k - 1
165 GO TO 50
166 END IF
167 40 CONTINUE
168 WRITE( nout, fmt = 9996 )i, line
169 WRITE( nout, fmt = 9994 )nmats
170 GO TO 80
171 50 CONTINUE
172 nreq( j ) = 10*nreq( j ) + ic
173 GO TO 30
174 ELSE IF( i1.GT.0 ) THEN
175 GO TO 60
176 ELSE
177 GO TO 30
178 END IF
179 60 CONTINUE
180 END IF
181 DO 70 i = 1, nmats
182 nt = nreq( i )
183 IF( nt.GT.0 .AND. nt.LE.ntypes ) THEN
184 IF( dotype( nt ) ) THEN
185 IF( firstt )
186 $ WRITE( nout, fmt = * )
187 firstt = .false.
188 WRITE( nout, fmt = 9997 )nt, path
189 END IF
190 dotype( nt ) = .true.
191 ELSE
192 WRITE( nout, fmt = 9999 )path, nt, ntypes
193 9999 FORMAT( ' *** Invalid type request for ', a3, ', type ',
194 $ i4, ': must satisfy 1 <= type <= ', i2 )
195 END IF
196 70 CONTINUE
197 80 CONTINUE
198 END IF
199 RETURN
200*
201 90 CONTINUE
202 WRITE( nout, fmt = 9998 )path
203 9998 FORMAT( /' *** End of file reached when trying to read matrix ',
204 $ 'types for ', a3, /' *** Check that you are requesting the',
205 $ ' right number of types for each path', / )
206 9997 FORMAT( ' *** Warning: duplicate request of matrix type ', i2,
207 $ ' for ', a3 )
208 9996 FORMAT( //' *** Invalid integer value in column ', i2,
209 $ ' of input', ' line:', /a79 )
210 9995 FORMAT( //' *** Not enough matrix types on input line', /a79 )
211 9994 FORMAT( ' ==> Specify ', i4, ' matrix types on this line or ',
212 $ 'adjust NTYPES on previous line' )
213 WRITE( nout, fmt = * )
214 stop
215*
216* End of ALARQG
217*

◆ alasmg()

subroutine alasmg ( character*3 type,
integer nout,
integer nfail,
integer nrun,
integer nerrs )

ALASMG

Purpose:
!>
!> ALASMG prints a summary of results from one of the -CHK- routines.
!> 
Parameters
[in]TYPE
!>          TYPE is CHARACTER*3
!>          The LAPACK path name.
!> 
[in]NOUT
!>          NOUT is INTEGER
!>          The unit number on which results are to be printed.
!>          NOUT >= 0.
!> 
[in]NFAIL
!>          NFAIL is INTEGER
!>          The number of tests which did not pass the threshold ratio.
!> 
[in]NRUN
!>          NRUN is INTEGER
!>          The total number of tests.
!> 
[in]NERRS
!>          NERRS is INTEGER
!>          The number of error messages recorded.
!> 
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

Definition at line 72 of file alasmg.f.

73*
74* -- LAPACK test routine --
75* -- LAPACK is a software package provided by Univ. of Tennessee, --
76* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
77*
78* .. Scalar Arguments ..
79 CHARACTER*3 TYPE
80 INTEGER NFAIL, NOUT, NRUN, NERRS
81* ..
82*
83* ======================================================================
84*
85* .. Executable Statements ..
86*
87 IF( nfail.GT.0 ) THEN
88 WRITE( nout, fmt = 9999 )TYPE, NFAIL, NRUN
89 ELSE
90 WRITE( nout, fmt = 9998 )TYPE, NRUN
91 END IF
92 IF( nerrs.GT.0 ) THEN
93 WRITE( nout, fmt = 9997 )nerrs
94 END IF
95*
96 9999 FORMAT( 1x, a3, ': ', i6, ' out of ', i6,
97 $ ' tests failed to pass the threshold' )
98 9998 FORMAT( /1x, 'All tests for ', a3,
99 $ ' routines passed the threshold ( ', i6, ' tests run)' )
100 9997 FORMAT( 6x, i6, ' error messages recorded' )
101 RETURN
102*
103* End of ALASMG
104*

◆ alasum()

subroutine alasum ( character*3 type,
integer nout,
integer nfail,
integer nrun,
integer nerrs )

ALASUM

Purpose:
!>
!> ALASUM prints a summary of results from one of the -CHK- routines.
!> 
Parameters
[in]TYPE
!>          TYPE is CHARACTER*3
!>          The LAPACK path name.
!> 
[in]NOUT
!>          NOUT is INTEGER
!>          The unit number on which results are to be printed.
!>          NOUT >= 0.
!> 
[in]NFAIL
!>          NFAIL is INTEGER
!>          The number of tests which did not pass the threshold ratio.
!> 
[in]NRUN
!>          NRUN is INTEGER
!>          The total number of tests.
!> 
[in]NERRS
!>          NERRS is INTEGER
!>          The number of error messages recorded.
!> 
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

Definition at line 72 of file alasum.f.

73*
74* -- LAPACK test routine --
75* -- LAPACK is a software package provided by Univ. of Tennessee, --
76* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
77*
78* .. Scalar Arguments ..
79 CHARACTER*3 TYPE
80 INTEGER NFAIL, NOUT, NRUN, NERRS
81* ..
82*
83* =====================================================================
84*
85* .. Executable Statements ..
86*
87 IF( nfail.GT.0 ) THEN
88 WRITE( nout, fmt = 9999 )TYPE, NFAIL, NRUN
89 ELSE
90 WRITE( nout, fmt = 9998 )TYPE, NRUN
91 END IF
92 IF( nerrs.GT.0 ) THEN
93 WRITE( nout, fmt = 9997 )nerrs
94 END IF
95*
96 9999 FORMAT( 1x, a3, ': ', i6, ' out of ', i6,
97 $ ' tests failed to pass the threshold' )
98 9998 FORMAT( /1x, 'All tests for ', a3,
99 $ ' routines passed the threshold ( ', i6, ' tests run)' )
100 9997 FORMAT( 6x, i6, ' error messages recorded' )
101 RETURN
102*
103* End of ALASUM
104*

◆ alasvm()

subroutine alasvm ( character*3 type,
integer nout,
integer nfail,
integer nrun,
integer nerrs )

ALASVM

Purpose:
!>
!> ALASVM prints a summary of results from one of the -DRV- routines.
!> 
Parameters
[in]TYPE
!>          TYPE is CHARACTER*3
!>          The LAPACK path name.
!> 
[in]NOUT
!>          NOUT is INTEGER
!>          The unit number on which results are to be printed.
!>          NOUT >= 0.
!> 
[in]NFAIL
!>          NFAIL is INTEGER
!>          The number of tests which did not pass the threshold ratio.
!> 
[in]NRUN
!>          NRUN is INTEGER
!>          The total number of tests.
!> 
[in]NERRS
!>          NERRS is INTEGER
!>          The number of error messages recorded.
!> 
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

Definition at line 72 of file alasvm.f.

73*
74* -- LAPACK test routine --
75* -- LAPACK is a software package provided by Univ. of Tennessee, --
76* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
77*
78* .. Scalar Arguments ..
79 CHARACTER*3 TYPE
80 INTEGER NFAIL, NOUT, NRUN, NERRS
81* ..
82*
83* =====================================================================
84*
85* .. Executable Statements ..
86*
87 IF( nfail.GT.0 ) THEN
88 WRITE( nout, fmt = 9999 )TYPE, NFAIL, NRUN
89 ELSE
90 WRITE( nout, fmt = 9998 )TYPE, NRUN
91 END IF
92 IF( nerrs.GT.0 ) THEN
93 WRITE( nout, fmt = 9997 )nerrs
94 END IF
95*
96 9999 FORMAT( 1x, a3, ' drivers: ', i6, ' out of ', i6,
97 $ ' tests failed to pass the threshold' )
98 9998 FORMAT( /1x, 'All tests for ', a3, ' drivers passed the ',
99 $ 'threshold ( ', i6, ' tests run)' )
100 9997 FORMAT( 14x, i6, ' error messages recorded' )
101 RETURN
102*
103* End of ALASVM
104*

◆ xerbla()

subroutine xerbla ( character*(*) srname,
integer info )

XERBLA

Purpose:
!>
!> This is a special version of XERBLA to be used only as part of
!> the test program for testing error exits from the LAPACK routines.
!> Error messages are printed if INFO.NE.INFOT or if SRNAME.NE.SRNAMT,
!> where INFOT and SRNAMT are values stored in COMMON.
!> 
Parameters
[in]SRNAME
!>          SRNAME is CHARACTER*(*)
!>          The name of the subroutine calling XERBLA.  This name should
!>          match the COMMON variable SRNAMT.
!> 
[in]INFO
!>          INFO is INTEGER
!>          The error return code from the calling subroutine.  INFO
!>          should equal the COMMON variable INFOT.
!> 
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
!>
!>  The following variables are passed via the common blocks INFOC and
!>  SRNAMC:
!>
!>  INFOT   INTEGER      Expected integer return code
!>  NOUT    INTEGER      Unit number for printing error messages
!>  OK      LOGICAL      Set to .TRUE. if INFO = INFOT and
!>                       SRNAME = SRNAMT, otherwise set to .FALSE.
!>  LERR    LOGICAL      Set to .TRUE., indicating that XERBLA was called
!>  SRNAMT  CHARACTER*(*) Expected name of calling subroutine
!> 

Definition at line 74 of file xerbla.f.

75*
76* -- LAPACK test routine --
77* -- LAPACK is a software package provided by Univ. of Tennessee, --
78* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
79*
80* .. Scalar Arguments ..
81 CHARACTER*(*) SRNAME
82 INTEGER INFO
83* ..
84*
85* =====================================================================
86*
87* .. Scalars in Common ..
88 LOGICAL LERR, OK
89 CHARACTER*32 SRNAMT
90 INTEGER INFOT, NOUT
91* ..
92* .. Intrinsic Functions ..
93 INTRINSIC len_trim
94* ..
95* .. Common blocks ..
96 COMMON / infoc / infot, nout, ok, lerr
97 COMMON / srnamc / srnamt
98* ..
99* .. Executable Statements ..
100*
101 lerr = .true.
102 IF( info.NE.infot ) THEN
103 IF( infot.NE.0 ) THEN
104 WRITE( nout, fmt = 9999 )
105 $ srnamt( 1:len_trim( srnamt ) ), info, infot
106 ELSE
107 WRITE( nout, fmt = 9997 )
108 $ srname( 1:len_trim( srname ) ), info
109 END IF
110 ok = .false.
111 END IF
112 IF( srname.NE.srnamt ) THEN
113 WRITE( nout, fmt = 9998 )
114 $ srname( 1:len_trim( srname ) ),
115 $ srnamt( 1:len_trim( srnamt ) )
116 ok = .false.
117 END IF
118 RETURN
119*
120 9999 FORMAT( ' *** XERBLA was called from ', a, ' with INFO = ', i6,
121 $ ' instead of ', i2, ' ***' )
122 9998 FORMAT( ' *** XERBLA was called with SRNAME = ', a,
123 $ ' instead of ', a6, ' ***' )
124 9997 FORMAT( ' *** On entry to ', a, ' parameter number ', i6,
125 $ ' had an illegal value ***' )
126*
127* End of XERBLA
128*

◆ xlaenv()

subroutine xlaenv ( integer ispec,
integer nvalue )

XLAENV

Purpose:
!>
!> XLAENV sets certain machine- and problem-dependent quantities
!> which will later be retrieved by ILAENV.
!> 
Parameters
[in]ISPEC
!>          ISPEC is INTEGER
!>          Specifies the parameter to be set in the COMMON array IPARMS.
!>          = 1: the optimal blocksize; if this value is 1, an unblocked
!>               algorithm will give the best performance.
!>          = 2: the minimum block size for which the block routine
!>               should be used; if the usable block size is less than
!>               this value, an unblocked routine should be used.
!>          = 3: the crossover point (in a block routine, for N less
!>               than this value, an unblocked routine should be used)
!>          = 4: the number of shifts, used in the nonsymmetric
!>               eigenvalue routines
!>          = 5: the minimum column dimension for blocking to be used;
!>               rectangular blocks must have dimension at least k by m,
!>               where k is given by ILAENV(2,...) and m by ILAENV(5,...)
!>          = 6: the crossover point for the SVD (when reducing an m by n
!>               matrix to bidiagonal form, if max(m,n)/min(m,n) exceeds
!>               this value, a QR factorization is used first to reduce
!>               the matrix to a triangular form)
!>          = 7: the number of processors
!>          = 8: another crossover point, for the multishift QR and QZ
!>               methods for nonsymmetric eigenvalue problems.
!>          = 9: maximum size of the subproblems at the bottom of the
!>               computation tree in the divide-and-conquer algorithm
!>               (used by xGELSD and xGESDD)
!>          =10: ieee NaN arithmetic can be trusted not to trap
!>          =11: infinity arithmetic can be trusted not to trap
!>          12 <= ISPEC <= 16:
!>               xHSEQR or one of its subroutines,
!>               see IPARMQ for detailed explanation
!> 
[in]NVALUE
!>          NVALUE is INTEGER
!>          The value of the parameter specified by ISPEC.
!> 
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

Definition at line 80 of file xlaenv.f.

81*
82* -- LAPACK test routine --
83* -- LAPACK is a software package provided by Univ. of Tennessee, --
84* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
85*
86* .. Scalar Arguments ..
87 INTEGER ISPEC, NVALUE
88* ..
89*
90* =====================================================================
91*
92* .. Arrays in Common ..
93 INTEGER IPARMS( 100 )
94* ..
95* .. Common blocks ..
96 COMMON / claenv / iparms
97* ..
98* .. Save statement ..
99 SAVE / claenv /
100* ..
101* .. Executable Statements ..
102*
103 IF( ispec.GE.1 .AND. ispec.LE.16 ) THEN
104 iparms( ispec ) = nvalue
105 END IF
106*
107 RETURN
108*
109* End of XLAENV
110*