1 SUBROUTINE ZERRLS( PATH, NUNIT )
2 *
3 * -- LAPACK test routine (version 3.1) --
4 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
5 * November 2006
6 *
7 * .. Scalar Arguments ..
8 CHARACTER*3 PATH
9 INTEGER NUNIT
10 * ..
11 *
12 * Purpose
13 * =======
14 *
15 * ZERRLS tests the error exits for the COMPLEX*16 least squares
16 * driver routines (ZGELS, CGELSS, CGELSX, CGELSY, CGELSD).
17 *
18 * Arguments
19 * =========
20 *
21 * PATH (input) CHARACTER*3
22 * The LAPACK path name for the routines to be tested.
23 *
24 * NUNIT (input) INTEGER
25 * The unit number for output.
26 *
27 * =====================================================================
28 *
29 * .. Parameters ..
30 INTEGER NMAX
31 PARAMETER ( NMAX = 2 )
32 * ..
33 * .. Local Scalars ..
34 CHARACTER*2 C2
35 INTEGER INFO, IRNK
36 DOUBLE PRECISION RCOND
37 * ..
38 * .. Local Arrays ..
39 INTEGER IP( NMAX )
40 DOUBLE PRECISION RW( NMAX ), S( NMAX )
41 COMPLEX*16 A( NMAX, NMAX ), B( NMAX, NMAX ), W( NMAX )
42 * ..
43 * .. External Functions ..
44 LOGICAL LSAMEN
45 EXTERNAL LSAMEN
46 * ..
47 * .. External Subroutines ..
48 EXTERNAL ALAESM, CHKXER, ZGELS, ZGELSD, ZGELSS, ZGELSX,
49 $ ZGELSY
50 * ..
51 * .. Scalars in Common ..
52 LOGICAL LERR, OK
53 CHARACTER*32 SRNAMT
54 INTEGER INFOT, NOUT
55 * ..
56 * .. Common blocks ..
57 COMMON / INFOC / INFOT, NOUT, OK, LERR
58 COMMON / SRNAMC / SRNAMT
59 * ..
60 * .. Executable Statements ..
61 *
62 NOUT = NUNIT
63 C2 = PATH( 2: 3 )
64 A( 1, 1 ) = ( 1.0D+0, 0.0D+0 )
65 A( 1, 2 ) = ( 2.0D+0, 0.0D+0 )
66 A( 2, 2 ) = ( 3.0D+0, 0.0D+0 )
67 A( 2, 1 ) = ( 4.0D+0, 0.0D+0 )
68 OK = .TRUE.
69 WRITE( NOUT, FMT = * )
70 *
71 * Test error exits for the least squares driver routines.
72 *
73 IF( LSAMEN( 2, C2, 'LS' ) ) THEN
74 *
75 * ZGELS
76 *
77 SRNAMT = 'ZGELS '
78 INFOT = 1
79 CALL ZGELS( '/', 0, 0, 0, A, 1, B, 1, W, 1, INFO )
80 CALL CHKXER( 'ZGELS ', INFOT, NOUT, LERR, OK )
81 INFOT = 2
82 CALL ZGELS( 'N', -1, 0, 0, A, 1, B, 1, W, 1, INFO )
83 CALL CHKXER( 'ZGELS ', INFOT, NOUT, LERR, OK )
84 INFOT = 3
85 CALL ZGELS( 'N', 0, -1, 0, A, 1, B, 1, W, 1, INFO )
86 CALL CHKXER( 'ZGELS ', INFOT, NOUT, LERR, OK )
87 INFOT = 4
88 CALL ZGELS( 'N', 0, 0, -1, A, 1, B, 1, W, 1, INFO )
89 CALL CHKXER( 'ZGELS ', INFOT, NOUT, LERR, OK )
90 INFOT = 6
91 CALL ZGELS( 'N', 2, 0, 0, A, 1, B, 2, W, 2, INFO )
92 CALL CHKXER( 'ZGELS ', INFOT, NOUT, LERR, OK )
93 INFOT = 8
94 CALL ZGELS( 'N', 2, 0, 0, A, 2, B, 1, W, 2, INFO )
95 CALL CHKXER( 'ZGELS ', INFOT, NOUT, LERR, OK )
96 INFOT = 10
97 CALL ZGELS( 'N', 1, 1, 0, A, 1, B, 1, W, 1, INFO )
98 CALL CHKXER( 'ZGELS ', INFOT, NOUT, LERR, OK )
99 *
100 * ZGELSS
101 *
102 SRNAMT = 'ZGELSS'
103 INFOT = 1
104 CALL ZGELSS( -1, 0, 0, A, 1, B, 1, S, RCOND, IRNK, W, 1, RW,
105 $ INFO )
106 CALL CHKXER( 'ZGELSS', INFOT, NOUT, LERR, OK )
107 INFOT = 2
108 CALL ZGELSS( 0, -1, 0, A, 1, B, 1, S, RCOND, IRNK, W, 1, RW,
109 $ INFO )
110 CALL CHKXER( 'ZGELSS', INFOT, NOUT, LERR, OK )
111 INFOT = 3
112 CALL ZGELSS( 0, 0, -1, A, 1, B, 1, S, RCOND, IRNK, W, 1, RW,
113 $ INFO )
114 CALL CHKXER( 'ZGELSS', INFOT, NOUT, LERR, OK )
115 INFOT = 5
116 CALL ZGELSS( 2, 0, 0, A, 1, B, 2, S, RCOND, IRNK, W, 2, RW,
117 $ INFO )
118 CALL CHKXER( 'ZGELSS', INFOT, NOUT, LERR, OK )
119 INFOT = 7
120 CALL ZGELSS( 2, 0, 0, A, 2, B, 1, S, RCOND, IRNK, W, 2, RW,
121 $ INFO )
122 CALL CHKXER( 'ZGELSS', INFOT, NOUT, LERR, OK )
123 *
124 * ZGELSX
125 *
126 SRNAMT = 'ZGELSX'
127 INFOT = 1
128 CALL ZGELSX( -1, 0, 0, A, 1, B, 1, IP, RCOND, IRNK, W, RW,
129 $ INFO )
130 CALL CHKXER( 'ZGELSX', INFOT, NOUT, LERR, OK )
131 INFOT = 2
132 CALL ZGELSX( 0, -1, 0, A, 1, B, 1, IP, RCOND, IRNK, W, RW,
133 $ INFO )
134 CALL CHKXER( 'ZGELSX', INFOT, NOUT, LERR, OK )
135 INFOT = 3
136 CALL ZGELSX( 0, 0, -1, A, 1, B, 1, IP, RCOND, IRNK, W, RW,
137 $ INFO )
138 CALL CHKXER( 'ZGELSX', INFOT, NOUT, LERR, OK )
139 INFOT = 5
140 CALL ZGELSX( 2, 0, 0, A, 1, B, 2, IP, RCOND, IRNK, W, RW,
141 $ INFO )
142 CALL CHKXER( 'ZGELSX', INFOT, NOUT, LERR, OK )
143 INFOT = 7
144 CALL ZGELSX( 2, 0, 0, A, 2, B, 1, IP, RCOND, IRNK, W, RW,
145 $ INFO )
146 CALL CHKXER( 'ZGELSX', INFOT, NOUT, LERR, OK )
147 *
148 * ZGELSY
149 *
150 SRNAMT = 'ZGELSY'
151 INFOT = 1
152 CALL ZGELSY( -1, 0, 0, A, 1, B, 1, IP, RCOND, IRNK, W, 10, RW,
153 $ INFO )
154 CALL CHKXER( 'ZGELSY', INFOT, NOUT, LERR, OK )
155 INFOT = 2
156 CALL ZGELSY( 0, -1, 0, A, 1, B, 1, IP, RCOND, IRNK, W, 10, RW,
157 $ INFO )
158 CALL CHKXER( 'ZGELSY', INFOT, NOUT, LERR, OK )
159 INFOT = 3
160 CALL ZGELSY( 0, 0, -1, A, 1, B, 1, IP, RCOND, IRNK, W, 10, RW,
161 $ INFO )
162 CALL CHKXER( 'ZGELSY', INFOT, NOUT, LERR, OK )
163 INFOT = 5
164 CALL ZGELSY( 2, 0, 0, A, 1, B, 2, IP, RCOND, IRNK, W, 10, RW,
165 $ INFO )
166 CALL CHKXER( 'ZGELSY', INFOT, NOUT, LERR, OK )
167 INFOT = 7
168 CALL ZGELSY( 2, 0, 0, A, 2, B, 1, IP, RCOND, IRNK, W, 10, RW,
169 $ INFO )
170 CALL CHKXER( 'ZGELSY', INFOT, NOUT, LERR, OK )
171 INFOT = 12
172 CALL ZGELSY( 0, 3, 0, A, 1, B, 3, IP, RCOND, IRNK, W, 1, RW,
173 $ INFO )
174 CALL CHKXER( 'ZGELSY', INFOT, NOUT, LERR, OK )
175 *
176 * ZGELSD
177 *
178 SRNAMT = 'ZGELSD'
179 INFOT = 1
180 CALL ZGELSD( -1, 0, 0, A, 1, B, 1, S, RCOND, IRNK, W, 10, RW,
181 $ IP, INFO )
182 CALL CHKXER( 'ZGELSD', INFOT, NOUT, LERR, OK )
183 INFOT = 2
184 CALL ZGELSD( 0, -1, 0, A, 1, B, 1, S, RCOND, IRNK, W, 10, RW,
185 $ IP, INFO )
186 CALL CHKXER( 'ZGELSD', INFOT, NOUT, LERR, OK )
187 INFOT = 3
188 CALL ZGELSD( 0, 0, -1, A, 1, B, 1, S, RCOND, IRNK, W, 10, RW,
189 $ IP, INFO )
190 CALL CHKXER( 'ZGELSD', INFOT, NOUT, LERR, OK )
191 INFOT = 5
192 CALL ZGELSD( 2, 0, 0, A, 1, B, 2, S, RCOND, IRNK, W, 10, RW,
193 $ IP, INFO )
194 CALL CHKXER( 'ZGELSD', INFOT, NOUT, LERR, OK )
195 INFOT = 7
196 CALL ZGELSD( 2, 0, 0, A, 2, B, 1, S, RCOND, IRNK, W, 10, RW,
197 $ IP, INFO )
198 CALL CHKXER( 'ZGELSD', INFOT, NOUT, LERR, OK )
199 INFOT = 12
200 CALL ZGELSD( 2, 2, 1, A, 2, B, 2, S, RCOND, IRNK, W, 1, RW, IP,
201 $ INFO )
202 CALL CHKXER( 'ZGELSD', INFOT, NOUT, LERR, OK )
203 END IF
204 *
205 * Print a summary line.
206 *
207 CALL ALAESM( PATH, OK, NOUT )
208 *
209 RETURN
210 *
211 * End of ZERRLS
212 *
213 END
2 *
3 * -- LAPACK test routine (version 3.1) --
4 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
5 * November 2006
6 *
7 * .. Scalar Arguments ..
8 CHARACTER*3 PATH
9 INTEGER NUNIT
10 * ..
11 *
12 * Purpose
13 * =======
14 *
15 * ZERRLS tests the error exits for the COMPLEX*16 least squares
16 * driver routines (ZGELS, CGELSS, CGELSX, CGELSY, CGELSD).
17 *
18 * Arguments
19 * =========
20 *
21 * PATH (input) CHARACTER*3
22 * The LAPACK path name for the routines to be tested.
23 *
24 * NUNIT (input) INTEGER
25 * The unit number for output.
26 *
27 * =====================================================================
28 *
29 * .. Parameters ..
30 INTEGER NMAX
31 PARAMETER ( NMAX = 2 )
32 * ..
33 * .. Local Scalars ..
34 CHARACTER*2 C2
35 INTEGER INFO, IRNK
36 DOUBLE PRECISION RCOND
37 * ..
38 * .. Local Arrays ..
39 INTEGER IP( NMAX )
40 DOUBLE PRECISION RW( NMAX ), S( NMAX )
41 COMPLEX*16 A( NMAX, NMAX ), B( NMAX, NMAX ), W( NMAX )
42 * ..
43 * .. External Functions ..
44 LOGICAL LSAMEN
45 EXTERNAL LSAMEN
46 * ..
47 * .. External Subroutines ..
48 EXTERNAL ALAESM, CHKXER, ZGELS, ZGELSD, ZGELSS, ZGELSX,
49 $ ZGELSY
50 * ..
51 * .. Scalars in Common ..
52 LOGICAL LERR, OK
53 CHARACTER*32 SRNAMT
54 INTEGER INFOT, NOUT
55 * ..
56 * .. Common blocks ..
57 COMMON / INFOC / INFOT, NOUT, OK, LERR
58 COMMON / SRNAMC / SRNAMT
59 * ..
60 * .. Executable Statements ..
61 *
62 NOUT = NUNIT
63 C2 = PATH( 2: 3 )
64 A( 1, 1 ) = ( 1.0D+0, 0.0D+0 )
65 A( 1, 2 ) = ( 2.0D+0, 0.0D+0 )
66 A( 2, 2 ) = ( 3.0D+0, 0.0D+0 )
67 A( 2, 1 ) = ( 4.0D+0, 0.0D+0 )
68 OK = .TRUE.
69 WRITE( NOUT, FMT = * )
70 *
71 * Test error exits for the least squares driver routines.
72 *
73 IF( LSAMEN( 2, C2, 'LS' ) ) THEN
74 *
75 * ZGELS
76 *
77 SRNAMT = 'ZGELS '
78 INFOT = 1
79 CALL ZGELS( '/', 0, 0, 0, A, 1, B, 1, W, 1, INFO )
80 CALL CHKXER( 'ZGELS ', INFOT, NOUT, LERR, OK )
81 INFOT = 2
82 CALL ZGELS( 'N', -1, 0, 0, A, 1, B, 1, W, 1, INFO )
83 CALL CHKXER( 'ZGELS ', INFOT, NOUT, LERR, OK )
84 INFOT = 3
85 CALL ZGELS( 'N', 0, -1, 0, A, 1, B, 1, W, 1, INFO )
86 CALL CHKXER( 'ZGELS ', INFOT, NOUT, LERR, OK )
87 INFOT = 4
88 CALL ZGELS( 'N', 0, 0, -1, A, 1, B, 1, W, 1, INFO )
89 CALL CHKXER( 'ZGELS ', INFOT, NOUT, LERR, OK )
90 INFOT = 6
91 CALL ZGELS( 'N', 2, 0, 0, A, 1, B, 2, W, 2, INFO )
92 CALL CHKXER( 'ZGELS ', INFOT, NOUT, LERR, OK )
93 INFOT = 8
94 CALL ZGELS( 'N', 2, 0, 0, A, 2, B, 1, W, 2, INFO )
95 CALL CHKXER( 'ZGELS ', INFOT, NOUT, LERR, OK )
96 INFOT = 10
97 CALL ZGELS( 'N', 1, 1, 0, A, 1, B, 1, W, 1, INFO )
98 CALL CHKXER( 'ZGELS ', INFOT, NOUT, LERR, OK )
99 *
100 * ZGELSS
101 *
102 SRNAMT = 'ZGELSS'
103 INFOT = 1
104 CALL ZGELSS( -1, 0, 0, A, 1, B, 1, S, RCOND, IRNK, W, 1, RW,
105 $ INFO )
106 CALL CHKXER( 'ZGELSS', INFOT, NOUT, LERR, OK )
107 INFOT = 2
108 CALL ZGELSS( 0, -1, 0, A, 1, B, 1, S, RCOND, IRNK, W, 1, RW,
109 $ INFO )
110 CALL CHKXER( 'ZGELSS', INFOT, NOUT, LERR, OK )
111 INFOT = 3
112 CALL ZGELSS( 0, 0, -1, A, 1, B, 1, S, RCOND, IRNK, W, 1, RW,
113 $ INFO )
114 CALL CHKXER( 'ZGELSS', INFOT, NOUT, LERR, OK )
115 INFOT = 5
116 CALL ZGELSS( 2, 0, 0, A, 1, B, 2, S, RCOND, IRNK, W, 2, RW,
117 $ INFO )
118 CALL CHKXER( 'ZGELSS', INFOT, NOUT, LERR, OK )
119 INFOT = 7
120 CALL ZGELSS( 2, 0, 0, A, 2, B, 1, S, RCOND, IRNK, W, 2, RW,
121 $ INFO )
122 CALL CHKXER( 'ZGELSS', INFOT, NOUT, LERR, OK )
123 *
124 * ZGELSX
125 *
126 SRNAMT = 'ZGELSX'
127 INFOT = 1
128 CALL ZGELSX( -1, 0, 0, A, 1, B, 1, IP, RCOND, IRNK, W, RW,
129 $ INFO )
130 CALL CHKXER( 'ZGELSX', INFOT, NOUT, LERR, OK )
131 INFOT = 2
132 CALL ZGELSX( 0, -1, 0, A, 1, B, 1, IP, RCOND, IRNK, W, RW,
133 $ INFO )
134 CALL CHKXER( 'ZGELSX', INFOT, NOUT, LERR, OK )
135 INFOT = 3
136 CALL ZGELSX( 0, 0, -1, A, 1, B, 1, IP, RCOND, IRNK, W, RW,
137 $ INFO )
138 CALL CHKXER( 'ZGELSX', INFOT, NOUT, LERR, OK )
139 INFOT = 5
140 CALL ZGELSX( 2, 0, 0, A, 1, B, 2, IP, RCOND, IRNK, W, RW,
141 $ INFO )
142 CALL CHKXER( 'ZGELSX', INFOT, NOUT, LERR, OK )
143 INFOT = 7
144 CALL ZGELSX( 2, 0, 0, A, 2, B, 1, IP, RCOND, IRNK, W, RW,
145 $ INFO )
146 CALL CHKXER( 'ZGELSX', INFOT, NOUT, LERR, OK )
147 *
148 * ZGELSY
149 *
150 SRNAMT = 'ZGELSY'
151 INFOT = 1
152 CALL ZGELSY( -1, 0, 0, A, 1, B, 1, IP, RCOND, IRNK, W, 10, RW,
153 $ INFO )
154 CALL CHKXER( 'ZGELSY', INFOT, NOUT, LERR, OK )
155 INFOT = 2
156 CALL ZGELSY( 0, -1, 0, A, 1, B, 1, IP, RCOND, IRNK, W, 10, RW,
157 $ INFO )
158 CALL CHKXER( 'ZGELSY', INFOT, NOUT, LERR, OK )
159 INFOT = 3
160 CALL ZGELSY( 0, 0, -1, A, 1, B, 1, IP, RCOND, IRNK, W, 10, RW,
161 $ INFO )
162 CALL CHKXER( 'ZGELSY', INFOT, NOUT, LERR, OK )
163 INFOT = 5
164 CALL ZGELSY( 2, 0, 0, A, 1, B, 2, IP, RCOND, IRNK, W, 10, RW,
165 $ INFO )
166 CALL CHKXER( 'ZGELSY', INFOT, NOUT, LERR, OK )
167 INFOT = 7
168 CALL ZGELSY( 2, 0, 0, A, 2, B, 1, IP, RCOND, IRNK, W, 10, RW,
169 $ INFO )
170 CALL CHKXER( 'ZGELSY', INFOT, NOUT, LERR, OK )
171 INFOT = 12
172 CALL ZGELSY( 0, 3, 0, A, 1, B, 3, IP, RCOND, IRNK, W, 1, RW,
173 $ INFO )
174 CALL CHKXER( 'ZGELSY', INFOT, NOUT, LERR, OK )
175 *
176 * ZGELSD
177 *
178 SRNAMT = 'ZGELSD'
179 INFOT = 1
180 CALL ZGELSD( -1, 0, 0, A, 1, B, 1, S, RCOND, IRNK, W, 10, RW,
181 $ IP, INFO )
182 CALL CHKXER( 'ZGELSD', INFOT, NOUT, LERR, OK )
183 INFOT = 2
184 CALL ZGELSD( 0, -1, 0, A, 1, B, 1, S, RCOND, IRNK, W, 10, RW,
185 $ IP, INFO )
186 CALL CHKXER( 'ZGELSD', INFOT, NOUT, LERR, OK )
187 INFOT = 3
188 CALL ZGELSD( 0, 0, -1, A, 1, B, 1, S, RCOND, IRNK, W, 10, RW,
189 $ IP, INFO )
190 CALL CHKXER( 'ZGELSD', INFOT, NOUT, LERR, OK )
191 INFOT = 5
192 CALL ZGELSD( 2, 0, 0, A, 1, B, 2, S, RCOND, IRNK, W, 10, RW,
193 $ IP, INFO )
194 CALL CHKXER( 'ZGELSD', INFOT, NOUT, LERR, OK )
195 INFOT = 7
196 CALL ZGELSD( 2, 0, 0, A, 2, B, 1, S, RCOND, IRNK, W, 10, RW,
197 $ IP, INFO )
198 CALL CHKXER( 'ZGELSD', INFOT, NOUT, LERR, OK )
199 INFOT = 12
200 CALL ZGELSD( 2, 2, 1, A, 2, B, 2, S, RCOND, IRNK, W, 1, RW, IP,
201 $ INFO )
202 CALL CHKXER( 'ZGELSD', INFOT, NOUT, LERR, OK )
203 END IF
204 *
205 * Print a summary line.
206 *
207 CALL ALAESM( PATH, OK, NOUT )
208 *
209 RETURN
210 *
211 * End of ZERRLS
212 *
213 END