LAPACK 3.11.0
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches

◆ derrqr()

subroutine derrqr ( character*3  PATH,
integer  NUNIT 
)

DERRQR

Purpose:
 DERRQR tests the error exits for the DOUBLE PRECISION routines
 that use the QR decomposition of a general matrix.
Parameters
[in]PATH
          PATH is CHARACTER*3
          The LAPACK path name for the routines to be tested.
[in]NUNIT
          NUNIT is INTEGER
          The unit number for output.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

Definition at line 54 of file derrqr.f.

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 DOUBLE PRECISION A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
76 $ W( NMAX ), X( NMAX )
77* ..
78* .. External Subroutines ..
79 EXTERNAL alaesm, chkxer, dgeqr2, dgeqr2p, dgeqrf,
81 $ dormqr
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 dble
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.d0 / dble( i+j )
105 af( i, j ) = 1.d0 / dble( i+j )
106 10 CONTINUE
107 b( j ) = 0.d0
108 w( j ) = 0.d0
109 x( j ) = 0.d0
110 20 CONTINUE
111 ok = .true.
112*
113* Error exits for QR factorization
114*
115* DGEQRF
116*
117 srnamt = 'DGEQRF'
118 infot = 1
119 CALL dgeqrf( -1, 0, a, 1, b, w, 1, info )
120 CALL chkxer( 'DGEQRF', infot, nout, lerr, ok )
121 infot = 2
122 CALL dgeqrf( 0, -1, a, 1, b, w, 1, info )
123 CALL chkxer( 'DGEQRF', infot, nout, lerr, ok )
124 infot = 4
125 CALL dgeqrf( 2, 1, a, 1, b, w, 1, info )
126 CALL chkxer( 'DGEQRF', infot, nout, lerr, ok )
127 infot = 7
128 CALL dgeqrf( 1, 2, a, 1, b, w, 1, info )
129 CALL chkxer( 'DGEQRF', infot, nout, lerr, ok )
130*
131* DGEQRFP
132*
133 srnamt = 'DGEQRFP'
134 infot = 1
135 CALL dgeqrfp( -1, 0, a, 1, b, w, 1, info )
136 CALL chkxer( 'DGEQRFP', infot, nout, lerr, ok )
137 infot = 2
138 CALL dgeqrfp( 0, -1, a, 1, b, w, 1, info )
139 CALL chkxer( 'DGEQRFP', infot, nout, lerr, ok )
140 infot = 4
141 CALL dgeqrfp( 2, 1, a, 1, b, w, 1, info )
142 CALL chkxer( 'DGEQRFP', infot, nout, lerr, ok )
143 infot = 7
144 CALL dgeqrfp( 1, 2, a, 1, b, w, 1, info )
145 CALL chkxer( 'DGEQRFP', infot, nout, lerr, ok )
146*
147* DGEQR2
148*
149 srnamt = 'DGEQR2'
150 infot = 1
151 CALL dgeqr2( -1, 0, a, 1, b, w, info )
152 CALL chkxer( 'DGEQR2', infot, nout, lerr, ok )
153 infot = 2
154 CALL dgeqr2( 0, -1, a, 1, b, w, info )
155 CALL chkxer( 'DGEQR2', infot, nout, lerr, ok )
156 infot = 4
157 CALL dgeqr2( 2, 1, a, 1, b, w, info )
158 CALL chkxer( 'DGEQR2', infot, nout, lerr, ok )
159*
160* DGEQR2P
161*
162 srnamt = 'DGEQR2P'
163 infot = 1
164 CALL dgeqr2p( -1, 0, a, 1, b, w, info )
165 CALL chkxer( 'DGEQR2P', infot, nout, lerr, ok )
166 infot = 2
167 CALL dgeqr2p( 0, -1, a, 1, b, w, info )
168 CALL chkxer( 'DGEQR2P', infot, nout, lerr, ok )
169 infot = 4
170 CALL dgeqr2p( 2, 1, a, 1, b, w, info )
171 CALL chkxer( 'DGEQR2P', infot, nout, lerr, ok )
172*
173* DGEQRS
174*
175 srnamt = 'DGEQRS'
176 infot = 1
177 CALL dgeqrs( -1, 0, 0, a, 1, x, b, 1, w, 1, info )
178 CALL chkxer( 'DGEQRS', infot, nout, lerr, ok )
179 infot = 2
180 CALL dgeqrs( 0, -1, 0, a, 1, x, b, 1, w, 1, info )
181 CALL chkxer( 'DGEQRS', infot, nout, lerr, ok )
182 infot = 2
183 CALL dgeqrs( 1, 2, 0, a, 2, x, b, 2, w, 1, info )
184 CALL chkxer( 'DGEQRS', infot, nout, lerr, ok )
185 infot = 3
186 CALL dgeqrs( 0, 0, -1, a, 1, x, b, 1, w, 1, info )
187 CALL chkxer( 'DGEQRS', infot, nout, lerr, ok )
188 infot = 5
189 CALL dgeqrs( 2, 1, 0, a, 1, x, b, 2, w, 1, info )
190 CALL chkxer( 'DGEQRS', infot, nout, lerr, ok )
191 infot = 8
192 CALL dgeqrs( 2, 1, 0, a, 2, x, b, 1, w, 1, info )
193 CALL chkxer( 'DGEQRS', infot, nout, lerr, ok )
194 infot = 10
195 CALL dgeqrs( 1, 1, 2, a, 1, x, b, 1, w, 1, info )
196 CALL chkxer( 'DGEQRS', infot, nout, lerr, ok )
197*
198* DORGQR
199*
200 srnamt = 'DORGQR'
201 infot = 1
202 CALL dorgqr( -1, 0, 0, a, 1, x, w, 1, info )
203 CALL chkxer( 'DORGQR', infot, nout, lerr, ok )
204 infot = 2
205 CALL dorgqr( 0, -1, 0, a, 1, x, w, 1, info )
206 CALL chkxer( 'DORGQR', infot, nout, lerr, ok )
207 infot = 2
208 CALL dorgqr( 1, 2, 0, a, 1, x, w, 2, info )
209 CALL chkxer( 'DORGQR', infot, nout, lerr, ok )
210 infot = 3
211 CALL dorgqr( 0, 0, -1, a, 1, x, w, 1, info )
212 CALL chkxer( 'DORGQR', infot, nout, lerr, ok )
213 infot = 3
214 CALL dorgqr( 1, 1, 2, a, 1, x, w, 1, info )
215 CALL chkxer( 'DORGQR', infot, nout, lerr, ok )
216 infot = 5
217 CALL dorgqr( 2, 2, 0, a, 1, x, w, 2, info )
218 CALL chkxer( 'DORGQR', infot, nout, lerr, ok )
219 infot = 8
220 CALL dorgqr( 2, 2, 0, a, 2, x, w, 1, info )
221 CALL chkxer( 'DORGQR', infot, nout, lerr, ok )
222*
223* DORG2R
224*
225 srnamt = 'DORG2R'
226 infot = 1
227 CALL dorg2r( -1, 0, 0, a, 1, x, w, info )
228 CALL chkxer( 'DORG2R', infot, nout, lerr, ok )
229 infot = 2
230 CALL dorg2r( 0, -1, 0, a, 1, x, w, info )
231 CALL chkxer( 'DORG2R', infot, nout, lerr, ok )
232 infot = 2
233 CALL dorg2r( 1, 2, 0, a, 1, x, w, info )
234 CALL chkxer( 'DORG2R', infot, nout, lerr, ok )
235 infot = 3
236 CALL dorg2r( 0, 0, -1, a, 1, x, w, info )
237 CALL chkxer( 'DORG2R', infot, nout, lerr, ok )
238 infot = 3
239 CALL dorg2r( 2, 1, 2, a, 2, x, w, info )
240 CALL chkxer( 'DORG2R', infot, nout, lerr, ok )
241 infot = 5
242 CALL dorg2r( 2, 1, 0, a, 1, x, w, info )
243 CALL chkxer( 'DORG2R', infot, nout, lerr, ok )
244*
245* DORMQR
246*
247 srnamt = 'DORMQR'
248 infot = 1
249 CALL dormqr( '/', 'N', 0, 0, 0, a, 1, x, af, 1, w, 1, info )
250 CALL chkxer( 'DORMQR', infot, nout, lerr, ok )
251 infot = 2
252 CALL dormqr( 'L', '/', 0, 0, 0, a, 1, x, af, 1, w, 1, info )
253 CALL chkxer( 'DORMQR', infot, nout, lerr, ok )
254 infot = 3
255 CALL dormqr( 'L', 'N', -1, 0, 0, a, 1, x, af, 1, w, 1, info )
256 CALL chkxer( 'DORMQR', infot, nout, lerr, ok )
257 infot = 4
258 CALL dormqr( 'L', 'N', 0, -1, 0, a, 1, x, af, 1, w, 1, info )
259 CALL chkxer( 'DORMQR', infot, nout, lerr, ok )
260 infot = 5
261 CALL dormqr( 'L', 'N', 0, 0, -1, a, 1, x, af, 1, w, 1, info )
262 CALL chkxer( 'DORMQR', infot, nout, lerr, ok )
263 infot = 5
264 CALL dormqr( 'L', 'N', 0, 1, 1, a, 1, x, af, 1, w, 1, info )
265 CALL chkxer( 'DORMQR', infot, nout, lerr, ok )
266 infot = 5
267 CALL dormqr( 'R', 'N', 1, 0, 1, a, 1, x, af, 1, w, 1, info )
268 CALL chkxer( 'DORMQR', infot, nout, lerr, ok )
269 infot = 7
270 CALL dormqr( 'L', 'N', 2, 1, 0, a, 1, x, af, 2, w, 1, info )
271 CALL chkxer( 'DORMQR', infot, nout, lerr, ok )
272 infot = 7
273 CALL dormqr( 'R', 'N', 1, 2, 0, a, 1, x, af, 1, w, 1, info )
274 CALL chkxer( 'DORMQR', infot, nout, lerr, ok )
275 infot = 10
276 CALL dormqr( 'L', 'N', 2, 1, 0, a, 2, x, af, 1, w, 1, info )
277 CALL chkxer( 'DORMQR', infot, nout, lerr, ok )
278 infot = 12
279 CALL dormqr( 'L', 'N', 1, 2, 0, a, 1, x, af, 1, w, 1, info )
280 CALL chkxer( 'DORMQR', infot, nout, lerr, ok )
281 infot = 12
282 CALL dormqr( 'R', 'N', 2, 1, 0, a, 1, x, af, 2, w, 1, info )
283 CALL chkxer( 'DORMQR', infot, nout, lerr, ok )
284*
285* DORM2R
286*
287 srnamt = 'DORM2R'
288 infot = 1
289 CALL dorm2r( '/', 'N', 0, 0, 0, a, 1, x, af, 1, w, info )
290 CALL chkxer( 'DORM2R', infot, nout, lerr, ok )
291 infot = 2
292 CALL dorm2r( 'L', '/', 0, 0, 0, a, 1, x, af, 1, w, info )
293 CALL chkxer( 'DORM2R', infot, nout, lerr, ok )
294 infot = 3
295 CALL dorm2r( 'L', 'N', -1, 0, 0, a, 1, x, af, 1, w, info )
296 CALL chkxer( 'DORM2R', infot, nout, lerr, ok )
297 infot = 4
298 CALL dorm2r( 'L', 'N', 0, -1, 0, a, 1, x, af, 1, w, info )
299 CALL chkxer( 'DORM2R', infot, nout, lerr, ok )
300 infot = 5
301 CALL dorm2r( 'L', 'N', 0, 0, -1, a, 1, x, af, 1, w, info )
302 CALL chkxer( 'DORM2R', infot, nout, lerr, ok )
303 infot = 5
304 CALL dorm2r( 'L', 'N', 0, 1, 1, a, 1, x, af, 1, w, info )
305 CALL chkxer( 'DORM2R', infot, nout, lerr, ok )
306 infot = 5
307 CALL dorm2r( 'R', 'N', 1, 0, 1, a, 1, x, af, 1, w, info )
308 CALL chkxer( 'DORM2R', infot, nout, lerr, ok )
309 infot = 7
310 CALL dorm2r( 'L', 'N', 2, 1, 0, a, 1, x, af, 2, w, info )
311 CALL chkxer( 'DORM2R', infot, nout, lerr, ok )
312 infot = 7
313 CALL dorm2r( 'R', 'N', 1, 2, 0, a, 1, x, af, 1, w, info )
314 CALL chkxer( 'DORM2R', infot, nout, lerr, ok )
315 infot = 10
316 CALL dorm2r( 'L', 'N', 2, 1, 0, a, 2, x, af, 1, w, info )
317 CALL chkxer( 'DORM2R', infot, nout, lerr, ok )
318*
319* Print a summary line.
320*
321 CALL alaesm( path, ok, nout )
322*
323 RETURN
324*
325* End of DERRQR
326*
subroutine chkxer(SRNAMT, INFOT, NOUT, LERR, OK)
Definition: cblat2.f:3224
subroutine alaesm(PATH, OK, NOUT)
ALAESM
Definition: alaesm.f:63
subroutine dgeqrs(M, N, NRHS, A, LDA, TAU, B, LDB, WORK, LWORK, INFO)
DGEQRS
Definition: dgeqrs.f:121
subroutine dgeqrf(M, N, A, LDA, TAU, WORK, LWORK, INFO)
DGEQRF
Definition: dgeqrf.f:146
subroutine dgeqrfp(M, N, A, LDA, TAU, WORK, LWORK, INFO)
DGEQRFP
Definition: dgeqrfp.f:149
subroutine dgeqr2(M, N, A, LDA, TAU, WORK, INFO)
DGEQR2 computes the QR factorization of a general rectangular matrix using an unblocked algorithm.
Definition: dgeqr2.f:130
subroutine dgeqr2p(M, N, A, LDA, TAU, WORK, INFO)
DGEQR2P computes the QR factorization of a general rectangular matrix with non-negative diagonal elem...
Definition: dgeqr2p.f:134
subroutine dorg2r(M, N, K, A, LDA, TAU, WORK, INFO)
DORG2R generates all or part of the orthogonal matrix Q from a QR factorization determined by sgeqrf ...
Definition: dorg2r.f:114
subroutine dorgqr(M, N, K, A, LDA, TAU, WORK, LWORK, INFO)
DORGQR
Definition: dorgqr.f:128
subroutine dorm2r(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO)
DORM2R multiplies a general matrix by the orthogonal matrix from a QR factorization determined by sge...
Definition: dorm2r.f:159
subroutine dormqr(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
DORMQR
Definition: dormqr.f:167
Here is the call graph for this function:
Here is the caller graph for this function: