55
56
57
58
59
60
61 CHARACTER*3 PATH
62 INTEGER NUNIT
63
64
65
66
67
68 INTEGER NMAX
69 parameter( nmax = 2 )
70
71
72 INTEGER I, INFO, J
73
74
75 COMPLEX*16 A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
76 $ W( NMAX ), X( NMAX )
77
78
82
83
84 LOGICAL LERR, OK
85 CHARACTER*32 SRNAMT
86 INTEGER INFOT, NOUT
87
88
89 COMMON / infoc / infot, nout, ok, lerr
90 COMMON / srnamc / srnamt
91
92
93 INTRINSIC dble, dcmplx
94
95
96
97 nout = nunit
98 WRITE( nout, fmt = * )
99
100
101
102 DO 20 j = 1, nmax
103 DO 10 i = 1, nmax
104 a( i, j ) = dcmplx( 1.d0 / dble( i+j ),
105 $ -1.d0 / dble( i+j ) )
106 af( i, j ) = dcmplx( 1.d0 / dble( i+j ),
107 $ -1.d0 / dble( i+j ) )
108 10 CONTINUE
109 b( j ) = 0.d0
110 w( j ) = 0.d0
111 x( j ) = 0.d0
112 20 CONTINUE
113 ok = .true.
114
115
116
117
118
119 srnamt = 'ZGEQRF'
120 infot = 1
121 CALL zgeqrf( -1, 0, a, 1, b, w, 1, info )
122 CALL chkxer(
'ZGEQRF', infot, nout, lerr, ok )
123 infot = 2
124 CALL zgeqrf( 0, -1, a, 1, b, w, 1, info )
125 CALL chkxer(
'ZGEQRF', infot, nout, lerr, ok )
126 infot = 4
127 CALL zgeqrf( 2, 1, a, 1, b, w, 1, info )
128 CALL chkxer(
'ZGEQRF', infot, nout, lerr, ok )
129 infot = 7
130 CALL zgeqrf( 1, 2, a, 1, b, w, 1, info )
131 CALL chkxer(
'ZGEQRF', infot, nout, lerr, ok )
132
133
134
135 srnamt = 'ZGEQRFP'
136 infot = 1
137 CALL zgeqrfp( -1, 0, a, 1, b, w, 1, info )
138 CALL chkxer(
'ZGEQRFP', infot, nout, lerr, ok )
139 infot = 2
140 CALL zgeqrfp( 0, -1, a, 1, b, w, 1, info )
141 CALL chkxer(
'ZGEQRFP', infot, nout, lerr, ok )
142 infot = 4
143 CALL zgeqrfp( 2, 1, a, 1, b, w, 1, info )
144 CALL chkxer(
'ZGEQRFP', infot, nout, lerr, ok )
145 infot = 7
146 CALL zgeqrfp( 1, 2, a, 1, b, w, 1, info )
147 CALL chkxer(
'ZGEQRFP', infot, nout, lerr, ok )
148
149
150
151 srnamt = 'ZGEQR2'
152 infot = 1
153 CALL zgeqr2( -1, 0, a, 1, b, w, info )
154 CALL chkxer(
'ZGEQR2', infot, nout, lerr, ok )
155 infot = 2
156 CALL zgeqr2( 0, -1, a, 1, b, w, info )
157 CALL chkxer(
'ZGEQR2', infot, nout, lerr, ok )
158 infot = 4
159 CALL zgeqr2( 2, 1, a, 1, b, w, info )
160 CALL chkxer(
'ZGEQR2', infot, nout, lerr, ok )
161
162
163
164 srnamt = 'ZGEQR2P'
165 infot = 1
166 CALL zgeqr2p( -1, 0, a, 1, b, w, info )
167 CALL chkxer(
'ZGEQR2P', infot, nout, lerr, ok )
168 infot = 2
169 CALL zgeqr2p( 0, -1, a, 1, b, w, info )
170 CALL chkxer(
'ZGEQR2P', infot, nout, lerr, ok )
171 infot = 4
172 CALL zgeqr2p( 2, 1, a, 1, b, w, info )
173 CALL chkxer(
'ZGEQR2P', infot, nout, lerr, ok )
174
175
176
177 srnamt = 'ZGEQRS'
178 infot = 1
179 CALL zgeqrs( -1, 0, 0, a, 1, x, b, 1, w, 1, info )
180 CALL chkxer(
'ZGEQRS', infot, nout, lerr, ok )
181 infot = 2
182 CALL zgeqrs( 0, -1, 0, a, 1, x, b, 1, w, 1, info )
183 CALL chkxer(
'ZGEQRS', infot, nout, lerr, ok )
184 infot = 2
185 CALL zgeqrs( 1, 2, 0, a, 2, x, b, 2, w, 1, info )
186 CALL chkxer(
'ZGEQRS', infot, nout, lerr, ok )
187 infot = 3
188 CALL zgeqrs( 0, 0, -1, a, 1, x, b, 1, w, 1, info )
189 CALL chkxer(
'ZGEQRS', infot, nout, lerr, ok )
190 infot = 5
191 CALL zgeqrs( 2, 1, 0, a, 1, x, b, 2, w, 1, info )
192 CALL chkxer(
'ZGEQRS', infot, nout, lerr, ok )
193 infot = 8
194 CALL zgeqrs( 2, 1, 0, a, 2, x, b, 1, w, 1, info )
195 CALL chkxer(
'ZGEQRS', infot, nout, lerr, ok )
196 infot = 10
197 CALL zgeqrs( 1, 1, 2, a, 1, x, b, 1, w, 1, info )
198 CALL chkxer(
'ZGEQRS', infot, nout, lerr, ok )
199
200
201
202 srnamt = 'ZUNGQR'
203 infot = 1
204 CALL zungqr( -1, 0, 0, a, 1, x, w, 1, info )
205 CALL chkxer(
'ZUNGQR', infot, nout, lerr, ok )
206 infot = 2
207 CALL zungqr( 0, -1, 0, a, 1, x, w, 1, info )
208 CALL chkxer(
'ZUNGQR', infot, nout, lerr, ok )
209 infot = 2
210 CALL zungqr( 1, 2, 0, a, 1, x, w, 2, info )
211 CALL chkxer(
'ZUNGQR', infot, nout, lerr, ok )
212 infot = 3
213 CALL zungqr( 0, 0, -1, a, 1, x, w, 1, info )
214 CALL chkxer(
'ZUNGQR', infot, nout, lerr, ok )
215 infot = 3
216 CALL zungqr( 1, 1, 2, a, 1, x, w, 1, info )
217 CALL chkxer(
'ZUNGQR', infot, nout, lerr, ok )
218 infot = 5
219 CALL zungqr( 2, 2, 0, a, 1, x, w, 2, info )
220 CALL chkxer(
'ZUNGQR', infot, nout, lerr, ok )
221 infot = 8
222 CALL zungqr( 2, 2, 0, a, 2, x, w, 1, info )
223 CALL chkxer(
'ZUNGQR', infot, nout, lerr, ok )
224
225
226
227 srnamt = 'ZUNG2R'
228 infot = 1
229 CALL zung2r( -1, 0, 0, a, 1, x, w, info )
230 CALL chkxer(
'ZUNG2R', infot, nout, lerr, ok )
231 infot = 2
232 CALL zung2r( 0, -1, 0, a, 1, x, w, info )
233 CALL chkxer(
'ZUNG2R', infot, nout, lerr, ok )
234 infot = 2
235 CALL zung2r( 1, 2, 0, a, 1, x, w, info )
236 CALL chkxer(
'ZUNG2R', infot, nout, lerr, ok )
237 infot = 3
238 CALL zung2r( 0, 0, -1, a, 1, x, w, info )
239 CALL chkxer(
'ZUNG2R', infot, nout, lerr, ok )
240 infot = 3
241 CALL zung2r( 2, 1, 2, a, 2, x, w, info )
242 CALL chkxer(
'ZUNG2R', infot, nout, lerr, ok )
243 infot = 5
244 CALL zung2r( 2, 1, 0, a, 1, x, w, info )
245 CALL chkxer(
'ZUNG2R', infot, nout, lerr, ok )
246
247
248
249 srnamt = 'ZUNMQR'
250 infot = 1
251 CALL zunmqr(
'/',
'N', 0, 0, 0, a, 1, x, af, 1, w, 1, info )
252 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
253 infot = 2
254 CALL zunmqr(
'L',
'/', 0, 0, 0, a, 1, x, af, 1, w, 1, info )
255 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
256 infot = 3
257 CALL zunmqr(
'L',
'N', -1, 0, 0, a, 1, x, af, 1, w, 1, info )
258 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
259 infot = 4
260 CALL zunmqr(
'L',
'N', 0, -1, 0, a, 1, x, af, 1, w, 1, info )
261 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
262 infot = 5
263 CALL zunmqr(
'L',
'N', 0, 0, -1, a, 1, x, af, 1, w, 1, info )
264 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
265 infot = 5
266 CALL zunmqr(
'L',
'N', 0, 1, 1, a, 1, x, af, 1, w, 1, info )
267 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
268 infot = 5
269 CALL zunmqr(
'R',
'N', 1, 0, 1, a, 1, x, af, 1, w, 1, info )
270 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
271 infot = 7
272 CALL zunmqr(
'L',
'N', 2, 1, 0, a, 1, x, af, 2, w, 1, info )
273 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
274 infot = 7
275 CALL zunmqr(
'R',
'N', 1, 2, 0, a, 1, x, af, 1, w, 1, info )
276 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
277 infot = 10
278 CALL zunmqr(
'L',
'N', 2, 1, 0, a, 2, x, af, 1, w, 1, info )
279 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
280 infot = 12
281 CALL zunmqr(
'L',
'N', 1, 2, 0, a, 1, x, af, 1, w, 1, info )
282 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
283 infot = 12
284 CALL zunmqr(
'R',
'N', 2, 1, 0, a, 1, x, af, 2, w, 1, info )
285 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
286
287
288
289 srnamt = 'ZUNM2R'
290 infot = 1
291 CALL zunm2r(
'/',
'N', 0, 0, 0, a, 1, x, af, 1, w, info )
292 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
293 infot = 2
294 CALL zunm2r(
'L',
'/', 0, 0, 0, a, 1, x, af, 1, w, info )
295 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
296 infot = 3
297 CALL zunm2r(
'L',
'N', -1, 0, 0, a, 1, x, af, 1, w, info )
298 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
299 infot = 4
300 CALL zunm2r(
'L',
'N', 0, -1, 0, a, 1, x, af, 1, w, info )
301 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
302 infot = 5
303 CALL zunm2r(
'L',
'N', 0, 0, -1, a, 1, x, af, 1, w, info )
304 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
305 infot = 5
306 CALL zunm2r(
'L',
'N', 0, 1, 1, a, 1, x, af, 1, w, info )
307 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
308 infot = 5
309 CALL zunm2r(
'R',
'N', 1, 0, 1, a, 1, x, af, 1, w, info )
310 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
311 infot = 7
312 CALL zunm2r(
'L',
'N', 2, 1, 0, a, 1, x, af, 2, w, info )
313 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
314 infot = 7
315 CALL zunm2r(
'R',
'N', 1, 2, 0, a, 1, x, af, 1, w, info )
316 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
317 infot = 10
318 CALL zunm2r(
'L',
'N', 2, 1, 0, a, 2, x, af, 1, w, info )
319 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
320
321
322
323 CALL alaesm( path, ok, nout )
324
325 RETURN
326
327
328
subroutine chkxer(SRNAMT, INFOT, NOUT, LERR, OK)
subroutine alaesm(PATH, OK, NOUT)
ALAESM
subroutine zgeqrs(M, N, NRHS, A, LDA, TAU, B, LDB, WORK, LWORK, INFO)
ZGEQRS
subroutine zgeqr2(M, N, A, LDA, TAU, WORK, INFO)
ZGEQR2 computes the QR factorization of a general rectangular matrix using an unblocked algorithm.
subroutine zgeqr2p(M, N, A, LDA, TAU, WORK, INFO)
ZGEQR2P computes the QR factorization of a general rectangular matrix with non-negative diagonal elem...
subroutine zgeqrfp(M, N, A, LDA, TAU, WORK, LWORK, INFO)
ZGEQRFP
subroutine zung2r(M, N, K, A, LDA, TAU, WORK, INFO)
ZUNG2R
subroutine zungqr(M, N, K, A, LDA, TAU, WORK, LWORK, INFO)
ZUNGQR
subroutine zunm2r(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO)
ZUNM2R multiplies a general matrix by the unitary matrix from a QR factorization determined by cgeqrf...
subroutine zunmqr(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
ZUNMQR
subroutine zgeqrf(M, N, A, LDA, TAU, WORK, LWORK, INFO)
ZGEQRF VARIANT: left-looking Level 3 BLAS of the algorithm.