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*> \ingroup complex16_lin
52*
53*  =====================================================================
54      SUBROUTINE ZERRLQ( PATH, NUNIT )
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      COMPLEX*16         A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
76     $                   W( NMAX ), X( NMAX )
77*     ..
78*     .. External Subroutines ..
79      EXTERNAL           ALAESM, CHKXER, ZGELQ2, ZGELQF, ZGELQS, ZUNGL2,
80     $                   ZUNGLQ, ZUNML2, ZUNMLQ
81*     ..
82*     .. Scalars in Common ..
83      LOGICAL            LERR, OK
84      CHARACTER*32       SRNAMT
85      INTEGER            INFOT, NOUT
86*     ..
87*     .. Common blocks ..
88      COMMON             / INFOC / INFOT, NOUT, OK, LERR
89      COMMON             / SRNAMC / SRNAMT
90*     ..
91*     .. Intrinsic Functions ..
92      INTRINSIC          DBLE, DCMPLX
93*     ..
94*     .. Executable Statements ..
95*
96      NOUT = NUNIT
97      WRITE( NOUT, FMT = * )
98*
99*     Set the variables to innocuous values.
100*
101      DO 20 J = 1, NMAX
102         DO 10 I = 1, NMAX
103            A( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ),
104     $                  -1.D0 / DBLE( I+J ) )
105            AF( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ),
106     $                   -1.D0 / DBLE( I+J ) )
107   10    CONTINUE
108         B( J ) = 0.D0
109         W( J ) = 0.D0
110         X( J ) = 0.D0
111   20 CONTINUE
112      OK = .TRUE.
113*
114*     Error exits for LQ factorization
115*
116*     ZGELQF
117*
118      SRNAMT = 'ZGELQF'
119      INFOT = 1
120      CALL ZGELQF( -1, 0, A, 1, B, W, 1, INFO )
121      CALL CHKXER( 'ZGELQF', INFOT, NOUT, LERR, OK )
122      INFOT = 2
123      CALL ZGELQF( 0, -1, A, 1, B, W, 1, INFO )
124      CALL CHKXER( 'ZGELQF', INFOT, NOUT, LERR, OK )
125      INFOT = 4
126      CALL ZGELQF( 2, 1, A, 1, B, W, 2, INFO )
127      CALL CHKXER( 'ZGELQF', INFOT, NOUT, LERR, OK )
128      INFOT = 7
129      CALL ZGELQF( 2, 1, A, 2, B, W, 1, INFO )
130      CALL CHKXER( 'ZGELQF', INFOT, NOUT, LERR, OK )
131*
132*     ZGELQ2
133*
134      SRNAMT = 'ZGELQ2'
135      INFOT = 1
136      CALL ZGELQ2( -1, 0, A, 1, B, W, INFO )
137      CALL CHKXER( 'ZGELQ2', INFOT, NOUT, LERR, OK )
138      INFOT = 2
139      CALL ZGELQ2( 0, -1, A, 1, B, W, INFO )
140      CALL CHKXER( 'ZGELQ2', INFOT, NOUT, LERR, OK )
141      INFOT = 4
142      CALL ZGELQ2( 2, 1, A, 1, B, W, INFO )
143      CALL CHKXER( 'ZGELQ2', INFOT, NOUT, LERR, OK )
144*
145*     ZGELQS
146*
147      SRNAMT = 'ZGELQS'
148      INFOT = 1
149      CALL ZGELQS( -1, 0, 0, A, 1, X, B, 1, W, 1, INFO )
150      CALL CHKXER( 'ZGELQS', INFOT, NOUT, LERR, OK )
151      INFOT = 2
152      CALL ZGELQS( 0, -1, 0, A, 1, X, B, 1, W, 1, INFO )
153      CALL CHKXER( 'ZGELQS', INFOT, NOUT, LERR, OK )
154      INFOT = 2
155      CALL ZGELQS( 2, 1, 0, A, 2, X, B, 1, W, 1, INFO )
156      CALL CHKXER( 'ZGELQS', INFOT, NOUT, LERR, OK )
157      INFOT = 3
158      CALL ZGELQS( 0, 0, -1, A, 1, X, B, 1, W, 1, INFO )
159      CALL CHKXER( 'ZGELQS', INFOT, NOUT, LERR, OK )
160      INFOT = 5
161      CALL ZGELQS( 2, 2, 0, A, 1, X, B, 2, W, 1, INFO )
162      CALL CHKXER( 'ZGELQS', INFOT, NOUT, LERR, OK )
163      INFOT = 8
164      CALL ZGELQS( 1, 2, 0, A, 1, X, B, 1, W, 1, INFO )
165      CALL CHKXER( 'ZGELQS', INFOT, NOUT, LERR, OK )
166      INFOT = 10
167      CALL ZGELQS( 1, 1, 2, A, 1, X, B, 1, W, 1, INFO )
168      CALL CHKXER( 'ZGELQS', INFOT, NOUT, LERR, OK )
169*
170*     ZUNGLQ
171*
172      SRNAMT = 'ZUNGLQ'
173      INFOT = 1
174      CALL ZUNGLQ( -1, 0, 0, A, 1, X, W, 1, INFO )
175      CALL CHKXER( 'ZUNGLQ', INFOT, NOUT, LERR, OK )
176      INFOT = 2
177      CALL ZUNGLQ( 0, -1, 0, A, 1, X, W, 1, INFO )
178      CALL CHKXER( 'ZUNGLQ', INFOT, NOUT, LERR, OK )
179      INFOT = 2
180      CALL ZUNGLQ( 2, 1, 0, A, 2, X, W, 2, INFO )
181      CALL CHKXER( 'ZUNGLQ', INFOT, NOUT, LERR, OK )
182      INFOT = 3
183      CALL ZUNGLQ( 0, 0, -1, A, 1, X, W, 1, INFO )
184      CALL CHKXER( 'ZUNGLQ', INFOT, NOUT, LERR, OK )
185      INFOT = 3
186      CALL ZUNGLQ( 1, 1, 2, A, 1, X, W, 1, INFO )
187      CALL CHKXER( 'ZUNGLQ', INFOT, NOUT, LERR, OK )
188      INFOT = 5
189      CALL ZUNGLQ( 2, 2, 0, A, 1, X, W, 2, INFO )
190      CALL CHKXER( 'ZUNGLQ', INFOT, NOUT, LERR, OK )
191      INFOT = 8
192      CALL ZUNGLQ( 2, 2, 0, A, 2, X, W, 1, INFO )
193      CALL CHKXER( 'ZUNGLQ', INFOT, NOUT, LERR, OK )
194*
195*     ZUNGL2
196*
197      SRNAMT = 'ZUNGL2'
198      INFOT = 1
199      CALL ZUNGL2( -1, 0, 0, A, 1, X, W, INFO )
200      CALL CHKXER( 'ZUNGL2', INFOT, NOUT, LERR, OK )
201      INFOT = 2
202      CALL ZUNGL2( 0, -1, 0, A, 1, X, W, INFO )
203      CALL CHKXER( 'ZUNGL2', INFOT, NOUT, LERR, OK )
204      INFOT = 2
205      CALL ZUNGL2( 2, 1, 0, A, 2, X, W, INFO )
206      CALL CHKXER( 'ZUNGL2', INFOT, NOUT, LERR, OK )
207      INFOT = 3
208      CALL ZUNGL2( 0, 0, -1, A, 1, X, W, INFO )
209      CALL CHKXER( 'ZUNGL2', INFOT, NOUT, LERR, OK )
210      INFOT = 3
211      CALL ZUNGL2( 1, 1, 2, A, 1, X, W, INFO )
212      CALL CHKXER( 'ZUNGL2', INFOT, NOUT, LERR, OK )
213      INFOT = 5
214      CALL ZUNGL2( 2, 2, 0, A, 1, X, W, INFO )
215      CALL CHKXER( 'ZUNGL2', INFOT, NOUT, LERR, OK )
216*
217*     ZUNMLQ
218*
219      SRNAMT = 'ZUNMLQ'
220      INFOT = 1
221      CALL ZUNMLQ( '/', 'N', 0, 0, 0, A, 1, X, AF, 1, W, 1, INFO )
222      CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK )
223      INFOT = 2
224      CALL ZUNMLQ( 'L', '/', 0, 0, 0, A, 1, X, AF, 1, W, 1, INFO )
225      CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK )
226      INFOT = 3
227      CALL ZUNMLQ( 'L', 'N', -1, 0, 0, A, 1, X, AF, 1, W, 1, INFO )
228      CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK )
229      INFOT = 4
230      CALL ZUNMLQ( 'L', 'N', 0, -1, 0, A, 1, X, AF, 1, W, 1, INFO )
231      CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK )
232      INFOT = 5
233      CALL ZUNMLQ( 'L', 'N', 0, 0, -1, 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, 1, 1, A, 1, X, AF, 1, W, 1, INFO )
237      CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK )
238      INFOT = 5
239      CALL ZUNMLQ( 'R', 'N', 1, 0, 1, A, 1, X, AF, 1, W, 1, INFO )
240      CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK )
241      INFOT = 7
242      CALL ZUNMLQ( 'L', 'N', 2, 0, 2, A, 1, X, AF, 2, W, 1, INFO )
243      CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK )
244      INFOT = 7
245      CALL ZUNMLQ( 'R', 'N', 0, 2, 2, A, 1, X, AF, 1, W, 1, INFO )
246      CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK )
247      INFOT = 10
248      CALL ZUNMLQ( 'L', 'N', 2, 1, 0, A, 2, X, AF, 1, W, 1, INFO )
249      CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK )
250      INFOT = 12
251      CALL ZUNMLQ( 'L', 'N', 1, 2, 0, A, 1, X, AF, 1, W, 1, INFO )
252      CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK )
253      INFOT = 12
254      CALL ZUNMLQ( 'R', 'N', 2, 1, 0, A, 1, X, AF, 2, W, 1, INFO )
255      CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK )
256*
257*     ZUNML2
258*
259      SRNAMT = 'ZUNML2'
260      INFOT = 1
261      CALL ZUNML2( '/', 'N', 0, 0, 0, A, 1, X, AF, 1, W, INFO )
262      CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK )
263      INFOT = 2
264      CALL ZUNML2( 'L', '/', 0, 0, 0, A, 1, X, AF, 1, W, INFO )
265      CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK )
266      INFOT = 3
267      CALL ZUNML2( 'L', 'N', -1, 0, 0, A, 1, X, AF, 1, W, INFO )
268      CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK )
269      INFOT = 4
270      CALL ZUNML2( 'L', 'N', 0, -1, 0, A, 1, X, AF, 1, W, INFO )
271      CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK )
272      INFOT = 5
273      CALL ZUNML2( 'L', 'N', 0, 0, -1, A, 1, X, AF, 1, W, INFO )
274      CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK )
275      INFOT = 5
276      CALL ZUNML2( 'L', 'N', 0, 1, 1, A, 1, X, AF, 1, W, INFO )
277      CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK )
278      INFOT = 5
279      CALL ZUNML2( 'R', 'N', 1, 0, 1, A, 1, X, AF, 1, W, INFO )
280      CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK )
281      INFOT = 7
282      CALL ZUNML2( 'L', 'N', 2, 1, 2, A, 1, X, AF, 2, W, INFO )
283      CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK )
284      INFOT = 7
285      CALL ZUNML2( 'R', 'N', 1, 2, 2, A, 1, X, AF, 1, W, INFO )
286      CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK )
287      INFOT = 10
288      CALL ZUNML2( 'L', 'N', 2, 1, 0, A, 2, X, AF, 1, W, INFO )
289      CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK )
290*
291*     Print a summary line.
292*
293      CALL ALAESM( PATH, OK, NOUT )
294*
295      RETURN
296*
297*     End of ZERRLQ
298*
299      END
300