121 SUBROUTINE zlatb4( PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE,
132 INTEGER IMAT, KL, KU, M, MODE, N
133 DOUBLE PRECISION ANORM, CNDNUM
139 DOUBLE PRECISION SHRINK, TENTH
140 parameter( shrink = 0.25d0, tenth = 0.1d+0 )
142 parameter( one = 1.0d+0 )
144 parameter( two = 2.0d+0 )
150 DOUBLE PRECISION BADC1, BADC2, EPS, LARGE, SMALL
154 DOUBLE PRECISION DLAMCH
155 EXTERNAL lsamen, dlamch
158 INTRINSIC abs, max, sqrt
164 SAVE eps, small, large, badc1, badc2, first
167 DATA first / .true. /
175 eps = dlamch(
'Precision' )
177 badc1 = sqrt( badc2 )
178 small = dlamch(
'Safe minimum' )
184 CALL dlabad( small, large )
185 small = shrink*( small / eps )
199 IF( lsamen( 2, c2,
'QR' ) .OR. lsamen( 2, c2,
'LQ' ) .OR.
200 $ lsamen( 2, c2,
'QL' ) .OR. lsamen( 2, c2,
'RQ' ) )
THEN
211 ELSE IF( imat.EQ.2 )
THEN
214 ELSE IF( imat.EQ.3 )
THEN
226 ELSE IF( imat.EQ.6 )
THEN
234 ELSE IF( imat.EQ.8 )
THEN
240 ELSE IF( lsamen( 2, c2,
'GE' ) )
THEN
253 ELSE IF( imat.EQ.2 )
THEN
256 ELSE IF( imat.EQ.3 )
THEN
268 ELSE IF( imat.EQ.9 )
THEN
274 IF( imat.EQ.10 )
THEN
276 ELSE IF( imat.EQ.11 )
THEN
282 ELSE IF( lsamen( 2, c2,
'GB' ) )
THEN
294 ELSE IF( imat.EQ.6 )
THEN
302 ELSE IF( imat.EQ.8 )
THEN
308 ELSE IF( lsamen( 2, c2,
'GT' ) )
THEN
329 ELSE IF( imat.EQ.4 )
THEN
335 IF( imat.EQ.5 .OR. imat.EQ.11 )
THEN
337 ELSE IF( imat.EQ.6 .OR. imat.EQ.12 )
THEN
343 ELSE IF( lsamen( 2, c2,
'PO' ) .OR. lsamen( 2, c2,
'PP' ) )
THEN
365 ELSE IF( imat.EQ.7 )
THEN
373 ELSE IF( imat.EQ.9 )
THEN
379 ELSE IF( lsamen( 2, c2,
'HE' ) .OR. lsamen( 2, c2,
'HP' ) .OR.
380 $ lsamen( 2, c2,
'SY' ) .OR. lsamen( 2, c2,
'SP' ) )
THEN
402 ELSE IF( imat.EQ.8 )
THEN
410 ELSE IF( imat.EQ.10 )
THEN
416 ELSE IF( lsamen( 2, c2,
'PB' ) )
THEN
428 ELSE IF( imat.EQ.6 )
THEN
436 ELSE IF( imat.EQ.8 )
THEN
442 ELSE IF( lsamen( 2, c2,
'PT' ) )
THEN
459 ELSE IF( imat.EQ.4 )
THEN
465 IF( imat.EQ.5 .OR. imat.EQ.11 )
THEN
467 ELSE IF( imat.EQ.6 .OR. imat.EQ.12 )
THEN
473 ELSE IF( lsamen( 2, c2,
'TR' ) .OR. lsamen( 2, c2,
'TP' ) )
THEN
484 IF( mat.EQ.1 .OR. mat.EQ.7 )
THEN
487 ELSE IF( imat.LT.0 )
THEN
497 IF( mat.EQ.3 .OR. mat.EQ.9 )
THEN
499 ELSE IF( mat.EQ.4 .OR. mat.EQ.10 )
THEN
507 ELSE IF( mat.EQ.6 )
THEN
513 ELSE IF( lsamen( 2, c2,
'TB' ) )
THEN
523 IF( imat.EQ.2 .OR. imat.EQ.8 )
THEN
525 ELSE IF( imat.EQ.3 .OR. imat.EQ.9 )
THEN
533 ELSE IF( imat.EQ.5 )
THEN