OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
serrqr.f
Go to the documentation of this file.
1*> \brief \b SERRQR
2*
3* =========== DOCUMENTATION ===========
4*
5* Online html documentation available at
6* http://www.netlib.org/lapack/explore-html/
7*
8* Definition:
9* ===========
10*
11* SUBROUTINE SERRQR( PATH, NUNIT )
12*
13* .. Scalar Arguments ..
14* CHARACTER*3 PATH
15* INTEGER NUNIT
16* ..
17*
18*
19*> \par Purpose:
20* =============
21*>
22*> \verbatim
23*>
24*> SERRQR tests the error exits for the REAL routines
25*> that use the QR decomposition of a general matrix.
26*> \endverbatim
27*
28* Arguments:
29* ==========
30*
31*> \param[in] PATH
32*> \verbatim
33*> PATH is CHARACTER*3
34*> The LAPACK path name for the routines to be tested.
35*> \endverbatim
36*>
37*> \param[in] NUNIT
38*> \verbatim
39*> NUNIT is INTEGER
40*> The unit number for output.
41*> \endverbatim
42*
43* Authors:
44* ========
45*
46*> \author Univ. of Tennessee
47*> \author Univ. of California Berkeley
48*> \author Univ. of Colorado Denver
49*> \author NAG Ltd.
50*
51*> \ingroup single_lin
52*
53* =====================================================================
54 SUBROUTINE serrqr( PATH, NUNIT )
55*
56* -- LAPACK test routine --
57* -- LAPACK is a software package provided by Univ. of Tennessee, --
58* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
59*
60* .. Scalar Arguments ..
61 CHARACTER*3 PATH
62 INTEGER NUNIT
63* ..
64*
65* =====================================================================
66*
67* .. Parameters ..
68 INTEGER NMAX
69 parameter( nmax = 2 )
70* ..
71* .. Local Scalars ..
72 INTEGER I, INFO, J
73* ..
74* .. Local Arrays ..
75 REAL A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
76 $ W( NMAX ), X( NMAX )
77* ..
78* .. External Subroutines ..
79 EXTERNAL alaesm, chkxer, sgeqr2, sgeqr2p, sgeqrf,
81 $ sormqr
82* ..
83* .. Scalars in Common ..
84 LOGICAL LERR, OK
85 CHARACTER*32 SRNAMT
86 INTEGER INFOT, NOUT
87* ..
88* .. Common blocks ..
89 COMMON / infoc / infot, nout, ok, lerr
90 COMMON / srnamc / srnamt
91* ..
92* .. Intrinsic Functions ..
93 INTRINSIC real
94* ..
95* .. Executable Statements ..
96*
97 nout = nunit
98 WRITE( nout, fmt = * )
99*
100* Set the variables to innocuous values.
101*
102 DO 20 j = 1, nmax
103 DO 10 i = 1, nmax
104 a( i, j ) = 1. / real( i+j )
105 af( i, j ) = 1. / real( i+j )
106 10 CONTINUE
107 b( j ) = 0.
108 w( j ) = 0.
109 x( j ) = 0.
110 20 CONTINUE
111 ok = .true.
112*
113* Error exits for QR factorization
114*
115* SGEQRF
116*
117 srnamt = 'SGEQRF'
118 infot = 1
119 CALL sgeqrf( -1, 0, a, 1, b, w, 1, info )
120 CALL chkxer( 'SGEQRF', infot, nout, lerr, ok )
121 infot = 2
122 CALL sgeqrf( 0, -1, a, 1, b, w, 1, info )
123 CALL chkxer( 'SGEQRF', infot, nout, lerr, ok )
124 infot = 4
125 CALL sgeqrf( 2, 1, a, 1, b, w, 1, info )
126 CALL chkxer( 'SGEQRF', infot, nout, lerr, ok )
127 infot = 7
128 CALL sgeqrf( 1, 2, a, 1, b, w, 1, info )
129 CALL chkxer( 'sgeqrf', INFOT, NOUT, LERR, OK )
130*
131* SGEQRFP
132*
133 SRNAMT = 'sgeqrfp'
134 INFOT = 1
135 CALL SGEQRFP( -1, 0, A, 1, B, W, 1, INFO )
136 CALL CHKXER( 'sgeqrfp', INFOT, NOUT, LERR, OK )
137 INFOT = 2
138 CALL SGEQRFP( 0, -1, A, 1, B, W, 1, INFO )
139 CALL CHKXER( 'sgeqrfp', INFOT, NOUT, LERR, OK )
140 INFOT = 4
141 CALL SGEQRFP( 2, 1, A, 1, B, W, 1, INFO )
142 CALL CHKXER( 'sgeqrfp', INFOT, NOUT, LERR, OK )
143 INFOT = 7
144 CALL SGEQRFP( 1, 2, A, 1, B, W, 1, INFO )
145 CALL CHKXER( 'sgeqrfp', INFOT, NOUT, LERR, OK )
146*
147* SGEQR2
148*
149 SRNAMT = 'sgeqr2'
150 INFOT = 1
151 CALL SGEQR2( -1, 0, A, 1, B, W, INFO )
152 CALL CHKXER( 'sgeqr2', INFOT, NOUT, LERR, OK )
153 INFOT = 2
154 CALL SGEQR2( 0, -1, A, 1, B, W, INFO )
155 CALL CHKXER( 'sgeqr2', INFOT, NOUT, LERR, OK )
156 INFOT = 4
157 CALL SGEQR2( 2, 1, A, 1, B, W, INFO )
158 CALL CHKXER( 'sgeqr2', INFOT, NOUT, LERR, OK )
159*
160* SGEQR2P
161*
162 SRNAMT = 'sgeqr2p'
163 INFOT = 1
164 CALL SGEQR2P( -1, 0, A, 1, B, W, INFO )
165 CALL CHKXER( 'sgeqr2p', INFOT, NOUT, LERR, OK )
166 INFOT = 2
167 CALL SGEQR2P( 0, -1, A, 1, B, W, INFO )
168 CALL CHKXER( 'sgeqr2p', INFOT, NOUT, LERR, OK )
169 INFOT = 4
170 CALL SGEQR2P( 2, 1, A, 1, B, W, INFO )
171 CALL CHKXER( 'sgeqr2p', INFOT, NOUT, LERR, OK )
172*
173* SGEQRS
174*
175 SRNAMT = 'sgeqrs'
176 INFOT = 1
177 CALL SGEQRS( -1, 0, 0, A, 1, X, B, 1, W, 1, INFO )
178 CALL CHKXER( 'sgeqrs', INFOT, NOUT, LERR, OK )
179 INFOT = 2
180 CALL SGEQRS( 0, -1, 0, A, 1, X, B, 1, W, 1, INFO )
181 CALL CHKXER( 'sgeqrs', INFOT, NOUT, LERR, OK )
182 INFOT = 2
183 CALL SGEQRS( 1, 2, 0, A, 2, X, B, 2, W, 1, INFO )
184 CALL CHKXER( 'sgeqrs', INFOT, NOUT, LERR, OK )
185 INFOT = 3
186 CALL SGEQRS( 0, 0, -1, A, 1, X, B, 1, W, 1, INFO )
187 CALL CHKXER( 'sgeqrs', INFOT, NOUT, LERR, OK )
188 INFOT = 5
189 CALL SGEQRS( 2, 1, 0, A, 1, X, B, 2, W, 1, INFO )
190 CALL CHKXER( 'sgeqrs', INFOT, NOUT, LERR, OK )
191 INFOT = 8
192 CALL SGEQRS( 2, 1, 0, A, 2, X, B, 1, W, 1, INFO )
193 CALL CHKXER( 'sgeqrs', INFOT, NOUT, LERR, OK )
194 INFOT = 10
195 CALL SGEQRS( 1, 1, 2, A, 1, X, B, 1, W, 1, INFO )
196 CALL CHKXER( 'sgeqrs', INFOT, NOUT, LERR, OK )
197*
198* SORGQR
199*
200 SRNAMT = 'sorgqr'
201 INFOT = 1
202 CALL SORGQR( -1, 0, 0, A, 1, X, W, 1, INFO )
203 CALL CHKXER( 'sorgqr', INFOT, NOUT, LERR, OK )
204 INFOT = 2
205 CALL SORGQR( 0, -1, 0, A, 1, X, W, 1, INFO )
206 CALL CHKXER( 'sorgqr', INFOT, NOUT, LERR, OK )
207 INFOT = 2
208 CALL SORGQR( 1, 2, 0, A, 1, X, W, 2, INFO )
209 CALL CHKXER( 'sorgqr', INFOT, NOUT, LERR, OK )
210 INFOT = 3
211 CALL SORGQR( 0, 0, -1, A, 1, X, W, 1, INFO )
212 CALL CHKXER( 'sorgqr', INFOT, NOUT, LERR, OK )
213 INFOT = 3
214 CALL SORGQR( 1, 1, 2, A, 1, X, W, 1, INFO )
215 CALL CHKXER( 'sorgqr', INFOT, NOUT, LERR, OK )
216 INFOT = 5
217 CALL SORGQR( 2, 2, 0, A, 1, X, W, 2, INFO )
218 CALL CHKXER( 'sorgqr', INFOT, NOUT, LERR, OK )
219 INFOT = 8
220 CALL SORGQR( 2, 2, 0, A, 2, X, W, 1, INFO )
221 CALL CHKXER( 'sorgqr', INFOT, NOUT, LERR, OK )
222*
223* SORG2R
224*
225 SRNAMT = 'sorg2r'
226 INFOT = 1
227 CALL SORG2R( -1, 0, 0, A, 1, X, W, INFO )
228 CALL CHKXER( 'sorg2r', INFOT, NOUT, LERR, OK )
229 INFOT = 2
230 CALL SORG2R( 0, -1, 0, A, 1, X, W, INFO )
231 CALL CHKXER( 'sorg2r', INFOT, NOUT, LERR, OK )
232 INFOT = 2
233 CALL SORG2R( 1, 2, 0, A, 1, X, W, INFO )
234 CALL CHKXER( 'sorg2r', INFOT, NOUT, LERR, OK )
235 INFOT = 3
236 CALL SORG2R( 0, 0, -1, A, 1, X, W, INFO )
237 CALL CHKXER( 'sorg2r', INFOT, NOUT, LERR, OK )
238 INFOT = 3
239 CALL SORG2R( 2, 1, 2, A, 2, X, W, INFO )
240 CALL CHKXER( 'sorg2r', INFOT, NOUT, LERR, OK )
241 INFOT = 5
242 CALL SORG2R( 2, 1, 0, A, 1, X, W, INFO )
243 CALL CHKXER( 'sorg2r', INFOT, NOUT, LERR, OK )
244*
245* SORMQR
246*
247 SRNAMT = 'sormqr'
248 INFOT = 1
249 CALL SORMQR( '/', 'n', 0, 0, 0, A, 1, X, AF, 1, W, 1, INFO )
250 CALL CHKXER( 'sormqr', INFOT, NOUT, LERR, OK )
251 INFOT = 2
252 CALL SORMQR( 'l', '/', 0, 0, 0, A, 1, X, AF, 1, W, 1, INFO )
253 CALL CHKXER( 'sormqr', INFOT, NOUT, LERR, OK )
254 INFOT = 3
255 CALL SORMQR( 'l', 'n', -1, 0, 0, A, 1, X, AF, 1, W, 1, INFO )
256 CALL CHKXER( 'sormqr', INFOT, NOUT, LERR, OK )
257 INFOT = 4
258 CALL SORMQR( 'l', 'n', 0, -1, 0, A, 1, X, AF, 1, W, 1, INFO )
259 CALL CHKXER( 'sormqr', INFOT, NOUT, LERR, OK )
260 INFOT = 5
261 CALL SORMQR( 'l', 'n', 0, 0, -1, A, 1, X, AF, 1, W, 1, INFO )
262 CALL CHKXER( 'sormqr', INFOT, NOUT, LERR, OK )
263 INFOT = 5
264 CALL SORMQR( 'l', 'n', 0, 1, 1, A, 1, X, AF, 1, W, 1, INFO )
265 CALL CHKXER( 'sormqr', INFOT, NOUT, LERR, OK )
266 INFOT = 5
267 CALL SORMQR( 'r', 'n', 1, 0, 1, A, 1, X, AF, 1, W, 1, INFO )
268 CALL CHKXER( 'sormqr', INFOT, NOUT, LERR, OK )
269 INFOT = 7
270 CALL SORMQR( 'l', 'n', 2, 1, 0, A, 1, X, AF, 2, W, 1, INFO )
271 CALL CHKXER( 'sormqr', INFOT, NOUT, LERR, OK )
272 INFOT = 7
273 CALL SORMQR( 'r', 'n', 1, 2, 0, A, 1, X, AF, 1, W, 1, INFO )
274 CALL CHKXER( 'sormqr', INFOT, NOUT, LERR, OK )
275 INFOT = 10
276 CALL SORMQR( 'l', 'n', 2, 1, 0, A, 2, X, AF, 1, W, 1, INFO )
277 CALL CHKXER( 'sormqr', INFOT, NOUT, LERR, OK )
278 INFOT = 12
279 CALL SORMQR( 'l', 'n', 1, 2, 0, A, 1, X, AF, 1, W, 1, INFO )
280 CALL CHKXER( 'sormqr', INFOT, NOUT, LERR, OK )
281 INFOT = 12
282 CALL SORMQR( 'r', 'n', 2, 1, 0, A, 1, X, AF, 2, W, 1, INFO )
283 CALL CHKXER( 'sormqr', INFOT, NOUT, LERR, OK )
284*
285* SORM2R
286*
287 SRNAMT = 'sorm2r'
288 INFOT = 1
289 CALL SORM2R( '/', 'n', 0, 0, 0, A, 1, X, AF, 1, W, INFO )
290 CALL CHKXER( 'sorm2r', INFOT, NOUT, LERR, OK )
291 INFOT = 2
292 CALL SORM2R( 'l', '/', 0, 0, 0, A, 1, X, AF, 1, W, INFO )
293 CALL CHKXER( 'sorm2r', INFOT, NOUT, LERR, OK )
294 INFOT = 3
295 CALL SORM2R( 'l', 'n', -1, 0, 0, A, 1, X, AF, 1, W, INFO )
296 CALL CHKXER( 'sorm2r', INFOT, NOUT, LERR, OK )
297 INFOT = 4
298 CALL SORM2R( 'l', 'n', 0, -1, 0, A, 1, X, AF, 1, W, INFO )
299 CALL CHKXER( 'sorm2r', INFOT, NOUT, LERR, OK )
300 INFOT = 5
301 CALL SORM2R( 'l', 'n', 0, 0, -1, A, 1, X, AF, 1, W, INFO )
302 CALL CHKXER( 'sorm2r', INFOT, NOUT, LERR, OK )
303 INFOT = 5
304 CALL SORM2R( 'l', 'n', 0, 1, 1, A, 1, X, AF, 1, W, INFO )
305 CALL CHKXER( 'sorm2r', INFOT, NOUT, LERR, OK )
306 INFOT = 5
307 CALL SORM2R( 'r', 'n', 1, 0, 1, A, 1, X, AF, 1, W, INFO )
308 CALL CHKXER( 'sorm2r', INFOT, NOUT, LERR, OK )
309 INFOT = 7
310 CALL SORM2R( 'l', 'n', 2, 1, 0, A, 1, X, AF, 2, W, INFO )
311 CALL CHKXER( 'sorm2r', INFOT, NOUT, LERR, OK )
312 INFOT = 7
313 CALL SORM2R( 'r', 'n', 1, 2, 0, A, 1, X, AF, 1, W, INFO )
314 CALL CHKXER( 'sorm2r', INFOT, NOUT, LERR, OK )
315 INFOT = 10
316 CALL SORM2R( 'l', 'n', 2, 1, 0, A, 2, X, AF, 1, W, INFO )
317 CALL CHKXER( 'sorm2r', INFOT, NOUT, LERR, OK )
318*
319* Print a summary line.
320*
321 CALL ALAESM( PATH, OK, NOUT )
322*
323 RETURN
324*
325* End of SERRQR
326*
327 END
subroutine chkxer(srnamt, infot, nout, lerr, ok)
Definition cblat2.f:3196
subroutine alaesm(path, ok, nout)
ALAESM
Definition alaesm.f:63
subroutine sgeqrf(m, n, a, lda, tau, work, lwork, info)
SGEQRF
Definition sgeqrf.f:146
subroutine sgeqrfp(m, n, a, lda, tau, work, lwork, info)
SGEQRFP
Definition sgeqrfp.f:149
subroutine sgeqr2(m, n, a, lda, tau, work, info)
SGEQR2 computes the QR factorization of a general rectangular matrix using an unblocked algorithm.
Definition sgeqr2.f:130
subroutine sgeqr2p(m, n, a, lda, tau, work, info)
SGEQR2P computes the QR factorization of a general rectangular matrix with non-negative diagonal elem...
Definition sgeqr2p.f:134
subroutine sorg2r(m, n, k, a, lda, tau, work, info)
SORG2R generates all or part of the orthogonal matrix Q from a QR factorization determined by sgeqrf ...
Definition sorg2r.f:114
subroutine sormqr(side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
SORMQR
Definition sormqr.f:168
subroutine sorgqr(m, n, k, a, lda, tau, work, lwork, info)
SORGQR
Definition sorgqr.f:128
subroutine sorm2r(side, trans, m, n, k, a, lda, tau, c, ldc, work, info)
SORM2R multiplies a general matrix by the orthogonal matrix from a QR factorization determined by sge...
Definition sorm2r.f:159
subroutine sgeqrs(m, n, nrhs, a, lda, tau, b, ldb, work, lwork, info)
SGEQRS
Definition sgeqrs.f:121
subroutine serrqr(path, nunit)
SERRQR
Definition serrqr.f:55