1*> \brief \b ZERRQL
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 ZERRQL( 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*> ZERRQL tests the error exits for the COMPLEX*16 routines
25*> that use the QL 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 November 2011
52*
53*> \ingroup complex16_lin
54*
55*  =====================================================================
56      SUBROUTINE ZERRQL( PATH, NUNIT )
57*
58*  -- LAPACK test routine (version 3.4.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*     November 2011
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, ZGEQL2, ZGEQLF, ZGEQLS, ZUNG2L,
83     $                   ZUNGQL, ZUNM2L, ZUNMQL
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 QL factorization
118*
119*     ZGEQLF
120*
121      SRNAMT = 'ZGEQLF'
122      INFOT = 1
123      CALL ZGEQLF( -1, 0, A, 1, B, W, 1, INFO )
124      CALL CHKXER( 'ZGEQLF', INFOT, NOUT, LERR, OK )
125      INFOT = 2
126      CALL ZGEQLF( 0, -1, A, 1, B, W, 1, INFO )
127      CALL CHKXER( 'ZGEQLF', INFOT, NOUT, LERR, OK )
128      INFOT = 4
129      CALL ZGEQLF( 2, 1, A, 1, B, W, 1, INFO )
130      CALL CHKXER( 'ZGEQLF', INFOT, NOUT, LERR, OK )
131      INFOT = 7
132      CALL ZGEQLF( 1, 2, A, 1, B, W, 1, INFO )
133      CALL CHKXER( 'ZGEQLF', INFOT, NOUT, LERR, OK )
134*
135*     ZGEQL2
136*
137      SRNAMT = 'ZGEQL2'
138      INFOT = 1
139      CALL ZGEQL2( -1, 0, A, 1, B, W, INFO )
140      CALL CHKXER( 'ZGEQL2', INFOT, NOUT, LERR, OK )
141      INFOT = 2
142      CALL ZGEQL2( 0, -1, A, 1, B, W, INFO )
143      CALL CHKXER( 'ZGEQL2', INFOT, NOUT, LERR, OK )
144      INFOT = 4
145      CALL ZGEQL2( 2, 1, A, 1, B, W, INFO )
146      CALL CHKXER( 'ZGEQL2', INFOT, NOUT, LERR, OK )
147*
148*     ZGEQLS
149*
150      SRNAMT = 'ZGEQLS'
151      INFOT = 1
152      CALL ZGEQLS( -1, 0, 0, A, 1, X, B, 1, W, 1, INFO )
153      CALL CHKXER( 'ZGEQLS', INFOT, NOUT, LERR, OK )
154      INFOT = 2
155      CALL ZGEQLS( 0, -1, 0, A, 1, X, B, 1, W, 1, INFO )
156      CALL CHKXER( 'ZGEQLS', INFOT, NOUT, LERR, OK )
157      INFOT = 2
158      CALL ZGEQLS( 1, 2, 0, A, 1, X, B, 1, W, 1, INFO )
159      CALL CHKXER( 'ZGEQLS', INFOT, NOUT, LERR, OK )
160      INFOT = 3
161      CALL ZGEQLS( 0, 0, -1, A, 1, X, B, 1, W, 1, INFO )
162      CALL CHKXER( 'ZGEQLS', INFOT, NOUT, LERR, OK )
163      INFOT = 5
164      CALL ZGEQLS( 2, 1, 0, A, 1, X, B, 2, W, 1, INFO )
165      CALL CHKXER( 'ZGEQLS', INFOT, NOUT, LERR, OK )
166      INFOT = 8
167      CALL ZGEQLS( 2, 1, 0, A, 2, X, B, 1, W, 1, INFO )
168      CALL CHKXER( 'ZGEQLS', INFOT, NOUT, LERR, OK )
169      INFOT = 10
170      CALL ZGEQLS( 1, 1, 2, A, 1, X, B, 1, W, 1, INFO )
171      CALL CHKXER( 'ZGEQLS', INFOT, NOUT, LERR, OK )
172*
173*     ZUNGQL
174*
175      SRNAMT = 'ZUNGQL'
176      INFOT = 1
177      CALL ZUNGQL( -1, 0, 0, A, 1, X, W, 1, INFO )
178      CALL CHKXER( 'ZUNGQL', INFOT, NOUT, LERR, OK )
179      INFOT = 2
180      CALL ZUNGQL( 0, -1, 0, A, 1, X, W, 1, INFO )
181      CALL CHKXER( 'ZUNGQL', INFOT, NOUT, LERR, OK )
182      INFOT = 2
183      CALL ZUNGQL( 1, 2, 0, A, 1, X, W, 2, INFO )
184      CALL CHKXER( 'ZUNGQL', INFOT, NOUT, LERR, OK )
185      INFOT = 3
186      CALL ZUNGQL( 0, 0, -1, A, 1, X, W, 1, INFO )
187      CALL CHKXER( 'ZUNGQL', INFOT, NOUT, LERR, OK )
188      INFOT = 3
189      CALL ZUNGQL( 1, 1, 2, A, 1, X, W, 1, INFO )
190      CALL CHKXER( 'ZUNGQL', INFOT, NOUT, LERR, OK )
191      INFOT = 5
192      CALL ZUNGQL( 2, 1, 0, A, 1, X, W, 1, INFO )
193      CALL CHKXER( 'ZUNGQL', INFOT, NOUT, LERR, OK )
194      INFOT = 8
195      CALL ZUNGQL( 2, 2, 0, A, 2, X, W, 1, INFO )
196      CALL CHKXER( 'ZUNGQL', INFOT, NOUT, LERR, OK )
197*
198*     ZUNG2L
199*
200      SRNAMT = 'ZUNG2L'
201      INFOT = 1
202      CALL ZUNG2L( -1, 0, 0, A, 1, X, W, INFO )
203      CALL CHKXER( 'ZUNG2L', INFOT, NOUT, LERR, OK )
204      INFOT = 2
205      CALL ZUNG2L( 0, -1, 0, A, 1, X, W, INFO )
206      CALL CHKXER( 'ZUNG2L', INFOT, NOUT, LERR, OK )
207      INFOT = 2
208      CALL ZUNG2L( 1, 2, 0, A, 1, X, W, INFO )
209      CALL CHKXER( 'ZUNG2L', INFOT, NOUT, LERR, OK )
210      INFOT = 3
211      CALL ZUNG2L( 0, 0, -1, A, 1, X, W, INFO )
212      CALL CHKXER( 'ZUNG2L', INFOT, NOUT, LERR, OK )
213      INFOT = 3
214      CALL ZUNG2L( 2, 1, 2, A, 2, X, W, INFO )
215      CALL CHKXER( 'ZUNG2L', INFOT, NOUT, LERR, OK )
216      INFOT = 5
217      CALL ZUNG2L( 2, 1, 0, A, 1, X, W, INFO )
218      CALL CHKXER( 'ZUNG2L', INFOT, NOUT, LERR, OK )
219*
220*     ZUNMQL
221*
222      SRNAMT = 'ZUNMQL'
223      INFOT = 1
224      CALL ZUNMQL( '/', 'N', 0, 0, 0, A, 1, X, AF, 1, W, 1, INFO )
225      CALL CHKXER( 'ZUNMQL', INFOT, NOUT, LERR, OK )
226      INFOT = 2
227      CALL ZUNMQL( 'L', '/', 0, 0, 0, A, 1, X, AF, 1, W, 1, INFO )
228      CALL CHKXER( 'ZUNMQL', INFOT, NOUT, LERR, OK )
229      INFOT = 3
230      CALL ZUNMQL( 'L', 'N', -1, 0, 0, A, 1, X, AF, 1, W, 1, INFO )
231      CALL CHKXER( 'ZUNMQL', INFOT, NOUT, LERR, OK )
232      INFOT = 4
233      CALL ZUNMQL( 'L', 'N', 0, -1, 0, A, 1, X, AF, 1, W, 1, INFO )
234      CALL CHKXER( 'ZUNMQL', INFOT, NOUT, LERR, OK )
235      INFOT = 5
236      CALL ZUNMQL( 'L', 'N', 0, 0, -1, A, 1, X, AF, 1, W, 1, INFO )
237      CALL CHKXER( 'ZUNMQL', INFOT, NOUT, LERR, OK )
238      INFOT = 5
239      CALL ZUNMQL( 'L', 'N', 0, 1, 1, A, 1, X, AF, 1, W, 1, INFO )
240      CALL CHKXER( 'ZUNMQL', INFOT, NOUT, LERR, OK )
241      INFOT = 5
242      CALL ZUNMQL( 'R', 'N', 1, 0, 1, A, 1, X, AF, 1, W, 1, INFO )
243      CALL CHKXER( 'ZUNMQL', INFOT, NOUT, LERR, OK )
244      INFOT = 7
245      CALL ZUNMQL( 'L', 'N', 2, 1, 0, A, 1, X, AF, 2, W, 1, INFO )
246      CALL CHKXER( 'ZUNMQL', INFOT, NOUT, LERR, OK )
247      INFOT = 7
248      CALL ZUNMQL( 'R', 'N', 1, 2, 0, A, 1, X, AF, 1, W, 1, INFO )
249      CALL CHKXER( 'ZUNMQL', INFOT, NOUT, LERR, OK )
250      INFOT = 10
251      CALL ZUNMQL( 'L', 'N', 2, 1, 0, A, 2, X, AF, 1, W, 1, INFO )
252      CALL CHKXER( 'ZUNMQL', INFOT, NOUT, LERR, OK )
253      INFOT = 12
254      CALL ZUNMQL( 'L', 'N', 1, 2, 0, A, 1, X, AF, 1, W, 1, INFO )
255      CALL CHKXER( 'ZUNMQL', INFOT, NOUT, LERR, OK )
256      INFOT = 12
257      CALL ZUNMQL( 'R', 'N', 2, 1, 0, A, 1, X, AF, 2, W, 1, INFO )
258      CALL CHKXER( 'ZUNMQL', INFOT, NOUT, LERR, OK )
259*
260*     ZUNM2L
261*
262      SRNAMT = 'ZUNM2L'
263      INFOT = 1
264      CALL ZUNM2L( '/', 'N', 0, 0, 0, A, 1, X, AF, 1, W, INFO )
265      CALL CHKXER( 'ZUNM2L', INFOT, NOUT, LERR, OK )
266      INFOT = 2
267      CALL ZUNM2L( 'L', '/', 0, 0, 0, A, 1, X, AF, 1, W, INFO )
268      CALL CHKXER( 'ZUNM2L', INFOT, NOUT, LERR, OK )
269      INFOT = 3
270      CALL ZUNM2L( 'L', 'N', -1, 0, 0, A, 1, X, AF, 1, W, INFO )
271      CALL CHKXER( 'ZUNM2L', INFOT, NOUT, LERR, OK )
272      INFOT = 4
273      CALL ZUNM2L( 'L', 'N', 0, -1, 0, A, 1, X, AF, 1, W, INFO )
274      CALL CHKXER( 'ZUNM2L', INFOT, NOUT, LERR, OK )
275      INFOT = 5
276      CALL ZUNM2L( 'L', 'N', 0, 0, -1, A, 1, X, AF, 1, W, INFO )
277      CALL CHKXER( 'ZUNM2L', INFOT, NOUT, LERR, OK )
278      INFOT = 5
279      CALL ZUNM2L( 'L', 'N', 0, 1, 1, A, 1, X, AF, 1, W, INFO )
280      CALL CHKXER( 'ZUNM2L', INFOT, NOUT, LERR, OK )
281      INFOT = 5
282      CALL ZUNM2L( 'R', 'N', 1, 0, 1, A, 1, X, AF, 1, W, INFO )
283      CALL CHKXER( 'ZUNM2L', INFOT, NOUT, LERR, OK )
284      INFOT = 7
285      CALL ZUNM2L( 'L', 'N', 2, 1, 0, A, 1, X, AF, 2, W, INFO )
286      CALL CHKXER( 'ZUNM2L', INFOT, NOUT, LERR, OK )
287      INFOT = 7
288      CALL ZUNM2L( 'R', 'N', 1, 2, 0, A, 1, X, AF, 1, W, INFO )
289      CALL CHKXER( 'ZUNM2L', INFOT, NOUT, LERR, OK )
290      INFOT = 10
291      CALL ZUNM2L( 'L', 'N', 2, 1, 0, A, 2, X, AF, 1, W, INFO )
292      CALL CHKXER( 'ZUNM2L', INFOT, NOUT, LERR, OK )
293*
294*     Print a summary line.
295*
296      CALL ALAESM( PATH, OK, NOUT )
297*
298      RETURN
299*
300*     End of ZERRQL
301*
302      END
303