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 = 'ZUNGQR'
178 infot = 1
179 CALL zungqr( -1, 0, 0, a, 1, x, w, 1, info )
180 CALL chkxer(
'ZUNGQR', infot, nout, lerr, ok )
181 infot = 2
182 CALL zungqr( 0, -1, 0, a, 1, x, w, 1, info )
183 CALL chkxer(
'ZUNGQR', infot, nout, lerr, ok )
184 infot = 2
185 CALL zungqr( 1, 2, 0, a, 1, x, w, 2, info )
186 CALL chkxer(
'ZUNGQR', infot, nout, lerr, ok )
187 infot = 3
188 CALL zungqr( 0, 0, -1, a, 1, x, w, 1, info )
189 CALL chkxer(
'ZUNGQR', infot, nout, lerr, ok )
190 infot = 3
191 CALL zungqr( 1, 1, 2, a, 1, x, w, 1, info )
192 CALL chkxer(
'ZUNGQR', infot, nout, lerr, ok )
193 infot = 5
194 CALL zungqr( 2, 2, 0, a, 1, x, w, 2, info )
195 CALL chkxer(
'ZUNGQR', infot, nout, lerr, ok )
196 infot = 8
197 CALL zungqr( 2, 2, 0, a, 2, x, w, 1, info )
198 CALL chkxer(
'ZUNGQR', infot, nout, lerr, ok )
199
200
201
202 srnamt = 'ZUNG2R'
203 infot = 1
204 CALL zung2r( -1, 0, 0, a, 1, x, w, info )
205 CALL chkxer(
'ZUNG2R', infot, nout, lerr, ok )
206 infot = 2
207 CALL zung2r( 0, -1, 0, a, 1, x, w, info )
208 CALL chkxer(
'ZUNG2R', infot, nout, lerr, ok )
209 infot = 2
210 CALL zung2r( 1, 2, 0, a, 1, x, w, info )
211 CALL chkxer(
'ZUNG2R', infot, nout, lerr, ok )
212 infot = 3
213 CALL zung2r( 0, 0, -1, a, 1, x, w, info )
214 CALL chkxer(
'ZUNG2R', infot, nout, lerr, ok )
215 infot = 3
216 CALL zung2r( 2, 1, 2, a, 2, x, w, info )
217 CALL chkxer(
'ZUNG2R', infot, nout, lerr, ok )
218 infot = 5
219 CALL zung2r( 2, 1, 0, a, 1, x, w, info )
220 CALL chkxer(
'ZUNG2R', infot, nout, lerr, ok )
221
222
223
224 srnamt = 'ZUNMQR'
225 infot = 1
226 CALL zunmqr(
'/',
'N', 0, 0, 0, a, 1, x, af, 1, w, 1, info )
227 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
228 infot = 2
229 CALL zunmqr(
'L',
'/', 0, 0, 0, a, 1, x, af, 1, w, 1, info )
230 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
231 infot = 3
232 CALL zunmqr(
'L',
'N', -1, 0, 0, a, 1, x, af, 1, w, 1, info )
233 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
234 infot = 4
235 CALL zunmqr(
'L',
'N', 0, -1, 0, a, 1, x, af, 1, w, 1, info )
236 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
237 infot = 5
238 CALL zunmqr(
'L',
'N', 0, 0, -1, a, 1, x, af, 1, w, 1, info )
239 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
240 infot = 5
241 CALL zunmqr(
'L',
'N', 0, 1, 1, a, 1, x, af, 1, w, 1, info )
242 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
243 infot = 5
244 CALL zunmqr(
'R',
'N', 1, 0, 1, a, 1, x, af, 1, w, 1, info )
245 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
246 infot = 7
247 CALL zunmqr(
'L',
'N', 2, 1, 0, a, 1, x, af, 2, w, 1, info )
248 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
249 infot = 7
250 CALL zunmqr(
'R',
'N', 1, 2, 0, a, 1, x, af, 1, w, 1, info )
251 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
252 infot = 10
253 CALL zunmqr(
'L',
'N', 2, 1, 0, a, 2, x, af, 1, w, 1, info )
254 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
255 infot = 12
256 CALL zunmqr(
'L',
'N', 1, 2, 0, a, 1, x, af, 1, w, 1, info )
257 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
258 infot = 12
259 CALL zunmqr(
'R',
'N', 2, 1, 0, a, 1, x, af, 2, w, 1, info )
260 CALL chkxer(
'ZUNMQR', infot, nout, lerr, ok )
261
262
263
264 srnamt = 'ZUNM2R'
265 infot = 1
266 CALL zunm2r(
'/',
'N', 0, 0, 0, a, 1, x, af, 1, w, info )
267 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
268 infot = 2
269 CALL zunm2r(
'L',
'/', 0, 0, 0, a, 1, x, af, 1, w, info )
270 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
271 infot = 3
272 CALL zunm2r(
'L',
'N', -1, 0, 0, a, 1, x, af, 1, w, info )
273 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
274 infot = 4
275 CALL zunm2r(
'L',
'N', 0, -1, 0, a, 1, x, af, 1, w, info )
276 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
277 infot = 5
278 CALL zunm2r(
'L',
'N', 0, 0, -1, a, 1, x, af, 1, w, info )
279 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
280 infot = 5
281 CALL zunm2r(
'L',
'N', 0, 1, 1, a, 1, x, af, 1, w, info )
282 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
283 infot = 5
284 CALL zunm2r(
'R',
'N', 1, 0, 1, a, 1, x, af, 1, w, info )
285 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
286 infot = 7
287 CALL zunm2r(
'L',
'N', 2, 1, 0, a, 1, x, af, 2, w, info )
288 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
289 infot = 7
290 CALL zunm2r(
'R',
'N', 1, 2, 0, a, 1, x, af, 1, w, info )
291 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
292 infot = 10
293 CALL zunm2r(
'L',
'N', 2, 1, 0, a, 2, x, af, 1, w, info )
294 CALL chkxer(
'ZUNM2R', infot, nout, lerr, ok )
295
296
297
298 CALL alaesm( path, ok, nout )
299
300 RETURN
301
302
303
subroutine alaesm(path, ok, nout)
ALAESM
subroutine chkxer(srnamt, infot, nout, lerr, ok)
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 zgeqrf(m, n, a, lda, tau, work, lwork, info)
ZGEQRF
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