STYLE: Remove trailing whitespace in Fortran files
[platform/upstream/lapack.git] / TESTING / LIN / derrql.f
1 *> \brief \b DERRQL
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 DERRQL( 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 *> DERRQL tests the error exits for the DOUBLE PRECISION 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 double_lin
54 *
55 *  =====================================================================
56       SUBROUTINE DERRQL( 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       DOUBLE PRECISION   A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
79      $                   W( NMAX ), X( NMAX )
80 *     ..
81 *     .. External Subroutines ..
82       EXTERNAL           ALAESM, CHKXER, DGEQL2, DGEQLF, DGEQLS, DORG2L,
83      $                   DORGQL, DORM2L, DORMQL
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
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 ) = 1.D0 / DBLE( I+J )
107             AF( I, J ) = 1.D0 / DBLE( I+J )
108    10    CONTINUE
109          B( J ) = 0.D0
110          W( J ) = 0.D0
111          X( J ) = 0.D0
112    20 CONTINUE
113       OK = .TRUE.
114 *
115 *     Error exits for QL factorization
116 *
117 *     DGEQLF
118 *
119       SRNAMT = 'DGEQLF'
120       INFOT = 1
121       CALL DGEQLF( -1, 0, A, 1, B, W, 1, INFO )
122       CALL CHKXER( 'DGEQLF', INFOT, NOUT, LERR, OK )
123       INFOT = 2
124       CALL DGEQLF( 0, -1, A, 1, B, W, 1, INFO )
125       CALL CHKXER( 'DGEQLF', INFOT, NOUT, LERR, OK )
126       INFOT = 4
127       CALL DGEQLF( 2, 1, A, 1, B, W, 1, INFO )
128       CALL CHKXER( 'DGEQLF', INFOT, NOUT, LERR, OK )
129       INFOT = 7
130       CALL DGEQLF( 1, 2, A, 1, B, W, 1, INFO )
131       CALL CHKXER( 'DGEQLF', INFOT, NOUT, LERR, OK )
132 *
133 *     DGEQL2
134 *
135       SRNAMT = 'DGEQL2'
136       INFOT = 1
137       CALL DGEQL2( -1, 0, A, 1, B, W, INFO )
138       CALL CHKXER( 'DGEQL2', INFOT, NOUT, LERR, OK )
139       INFOT = 2
140       CALL DGEQL2( 0, -1, A, 1, B, W, INFO )
141       CALL CHKXER( 'DGEQL2', INFOT, NOUT, LERR, OK )
142       INFOT = 4
143       CALL DGEQL2( 2, 1, A, 1, B, W, INFO )
144       CALL CHKXER( 'DGEQL2', INFOT, NOUT, LERR, OK )
145 *
146 *     DGEQLS
147 *
148       SRNAMT = 'DGEQLS'
149       INFOT = 1
150       CALL DGEQLS( -1, 0, 0, A, 1, X, B, 1, W, 1, INFO )
151       CALL CHKXER( 'DGEQLS', INFOT, NOUT, LERR, OK )
152       INFOT = 2
153       CALL DGEQLS( 0, -1, 0, A, 1, X, B, 1, W, 1, INFO )
154       CALL CHKXER( 'DGEQLS', INFOT, NOUT, LERR, OK )
155       INFOT = 2
156       CALL DGEQLS( 1, 2, 0, A, 1, X, B, 1, W, 1, INFO )
157       CALL CHKXER( 'DGEQLS', INFOT, NOUT, LERR, OK )
158       INFOT = 3
159       CALL DGEQLS( 0, 0, -1, A, 1, X, B, 1, W, 1, INFO )
160       CALL CHKXER( 'DGEQLS', INFOT, NOUT, LERR, OK )
161       INFOT = 5
162       CALL DGEQLS( 2, 1, 0, A, 1, X, B, 2, W, 1, INFO )
163       CALL CHKXER( 'DGEQLS', INFOT, NOUT, LERR, OK )
164       INFOT = 8
165       CALL DGEQLS( 2, 1, 0, A, 2, X, B, 1, W, 1, INFO )
166       CALL CHKXER( 'DGEQLS', INFOT, NOUT, LERR, OK )
167       INFOT = 10
168       CALL DGEQLS( 1, 1, 2, A, 1, X, B, 1, W, 1, INFO )
169       CALL CHKXER( 'DGEQLS', INFOT, NOUT, LERR, OK )
170 *
171 *     DORGQL
172 *
173       SRNAMT = 'DORGQL'
174       INFOT = 1
175       CALL DORGQL( -1, 0, 0, A, 1, X, W, 1, INFO )
176       CALL CHKXER( 'DORGQL', INFOT, NOUT, LERR, OK )
177       INFOT = 2
178       CALL DORGQL( 0, -1, 0, A, 1, X, W, 1, INFO )
179       CALL CHKXER( 'DORGQL', INFOT, NOUT, LERR, OK )
180       INFOT = 2
181       CALL DORGQL( 1, 2, 0, A, 1, X, W, 2, INFO )
182       CALL CHKXER( 'DORGQL', INFOT, NOUT, LERR, OK )
183       INFOT = 3
184       CALL DORGQL( 0, 0, -1, A, 1, X, W, 1, INFO )
185       CALL CHKXER( 'DORGQL', INFOT, NOUT, LERR, OK )
186       INFOT = 3
187       CALL DORGQL( 1, 1, 2, A, 1, X, W, 1, INFO )
188       CALL CHKXER( 'DORGQL', INFOT, NOUT, LERR, OK )
189       INFOT = 5
190       CALL DORGQL( 2, 1, 0, A, 1, X, W, 1, INFO )
191       CALL CHKXER( 'DORGQL', INFOT, NOUT, LERR, OK )
192       INFOT = 8
193       CALL DORGQL( 2, 2, 0, A, 2, X, W, 1, INFO )
194       CALL CHKXER( 'DORGQL', INFOT, NOUT, LERR, OK )
195 *
196 *     DORG2L
197 *
198       SRNAMT = 'DORG2L'
199       INFOT = 1
200       CALL DORG2L( -1, 0, 0, A, 1, X, W, INFO )
201       CALL CHKXER( 'DORG2L', INFOT, NOUT, LERR, OK )
202       INFOT = 2
203       CALL DORG2L( 0, -1, 0, A, 1, X, W, INFO )
204       CALL CHKXER( 'DORG2L', INFOT, NOUT, LERR, OK )
205       INFOT = 2
206       CALL DORG2L( 1, 2, 0, A, 1, X, W, INFO )
207       CALL CHKXER( 'DORG2L', INFOT, NOUT, LERR, OK )
208       INFOT = 3
209       CALL DORG2L( 0, 0, -1, A, 1, X, W, INFO )
210       CALL CHKXER( 'DORG2L', INFOT, NOUT, LERR, OK )
211       INFOT = 3
212       CALL DORG2L( 2, 1, 2, A, 2, X, W, INFO )
213       CALL CHKXER( 'DORG2L', INFOT, NOUT, LERR, OK )
214       INFOT = 5
215       CALL DORG2L( 2, 1, 0, A, 1, X, W, INFO )
216       CALL CHKXER( 'DORG2L', INFOT, NOUT, LERR, OK )
217 *
218 *     DORMQL
219 *
220       SRNAMT = 'DORMQL'
221       INFOT = 1
222       CALL DORMQL( '/', 'N', 0, 0, 0, A, 1, X, AF, 1, W, 1, INFO )
223       CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
224       INFOT = 2
225       CALL DORMQL( 'L', '/', 0, 0, 0, A, 1, X, AF, 1, W, 1, INFO )
226       CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
227       INFOT = 3
228       CALL DORMQL( 'L', 'N', -1, 0, 0, A, 1, X, AF, 1, W, 1, INFO )
229       CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
230       INFOT = 4
231       CALL DORMQL( 'L', 'N', 0, -1, 0, A, 1, X, AF, 1, W, 1, INFO )
232       CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
233       INFOT = 5
234       CALL DORMQL( 'L', 'N', 0, 0, -1, A, 1, X, AF, 1, W, 1, INFO )
235       CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
236       INFOT = 5
237       CALL DORMQL( 'L', 'N', 0, 1, 1, A, 1, X, AF, 1, W, 1, INFO )
238       CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
239       INFOT = 5
240       CALL DORMQL( 'R', 'N', 1, 0, 1, A, 1, X, AF, 1, W, 1, INFO )
241       CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
242       INFOT = 7
243       CALL DORMQL( 'L', 'N', 2, 1, 0, A, 1, X, AF, 2, W, 1, INFO )
244       CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
245       INFOT = 7
246       CALL DORMQL( 'R', 'N', 1, 2, 0, A, 1, X, AF, 1, W, 1, INFO )
247       CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
248       INFOT = 10
249       CALL DORMQL( 'L', 'N', 2, 1, 0, A, 2, X, AF, 1, W, 1, INFO )
250       CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
251       INFOT = 12
252       CALL DORMQL( 'L', 'N', 1, 2, 0, A, 1, X, AF, 1, W, 1, INFO )
253       CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
254       INFOT = 12
255       CALL DORMQL( 'R', 'N', 2, 1, 0, A, 1, X, AF, 2, W, 1, INFO )
256       CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
257 *
258 *     DORM2L
259 *
260       SRNAMT = 'DORM2L'
261       INFOT = 1
262       CALL DORM2L( '/', 'N', 0, 0, 0, A, 1, X, AF, 1, W, INFO )
263       CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
264       INFOT = 2
265       CALL DORM2L( 'L', '/', 0, 0, 0, A, 1, X, AF, 1, W, INFO )
266       CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
267       INFOT = 3
268       CALL DORM2L( 'L', 'N', -1, 0, 0, A, 1, X, AF, 1, W, INFO )
269       CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
270       INFOT = 4
271       CALL DORM2L( 'L', 'N', 0, -1, 0, A, 1, X, AF, 1, W, INFO )
272       CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
273       INFOT = 5
274       CALL DORM2L( 'L', 'N', 0, 0, -1, A, 1, X, AF, 1, W, INFO )
275       CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
276       INFOT = 5
277       CALL DORM2L( 'L', 'N', 0, 1, 1, A, 1, X, AF, 1, W, INFO )
278       CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
279       INFOT = 5
280       CALL DORM2L( 'R', 'N', 1, 0, 1, A, 1, X, AF, 1, W, INFO )
281       CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
282       INFOT = 7
283       CALL DORM2L( 'L', 'N', 2, 1, 0, A, 1, X, AF, 2, W, INFO )
284       CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
285       INFOT = 7
286       CALL DORM2L( 'R', 'N', 1, 2, 0, A, 1, X, AF, 1, W, INFO )
287       CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
288       INFOT = 10
289       CALL DORM2L( 'L', 'N', 2, 1, 0, A, 2, X, AF, 1, W, INFO )
290       CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
291 *
292 *     Print a summary line.
293 *
294       CALL ALAESM( PATH, OK, NOUT )
295 *
296       RETURN
297 *
298 *     End of DERRQL
299 *
300       END