69 parameter( nmax = 4, lw = 3*nmax )
74 DOUBLE PRECISION ANRM, CCOND,
77 INTEGER IP( ), IW( NMAX )
78 DOUBLE PRECISION A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
79 $ R1( NMAX ), ( NMAX ), W( LW ), X( NMAX )
96 COMMON / infoc / infot, nout, ok, lerr
97 COMMON / srnamc / srnamt
105 WRITE( nout, fmt = * )
112 a( i, j ) = 1.d0 / dble( i+j )
113 af( i, j ) = 1.d0 / dble( i+j )
125 IF( lsamen( 2, c2,
'GE' ) )
THEN
134 CALL dgetrf( -1, 0, a, 1, ip, info )
135 CALL chkxer(
'DGETRF', infot, nout, lerr, ok )
137 CALL dgetrf( 0, -1, a, 1, ip, info )
138 CALL chkxer(
'DGETRF', infot, nout, lerr, ok )
140 CALL dgetrf( 2, 1, a, 1, ip, info )
141 CALL chkxer(
'DGETRF', infot, nout, lerr, ok )
147 CALL dgetf2( -1, 0, a, 1, ip, info )
148 CALL chkxer(
'DGETF2', infot, nout, lerr, ok )
150 CALL dgetf2( 0, -1, a, 1, ip, info )
151 CALL chkxer(
'DGETF2', infot, nout, lerr, ok )
153 CALL dgetf2( 2, 1, a, 1, ip, info )
154 CALL chkxer(
'DGETF2', infot, nout, lerr, ok )
160 CALL dgetri( -1, a, 1, ip, w, lw, info )
161 CALL chkxer(
'DGETRI', infot, nout, lerr, ok )
163 CALL dgetri( 2, a, 1, ip, w, lw, info )
164 CALL chkxer(
'DGETRI', infot, nout, lerr, ok )
170 CALL dgetrs(
'/', 0, 0, a, 1, ip, b, 1, info )
171 CALL chkxer(
'DGETRS', infot, nout, lerr, ok )
173 CALL dgetrs(
'N', -1, 0, a, 1, ip, b, 1, info )
174 CALL chkxer(
'DGETRS', infot, nout, lerr, ok )
176 CALL dgetrs(
'N', 0, -1, a, 1, ip, b, 1, info )
177 CALL chkxer(
'DGETRS', infot, nout, lerr, ok )
179 CALL dgetrs( 'n
', 2, 1, A, 1, IP, B, 2, INFO )
180 CALL CHKXER( 'dgetrs', INFOT, NOUT, LERR, OK )
182 CALL DGETRS( 'n
', 2, 1, A, 2, IP, B, 1, INFO )
183 CALL CHKXER( 'dgetrs', INFOT, NOUT, LERR, OK )
189 CALL DGERFS( '/
', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
191 CALL CHKXER( 'dgerfs', INFOT, NOUT, LERR, OK )
193 CALL DGERFS( 'n
', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
195 CALL CHKXER( 'dgerfs', INFOT, NOUT, LERR, OK )
197 CALL DGERFS( 'n
', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
199 CALL CHKXER( 'dgerfs', INFOT, NOUT, LERR, OK )
201 CALL DGERFS( 'n
', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
203 CALL CHKXER( 'dgerfs', INFOT, NOUT, LERR, OK )
205 CALL DGERFS( 'n
', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
207 CALL CHKXER( 'dgerfs', INFOT, NOUT, LERR, OK )
209 CALL DGERFS( 'n
', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
211 CALL CHKXER( 'dgerfs', INFOT, NOUT, LERR, OK )
213 CALL DGERFS( 'n
', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
215 CALL CHKXER( 'dgerfs', INFOT, NOUT, LERR, OK )
221 CALL DGECON( '/
', 0, A, 1, ANRM, RCOND, W, IW, INFO )
222 CALL CHKXER( 'dgecon', INFOT, NOUT, LERR, OK )
224 CALL DGECON( '1
', -1, A, 1, ANRM, RCOND, W, IW, INFO )
225 CALL CHKXER( 'dgecon', INFOT, NOUT, LERR, OK )
227 CALL DGECON( '1
', 2, A, 1, ANRM, RCOND, W, IW, INFO )
228 CALL CHKXER( 'dgecon', INFOT, NOUT, LERR, OK )
234 CALL DGEEQU( -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
235 CALL CHKXER( 'dgeequ', INFOT, NOUT, LERR, OK )
237 CALL DGEEQU( 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
238 CALL CHKXER( 'dgeequ', INFOT, NOUT, LERR, OK )
240 CALL DGEEQU( 2, 2, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
241 CALL CHKXER( 'dgeequ', INFOT, NOUT, LERR, OK )
243 ELSE IF( LSAMEN( 2, C2, 'gb
' ) ) THEN
252 CALL DGBTRF( -1, 0, 0, 0, A, 1, IP, INFO )
253 CALL CHKXER( 'dgbtrf', INFOT, NOUT, LERR, OK )
255 CALL DGBTRF( 0, -1, 0, 0, A, 1, IP, INFO )
256 CALL CHKXER( 'dgbtrf', INFOT, NOUT, LERR, OK )
258 CALL DGBTRF( 1, 1, -1, 0, A, 1, IP, INFO )
259 CALL CHKXER( 'dgbtrf', INFOT, NOUT, LERR, OK )
261 CALL DGBTRF( 1, 1, 0, -1, A, 1, IP, INFO )
262 CALL CHKXER( 'dgbtrf', INFOT, NOUT, LERR, OK )
264 CALL DGBTRF( 2, 2, 1, 1, A, 3, IP, INFO )
265 CALL CHKXER( 'dgbtrf', INFOT, NOUT, LERR, OK )
271 CALL DGBTF2( -1, 0, 0, 0, A, 1, IP, INFO )
272 CALL CHKXER( 'dgbtf2', INFOT, NOUT, LERR, OK )
274 CALL DGBTF2( 0, -1, 0, 0, A, 1, IP, INFO )
275 CALL CHKXER( 'dgbtf2', INFOT, NOUT, LERR, OK )
277 CALL DGBTF2( 1, 1, -1, 0, A, 1, IP, INFO )
278 CALL CHKXER( 'dgbtf2', INFOT, NOUT, LERR, OK )
280 CALL DGBTF2( 1, 1, 0, -1, A, 1, IP, INFO )
281 CALL CHKXER( 'dgbtf2', INFOT, NOUT, LERR, OK )
283 CALL DGBTF2( 2, 2, 1, 1, A, 3, IP, INFO )
284 CALL CHKXER( 'dgbtf2', INFOT, NOUT, LERR, OK )
290 CALL DGBTRS( '/
', 0, 0, 0, 1, A, 1, IP, B, 1, INFO )
291 CALL CHKXER( 'dgbtrs', INFOT, NOUT, LERR, OK )
293 CALL DGBTRS( 'n
', -1, 0, 0, 1, A, 1, IP, B, 1, INFO )
294 CALL CHKXER( 'dgbtrs', INFOT, NOUT, LERR, OK )
296 CALL DGBTRS( 'n
', 1, -1, 0, 1, A, 1, IP, B, 1, INFO )
297 CALL CHKXER( 'dgbtrs', INFOT, NOUT, LERR, OK )
299 CALL DGBTRS( 'n
', 1, 0, -1, 1, A, 1, IP, B, 1, INFO )
300 CALL CHKXER( 'dgbtrs', INFOT, NOUT, LERR, OK )
302 CALL DGBTRS( 'n
', 1, 0, 0, -1, A, 1, IP, B, 1, INFO )
303 CALL CHKXER( 'dgbtrs', INFOT, NOUT, LERR, OK )
305 CALL DGBTRS( 'n
', 2, 1, 1, 1, A, 3, IP, B, 2, INFO )
306 CALL CHKXER( 'dgbtrs', INFOT, NOUT, LERR, OK )
308 CALL DGBTRS( 'n
', 2, 0, 0, 1, A, 1, IP, B, 1, INFO )
309 CALL CHKXER( 'dgbtrs', INFOT, NOUT, LERR, OK )
315 CALL DGBRFS( '/
', 0, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
317 CALL CHKXER( 'dgbrfs', INFOT, NOUT, LERR, OK )
319 CALL DGBRFS( 'n
', -1, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
321 CALL CHKXER( 'dgbrfs', INFOT, NOUT, LERR, OK )
323 CALL DGBRFS( 'n
', 1, -1, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
325 CALL CHKXER( 'dgbrfs', INFOT, NOUT, LERR, OK )
327 CALL DGBRFS( 'n
', 1, 0, -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
329 CALL CHKXER( 'dgbrfs', INFOT, NOUT, LERR, OK )
331 CALL DGBRFS( 'n
', 1, 0, 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1,
333 CALL CHKXER( 'dgbrfs', INFOT, NOUT, LERR, OK )
335 CALL DGBRFS( 'n
', 2, 1, 1, 1, A, 2, AF, 4, IP, B, 2, X, 2, R1,
337 CALL CHKXER( 'dgbrfs', INFOT, NOUT, LERR, OK )
339 CALL DGBRFS( 'n
', 2, 1, 1, 1, A, 3, AF, 3, IP, B, 2, X, 2, R1,
341 CALL CHKXER( 'dgbrfs', INFOT, NOUT, LERR, OK )
343 CALL DGBRFS( 'n
', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 1, X, 2, R1,
345 CALL CHKXER( 'dgbrfs', INFOT, NOUT, LERR, OK )
347 CALL DGBRFS( 'n
', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 2, X, 1, R1,
349 CALL CHKXER( 'dgbrfs', INFOT, NOUT, LERR, OK )
355 CALL DGBCON( '/
', 0, 0, 0, A, 1, IP, ANRM, RCOND, W, IW, INFO )
356 CALL CHKXER( 'dgbcon', INFOT, NOUT, LERR, OK )
358 CALL DGBCON( '1
', -1, 0, 0, A, 1, IP, ANRM, RCOND, W, IW,
360 CALL CHKXER( 'dgbcon', INFOT, NOUT, LERR, OK )
362 CALL DGBCON( '1
', 1, -1, 0, A, 1, IP, ANRM, RCOND, W, IW,
364 CALL CHKXER( 'dgbcon', INFOT, NOUT, LERR, OK )
366 CALL DGBCON( '1
', 1, 0, -1, A, 1, IP, ANRM, RCOND, W, IW,
368 CALL CHKXER( 'dgbcon', INFOT, NOUT, LERR, OK )
370 CALL DGBCON( '1
', 2, 1, 1, A, 3, IP, ANRM, RCOND, W, IW, INFO )
371 CALL CHKXER( 'dgbcon', INFOT, NOUT, LERR, OK )
377 CALL DGBEQU( -1, 0, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
379 CALL CHKXER( 'dgbequ', INFOT, NOUT, LERR, OK )
381 CALL DGBEQU( 0, -1, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
383 CALL CHKXER( 'dgbequ', INFOT, NOUT, LERR, OK )
385 CALL DGBEQU( 1, 1, -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
387 CALL CHKXER( 'dgbequ', infot, nout, lerr, ok )
389 CALL dgbequ( 1, 1, 0, -1, a, 1, r1, r2, rcond, ccond, anrm,
391 CALL chkxer(
'DGBEQU', infot, nout, lerr, ok )
393 CALL dgbequ( 2, 2, 1, 1, a, 2, r1, r2, rcond, ccond, anrm,
395 CALL chkxer(
'DGBEQU', infot, nout, lerr, ok )
400 CALL alaesm( path, ok, nout )
subroutine dgbrfs(trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, ipiv, b, ldb, x, ldx, ferr, berr, work, iwork, info)
DGBRFS