LAPACK  3.8.0
LAPACK: Linear Algebra PACKage

◆ zerrlq()

subroutine zerrlq ( character*3  PATH,
integer  NUNIT 
)

ZERRLQ

Purpose:
 ZERRLQ tests the error exits for the COMPLEX*16 routines
 that use the LQ 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.
Date
December 2016

Definition at line 57 of file zerrlq.f.

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 *
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 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
Here is the call graph for this function:
Here is the caller graph for this function: