LAPACK  3.10.1
LAPACK: Linear Algebra PACKage
zerrql.f
Go to the documentation of this file.
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 *> \ingroup complex16_lin
52 *
53 * =====================================================================
54  SUBROUTINE zerrql( 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, zgeql2, zgeqlf, zgeqls, zung2l,
80  $ zungql, zunm2l, zunmql
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 QL factorization
115 *
116 * ZGEQLF
117 *
118  srnamt = 'ZGEQLF'
119  infot = 1
120  CALL zgeqlf( -1, 0, a, 1, b, w, 1, info )
121  CALL chkxer( 'ZGEQLF', infot, nout, lerr, ok )
122  infot = 2
123  CALL zgeqlf( 0, -1, a, 1, b, w, 1, info )
124  CALL chkxer( 'ZGEQLF', infot, nout, lerr, ok )
125  infot = 4
126  CALL zgeqlf( 2, 1, a, 1, b, w, 1, info )
127  CALL chkxer( 'ZGEQLF', infot, nout, lerr, ok )
128  infot = 7
129  CALL zgeqlf( 1, 2, a, 1, b, w, 1, info )
130  CALL chkxer( 'ZGEQLF', infot, nout, lerr, ok )
131 *
132 * ZGEQL2
133 *
134  srnamt = 'ZGEQL2'
135  infot = 1
136  CALL zgeql2( -1, 0, a, 1, b, w, info )
137  CALL chkxer( 'ZGEQL2', infot, nout, lerr, ok )
138  infot = 2
139  CALL zgeql2( 0, -1, a, 1, b, w, info )
140  CALL chkxer( 'ZGEQL2', infot, nout, lerr, ok )
141  infot = 4
142  CALL zgeql2( 2, 1, a, 1, b, w, info )
143  CALL chkxer( 'ZGEQL2', infot, nout, lerr, ok )
144 *
145 * ZGEQLS
146 *
147  srnamt = 'ZGEQLS'
148  infot = 1
149  CALL zgeqls( -1, 0, 0, a, 1, x, b, 1, w, 1, info )
150  CALL chkxer( 'ZGEQLS', infot, nout, lerr, ok )
151  infot = 2
152  CALL zgeqls( 0, -1, 0, a, 1, x, b, 1, w, 1, info )
153  CALL chkxer( 'ZGEQLS', infot, nout, lerr, ok )
154  infot = 2
155  CALL zgeqls( 1, 2, 0, a, 1, x, b, 1, w, 1, info )
156  CALL chkxer( 'ZGEQLS', infot, nout, lerr, ok )
157  infot = 3
158  CALL zgeqls( 0, 0, -1, a, 1, x, b, 1, w, 1, info )
159  CALL chkxer( 'ZGEQLS', infot, nout, lerr, ok )
160  infot = 5
161  CALL zgeqls( 2, 1, 0, a, 1, x, b, 2, w, 1, info )
162  CALL chkxer( 'ZGEQLS', infot, nout, lerr, ok )
163  infot = 8
164  CALL zgeqls( 2, 1, 0, a, 2, x, b, 1, w, 1, info )
165  CALL chkxer( 'ZGEQLS', infot, nout, lerr, ok )
166  infot = 10
167  CALL zgeqls( 1, 1, 2, a, 1, x, b, 1, w, 1, info )
168  CALL chkxer( 'ZGEQLS', infot, nout, lerr, ok )
169 *
170 * ZUNGQL
171 *
172  srnamt = 'ZUNGQL'
173  infot = 1
174  CALL zungql( -1, 0, 0, a, 1, x, w, 1, info )
175  CALL chkxer( 'ZUNGQL', infot, nout, lerr, ok )
176  infot = 2
177  CALL zungql( 0, -1, 0, a, 1, x, w, 1, info )
178  CALL chkxer( 'ZUNGQL', infot, nout, lerr, ok )
179  infot = 2
180  CALL zungql( 1, 2, 0, a, 1, x, w, 2, info )
181  CALL chkxer( 'ZUNGQL', infot, nout, lerr, ok )
182  infot = 3
183  CALL zungql( 0, 0, -1, a, 1, x, w, 1, info )
184  CALL chkxer( 'ZUNGQL', infot, nout, lerr, ok )
185  infot = 3
186  CALL zungql( 1, 1, 2, a, 1, x, w, 1, info )
187  CALL chkxer( 'ZUNGQL', infot, nout, lerr, ok )
188  infot = 5
189  CALL zungql( 2, 1, 0, a, 1, x, w, 1, info )
190  CALL chkxer( 'ZUNGQL', infot, nout, lerr, ok )
191  infot = 8
192  CALL zungql( 2, 2, 0, a, 2, x, w, 1, info )
193  CALL chkxer( 'ZUNGQL', infot, nout, lerr, ok )
194 *
195 * ZUNG2L
196 *
197  srnamt = 'ZUNG2L'
198  infot = 1
199  CALL zung2l( -1, 0, 0, a, 1, x, w, info )
200  CALL chkxer( 'ZUNG2L', infot, nout, lerr, ok )
201  infot = 2
202  CALL zung2l( 0, -1, 0, a, 1, x, w, info )
203  CALL chkxer( 'ZUNG2L', infot, nout, lerr, ok )
204  infot = 2
205  CALL zung2l( 1, 2, 0, a, 1, x, w, info )
206  CALL chkxer( 'ZUNG2L', infot, nout, lerr, ok )
207  infot = 3
208  CALL zung2l( 0, 0, -1, a, 1, x, w, info )
209  CALL chkxer( 'ZUNG2L', infot, nout, lerr, ok )
210  infot = 3
211  CALL zung2l( 2, 1, 2, a, 2, x, w, info )
212  CALL chkxer( 'ZUNG2L', infot, nout, lerr, ok )
213  infot = 5
214  CALL zung2l( 2, 1, 0, a, 1, x, w, info )
215  CALL chkxer( 'ZUNG2L', infot, nout, lerr, ok )
216 *
217 * ZUNMQL
218 *
219  srnamt = 'ZUNMQL'
220  infot = 1
221  CALL zunmql( '/', 'N', 0, 0, 0, a, 1, x, af, 1, w, 1, info )
222  CALL chkxer( 'ZUNMQL', infot, nout, lerr, ok )
223  infot = 2
224  CALL zunmql( 'L', '/', 0, 0, 0, a, 1, x, af, 1, w, 1, info )
225  CALL chkxer( 'ZUNMQL', infot, nout, lerr, ok )
226  infot = 3
227  CALL zunmql( 'L', 'N', -1, 0, 0, a, 1, x, af, 1, w, 1, info )
228  CALL chkxer( 'ZUNMQL', infot, nout, lerr, ok )
229  infot = 4
230  CALL zunmql( 'L', 'N', 0, -1, 0, a, 1, x, af, 1, w, 1, info )
231  CALL chkxer( 'ZUNMQL', infot, nout, lerr, ok )
232  infot = 5
233  CALL zunmql( 'L', 'N', 0, 0, -1, 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, 1, 1, a, 1, x, af, 1, w, 1, info )
237  CALL chkxer( 'ZUNMQL', infot, nout, lerr, ok )
238  infot = 5
239  CALL zunmql( 'R', 'N', 1, 0, 1, a, 1, x, af, 1, w, 1, info )
240  CALL chkxer( 'ZUNMQL', infot, nout, lerr, ok )
241  infot = 7
242  CALL zunmql( 'L', 'N', 2, 1, 0, a, 1, x, af, 2, w, 1, info )
243  CALL chkxer( 'ZUNMQL', infot, nout, lerr, ok )
244  infot = 7
245  CALL zunmql( 'R', 'N', 1, 2, 0, a, 1, x, af, 1, w, 1, info )
246  CALL chkxer( 'ZUNMQL', infot, nout, lerr, ok )
247  infot = 10
248  CALL zunmql( 'L', 'N', 2, 1, 0, a, 2, x, af, 1, w, 1, info )
249  CALL chkxer( 'ZUNMQL', infot, nout, lerr, ok )
250  infot = 12
251  CALL zunmql( 'L', 'N', 1, 2, 0, a, 1, x, af, 1, w, 1, info )
252  CALL chkxer( 'ZUNMQL', infot, nout, lerr, ok )
253  infot = 12
254  CALL zunmql( 'R', 'N', 2, 1, 0, a, 1, x, af, 2, w, 1, info )
255  CALL chkxer( 'ZUNMQL', infot, nout, lerr, ok )
256 *
257 * ZUNM2L
258 *
259  srnamt = 'ZUNM2L'
260  infot = 1
261  CALL zunm2l( '/', 'N', 0, 0, 0, a, 1, x, af, 1, w, info )
262  CALL chkxer( 'ZUNM2L', infot, nout, lerr, ok )
263  infot = 2
264  CALL zunm2l( 'L', '/', 0, 0, 0, a, 1, x, af, 1, w, info )
265  CALL chkxer( 'ZUNM2L', infot, nout, lerr, ok )
266  infot = 3
267  CALL zunm2l( 'L', 'N', -1, 0, 0, a, 1, x, af, 1, w, info )
268  CALL chkxer( 'ZUNM2L', infot, nout, lerr, ok )
269  infot = 4
270  CALL zunm2l( 'L', 'N', 0, -1, 0, a, 1, x, af, 1, w, info )
271  CALL chkxer( 'ZUNM2L', infot, nout, lerr, ok )
272  infot = 5
273  CALL zunm2l( 'L', 'N', 0, 0, -1, a, 1, x, af, 1, w, info )
274  CALL chkxer( 'ZUNM2L', infot, nout, lerr, ok )
275  infot = 5
276  CALL zunm2l( 'L', 'N', 0, 1, 1, a, 1, x, af, 1, w, info )
277  CALL chkxer( 'ZUNM2L', infot, nout, lerr, ok )
278  infot = 5
279  CALL zunm2l( 'R', 'N', 1, 0, 1, a, 1, x, af, 1, w, info )
280  CALL chkxer( 'ZUNM2L', infot, nout, lerr, ok )
281  infot = 7
282  CALL zunm2l( 'L', 'N', 2, 1, 0, a, 1, x, af, 2, w, info )
283  CALL chkxer( 'ZUNM2L', infot, nout, lerr, ok )
284  infot = 7
285  CALL zunm2l( 'R', 'N', 1, 2, 0, a, 1, x, af, 1, w, info )
286  CALL chkxer( 'ZUNM2L', infot, nout, lerr, ok )
287  infot = 10
288  CALL zunm2l( 'L', 'N', 2, 1, 0, a, 2, x, af, 1, w, info )
289  CALL chkxer( 'ZUNM2L', infot, nout, lerr, ok )
290 *
291 * Print a summary line.
292 *
293  CALL alaesm( path, ok, nout )
294 *
295  RETURN
296 *
297 * End of ZERRQL
298 *
299  END
subroutine chkxer(SRNAMT, INFOT, NOUT, LERR, OK)
Definition: cblat2.f:3196
subroutine alaesm(PATH, OK, NOUT)
ALAESM
Definition: alaesm.f:63
subroutine zgeqls(M, N, NRHS, A, LDA, TAU, B, LDB, WORK, LWORK, INFO)
ZGEQLS
Definition: zgeqls.f:122
subroutine zerrql(PATH, NUNIT)
ZERRQL
Definition: zerrql.f:55
subroutine zgeqlf(M, N, A, LDA, TAU, WORK, LWORK, INFO)
ZGEQLF
Definition: zgeqlf.f:138
subroutine zgeql2(M, N, A, LDA, TAU, WORK, INFO)
ZGEQL2 computes the QL factorization of a general rectangular matrix using an unblocked algorithm.
Definition: zgeql2.f:123
subroutine zunmql(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
ZUNMQL
Definition: zunmql.f:167
subroutine zunm2l(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, INFO)
ZUNM2L multiplies a general matrix by the unitary matrix from a QL factorization determined by cgeqlf...
Definition: zunm2l.f:159
subroutine zungql(M, N, K, A, LDA, TAU, WORK, LWORK, INFO)
ZUNGQL
Definition: zungql.f:128
subroutine zung2l(M, N, K, A, LDA, TAU, WORK, INFO)
ZUNG2L generates all or part of the unitary matrix Q from a QL factorization determined by cgeqlf (un...
Definition: zung2l.f:114