LAPACK  3.8.0
LAPACK: Linear Algebra PACKage
zerrlq.f
Go to the documentation of this file.
1 *> \brief \b ZERRLQ
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 ZERRLQ( 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 *> ZERRLQ tests the error exits for the COMPLEX*16 routines
25 *> that use the LQ 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 *> \date December 2016
52 *
53 *> \ingroup complex16_lin
54 *
55 * =====================================================================
56  SUBROUTINE zerrlq( PATH, NUNIT )
57 *
58 * -- LAPACK test routine (version 3.7.0) --
59 * -- LAPACK is a software package provided by Univ. of Tennessee, --
60 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
61 * December 2016
62 *
63 * .. Scalar Arguments ..
64  CHARACTER*3 PATH
65  INTEGER NUNIT
66 * ..
67 *
68 * =====================================================================
69 *
70 * .. Parameters ..
71  INTEGER NMAX
72  parameter( nmax = 2 )
73 * ..
74 * .. Local Scalars ..
75  INTEGER I, INFO, J
76 * ..
77 * .. Local Arrays ..
78  COMPLEX*16 A( nmax, nmax ), AF( nmax, nmax ), B( nmax ),
79  $ w( nmax ), x( nmax )
80 * ..
81 * .. External Subroutines ..
82  EXTERNAL alaesm, chkxer, zgelq2, zgelqf, zgelqs, zungl2,
83  $ zunglq, zunml2, zunmlq
84 * ..
85 * .. Scalars in Common ..
86  LOGICAL LERR, OK
87  CHARACTER*32 SRNAMT
88  INTEGER INFOT, NOUT
89 * ..
90 * .. Common blocks ..
91  COMMON / infoc / infot, nout, ok, lerr
92  COMMON / srnamc / srnamt
93 * ..
94 * .. Intrinsic Functions ..
95  INTRINSIC dble, dcmplx
96 * ..
97 * .. Executable Statements ..
98 *
99  nout = nunit
100  WRITE( nout, fmt = * )
101 *
102 * Set the variables to innocuous values.
103 *
104  DO 20 j = 1, nmax
105  DO 10 i = 1, nmax
106  a( i, j ) = dcmplx( 1.d0 / dble( i+j ),
107  $ -1.d0 / dble( i+j ) )
108  af( i, j ) = dcmplx( 1.d0 / dble( i+j ),
109  $ -1.d0 / dble( i+j ) )
110  10 CONTINUE
111  b( j ) = 0.d0
112  w( j ) = 0.d0
113  x( j ) = 0.d0
114  20 CONTINUE
115  ok = .true.
116 *
117 * Error exits for LQ factorization
118 *
119 * ZGELQF
120 *
121  srnamt = 'ZGELQF'
122  infot = 1
123  CALL zgelqf( -1, 0, a, 1, b, w, 1, info )
124  CALL chkxer( 'ZGELQF', infot, nout, lerr, ok )
125  infot = 2
126  CALL zgelqf( 0, -1, a, 1, b, w, 1, info )
127  CALL chkxer( 'ZGELQF', infot, nout, lerr, ok )
128  infot = 4
129  CALL zgelqf( 2, 1, a, 1, b, w, 2, info )
130  CALL chkxer( 'ZGELQF', infot, nout, lerr, ok )
131  infot = 7
132  CALL zgelqf( 2, 1, a, 2, b, w, 1, info )
133  CALL chkxer( 'ZGELQF', infot, nout, lerr, ok )
134 *
135 * ZGELQ2
136 *
137  srnamt = 'ZGELQ2'
138  infot = 1
139  CALL zgelq2( -1, 0, a, 1, b, w, info )
140  CALL chkxer( 'ZGELQ2', infot, nout, lerr, ok )
141  infot = 2
142  CALL zgelq2( 0, -1, a, 1, b, w, info )
143  CALL chkxer( 'ZGELQ2', infot, nout, lerr, ok )
144  infot = 4
145  CALL zgelq2( 2, 1, a, 1, b, w, info )
146  CALL chkxer( 'ZGELQ2', infot, nout, lerr, ok )
147 *
148 * ZGELQS
149 *
150  srnamt = 'ZGELQS'
151  infot = 1
152  CALL zgelqs( -1, 0, 0, a, 1, x, b, 1, w, 1, info )
153  CALL chkxer( 'ZGELQS', infot, nout, lerr, ok )
154  infot = 2
155  CALL zgelqs( 0, -1, 0, a, 1, x, b, 1, w, 1, info )
156  CALL chkxer( 'ZGELQS', infot, nout, lerr, ok )
157  infot = 2
158  CALL zgelqs( 2, 1, 0, a, 2, x, b, 1, w, 1, info )
159  CALL chkxer( 'ZGELQS', infot, nout, lerr, ok )
160  infot = 3
161  CALL zgelqs( 0, 0, -1, a, 1, x, b, 1, w, 1, info )
162  CALL chkxer( 'ZGELQS', infot, nout, lerr, ok )
163  infot = 5
164  CALL zgelqs( 2, 2, 0, a, 1, x, b, 2, w, 1, info )
165  CALL chkxer( 'ZGELQS', infot, nout, lerr, ok )
166  infot = 8
167  CALL zgelqs( 1, 2, 0, a, 1, x, b, 1, w, 1, info )
168  CALL chkxer( 'ZGELQS', infot, nout, lerr, ok )
169  infot = 10
170  CALL zgelqs( 1, 1, 2, a, 1, x, b, 1, w, 1, info )
171  CALL chkxer( 'ZGELQS', infot, nout, lerr, ok )
172 *
173 * ZUNGLQ
174 *
175  srnamt = 'ZUNGLQ'
176  infot = 1
177  CALL zunglq( -1, 0, 0, a, 1, x, w, 1, info )
178  CALL chkxer( 'ZUNGLQ', infot, nout, lerr, ok )
179  infot = 2
180  CALL zunglq( 0, -1, 0, a, 1, x, w, 1, info )
181  CALL chkxer( 'ZUNGLQ', infot, nout, lerr, ok )
182  infot = 2
183  CALL zunglq( 2, 1, 0, a, 2, x, w, 2, info )
184  CALL chkxer( 'ZUNGLQ', infot, nout, lerr, ok )
185  infot = 3
186  CALL zunglq( 0, 0, -1, a, 1, x, w, 1, info )
187  CALL chkxer( 'ZUNGLQ', infot, nout, lerr, ok )
188  infot = 3
189  CALL zunglq( 1, 1, 2, a, 1, x, w, 1, info )
190  CALL chkxer( 'ZUNGLQ', infot, nout, lerr, ok )
191  infot = 5
192  CALL zunglq( 2, 2, 0, a, 1, x, w, 2, info )
193  CALL chkxer( 'ZUNGLQ', infot, nout, lerr, ok )
194  infot = 8
195  CALL zunglq( 2, 2, 0, a, 2, x, w, 1, info )
196  CALL chkxer( 'ZUNGLQ', infot, nout, lerr, ok )
197 *
198 * ZUNGL2
199 *
200  srnamt = 'ZUNGL2'
201  infot = 1
202  CALL zungl2( -1, 0, 0, a, 1, x, w, info )
203  CALL chkxer( 'ZUNGL2', infot, nout, lerr, ok )
204  infot = 2
205  CALL zungl2( 0, -1, 0, a, 1, x, w, info )
206  CALL chkxer( 'ZUNGL2', infot, nout, lerr, ok )
207  infot = 2
208  CALL zungl2( 2, 1, 0, a, 2, x, w, info )
209  CALL chkxer( 'ZUNGL2', infot, nout, lerr, ok )
210  infot = 3
211  CALL zungl2( 0, 0, -1, a, 1, x, w, info )
212  CALL chkxer( 'ZUNGL2', infot, nout, lerr, ok )
213  infot = 3
214  CALL zungl2( 1, 1, 2, a, 1, x, w, info )
215  CALL chkxer( 'ZUNGL2', infot, nout, lerr, ok )
216  infot = 5
217  CALL zungl2( 2, 2, 0, a, 1, x, w, info )
218  CALL chkxer( 'ZUNGL2', infot, nout, lerr, ok )
219 *
220 * ZUNMLQ
221 *
222  srnamt = 'ZUNMLQ'
223  infot = 1
224  CALL zunmlq( '/', 'N', 0, 0, 0, a, 1, x, af, 1, w, 1, info )
225  CALL chkxer( 'ZUNMLQ', infot, nout, lerr, ok )
226  infot = 2
227  CALL zunmlq( 'L', '/', 0, 0, 0, a, 1, x, af, 1, w, 1, info )
228  CALL chkxer( 'ZUNMLQ', infot, nout, lerr, ok )
229  infot = 3
230  CALL zunmlq( 'L', 'N', -1, 0, 0, a, 1, x, af, 1, w, 1, info )
231  CALL chkxer( 'ZUNMLQ', infot, nout, lerr, ok )
232  infot = 4
233  CALL zunmlq( 'L', 'N', 0, -1, 0, a, 1, x, af, 1, w, 1, info )
234  CALL chkxer( 'ZUNMLQ', infot, nout, lerr, ok )
235  infot = 5
236  CALL zunmlq( 'L', 'N', 0, 0, -1, a, 1, x, af, 1, w, 1, info )
237  CALL chkxer( 'ZUNMLQ', infot, nout, lerr, ok )
238  infot = 5
239  CALL zunmlq( 'L', 'N', 0, 1, 1, a, 1, x, af, 1, w, 1, info )
240  CALL chkxer( 'ZUNMLQ', infot, nout, lerr, ok )
241  infot = 5
242  CALL zunmlq( 'R', 'N', 1, 0, 1, a, 1, x, af, 1, w, 1, info )
243  CALL chkxer( 'ZUNMLQ', infot, nout, lerr, ok )
244  infot = 7
245  CALL zunmlq( 'L', 'N', 2, 0, 2, a, 1, x, af, 2, w, 1, info )
246  CALL chkxer( 'ZUNMLQ', infot, nout, lerr, ok )
247  infot = 7
248  CALL zunmlq( 'R', 'N', 0, 2, 2, a, 1, x, af, 1, w, 1, info )
249  CALL chkxer( 'ZUNMLQ', infot, nout, lerr, ok )
250  infot = 10
251  CALL zunmlq( 'L', 'N', 2, 1, 0, a, 2, x, af, 1, w, 1, info )
252  CALL chkxer( 'ZUNMLQ', infot, nout, lerr, ok )
253  infot = 12
254  CALL zunmlq( 'L', 'N', 1, 2, 0, a, 1, x, af, 1, w, 1, info )
255  CALL chkxer( 'ZUNMLQ', infot, nout, lerr, ok )
256  infot = 12
257  CALL zunmlq( 'R', 'N', 2, 1, 0, a, 1, x, af, 2, w, 1, info )
258  CALL chkxer( 'ZUNMLQ', infot, nout, lerr, ok )
259 *
260 * ZUNML2
261 *
262  srnamt = 'ZUNML2'
263  infot = 1
264  CALL zunml2( '/', 'N', 0, 0, 0, a, 1, x, af, 1, w, info )
265  CALL chkxer( 'ZUNML2', infot, nout, lerr, ok )
266  infot = 2
267  CALL zunml2( 'L', '/', 0, 0, 0, a, 1, x, af, 1, w, info )
268  CALL chkxer( 'ZUNML2', infot, nout, lerr, ok )
269  infot = 3
270  CALL zunml2( 'L', 'N', -1, 0, 0, a, 1, x, af, 1, w, info )
271  CALL chkxer( 'ZUNML2', infot, nout, lerr, ok )
272  infot = 4
273  CALL zunml2( 'L', 'N', 0, -1, 0, a, 1, x, af, 1, w, info )
274  CALL chkxer( 'ZUNML2', infot, nout, lerr, ok )
275  infot = 5
276  CALL zunml2( 'L', 'N', 0, 0, -1, a, 1, x, af, 1, w, info )
277  CALL chkxer( 'ZUNML2', infot, nout, lerr, ok )
278  infot = 5
279  CALL zunml2( 'L', 'N', 0, 1, 1, a, 1, x, af, 1, w, info )
280  CALL chkxer( 'ZUNML2', infot, nout, lerr, ok )
281  infot = 5
282  CALL zunml2( 'R', 'N', 1, 0, 1, a, 1, x, af, 1, w, info )
283  CALL chkxer( 'ZUNML2', infot, nout, lerr, ok )
284  infot = 7
285  CALL zunml2( 'L', 'N', 2, 1, 2, a, 1, x, af, 2, w, info )
286  CALL chkxer( 'ZUNML2', infot, nout, lerr, ok )
287  infot = 7
288  CALL zunml2( 'R', 'N', 1, 2, 2, a, 1, x, af, 1, w, info )
289  CALL chkxer( 'ZUNML2', infot, nout, lerr, ok )
290  infot = 10
291  CALL zunml2( 'L', 'N', 2, 1, 0, a, 2, x, af, 1, w, info )
292  CALL chkxer( 'ZUNML2', infot, nout, lerr, ok )
293 *
294 * Print a summary line.
295 *
296  CALL alaesm( path, ok, nout )
297 *
298  RETURN
299 *
300 * End of ZERRLQ
301 *
302  END
subroutine zgelq2(M, N, A, LDA, TAU, WORK, INFO)
ZGELQ2 computes the LQ factorization of a general rectangular matrix using an unblocked algorithm...
Definition: zgelq2.f:123
subroutine zunmlq(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
ZUNMLQ
Definition: zunmlq.f:169
subroutine alaesm(PATH, OK, NOUT)
ALAESM
Definition: alaesm.f:65
subroutine zgelqf(M, N, A, LDA, TAU, WORK, LWORK, INFO)
ZGELQF
Definition: zgelqf.f:137
subroutine zerrlq(PATH, NUNIT)
ZERRLQ
Definition: zerrlq.f:57
subroutine zungl2(M, N, K, A, LDA, TAU, WORK, INFO)
ZUNGL2 generates all or part of the unitary matrix Q from an LQ factorization determined by cgelqf (u...
Definition: zungl2.f:115
subroutine zunglq(M, N, K, A, LDA, TAU, WORK, LWORK, INFO)
ZUNGLQ
Definition: zunglq.f:129
subroutine zunml2(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO)
ZUNML2 multiplies a general matrix by the unitary matrix from a LQ factorization determined by cgelqf...
Definition: zunml2.f:161
subroutine chkxer(SRNAMT, INFOT, NOUT, LERR, OK)
Definition: cblat2.f:3199
subroutine zgelqs(M, N, NRHS, A, LDA, TAU, B, LDB, WORK, LWORK, INFO)
ZGELQS
Definition: zgelqs.f:123