119 SUBROUTINE zlatb4( PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE,
129 INTEGER IMAT, KL, KU, M, MODE, N
130 DOUBLE PRECISION ANORM, CNDNUM
136 DOUBLE PRECISION SHRINK, TENTH
137 parameter( shrink = 0.25d0, tenth = 0.1d+0 )
139 parameter( one = 1.0d+0 )
141 parameter( two = 2.0d+0 )
147 DOUBLE PRECISION BADC1, BADC2, EPS, LARGE, SMALL
151 DOUBLE PRECISION DLAMCH
152 EXTERNAL lsamen, dlamch
155 INTRINSIC abs, max, sqrt
161 SAVE eps, small, large, badc1, badc2, first
164 DATA first / .true. /
172 eps = dlamch(
'Precision' )
174 badc1 = sqrt( badc2 )
175 small = dlamch(
'Safe minimum' )
181 CALL dlabad( small, large )
182 small = shrink*( small / eps )
196 IF( lsamen( 2, c2,
'QR' ) .OR. lsamen( 2, c2,
'LQ' ) .OR.
197 $ lsamen( 2, c2,
'QL' ) .OR. lsamen( 2, c2,
'RQ' ) )
THEN
208 ELSE IF( imat.EQ.2 )
THEN
211 ELSE IF( imat.EQ.3 )
THEN
223 ELSE IF( imat.EQ.6 )
THEN
231 ELSE IF( imat.EQ.8 )
THEN
237 ELSE IF( lsamen( 2, c2,
'GE' ) )
THEN
250 ELSE IF( imat.EQ.2 )
THEN
253 ELSE IF( imat.EQ.3 )
THEN
265 ELSE IF( imat.EQ.9 )
THEN
271 IF( imat.EQ.10 )
THEN
273 ELSE IF( imat.EQ.11 )
THEN
279 ELSE IF( lsamen( 2, c2,
'GB' ) )
THEN
291 ELSE IF( imat.EQ.6 )
THEN
299 ELSE IF( imat.EQ.8 )
THEN
305 ELSE IF( lsamen( 2, c2,
'GT' ) )
THEN
326 ELSE IF( imat.EQ.4 )
THEN
332 IF( imat.EQ.5 .OR. imat.EQ.11 )
THEN
334 ELSE IF( imat.EQ.6 .OR. imat.EQ.12 )
THEN
340 ELSE IF( lsamen( 2, c2,
'PO' ) .OR. lsamen( 2, c2,
'PP' ) )
THEN
362 ELSE IF( imat.EQ.7 )
THEN
370 ELSE IF( imat.EQ.9 )
THEN
376 ELSE IF( lsamen( 2, c2,
'HE' ) .OR. lsamen( 2, c2,
'HP' ) .OR.
377 $ lsamen( 2, c2,
'SY' ) .OR. lsamen( 2, c2,
'SP' ) )
THEN
399 ELSE IF( imat.EQ.8 )
THEN
407 ELSE IF( imat.EQ.10 )
THEN
413 ELSE IF( lsamen( 2, c2,
'PB' ) )
THEN
425 ELSE IF( imat.EQ.6 )
THEN
433 ELSE IF( imat.EQ.8 )
THEN
439 ELSE IF( lsamen( 2, c2,
'PT' ) )
THEN
456 ELSE IF( imat.EQ.4 )
THEN
462 IF( imat.EQ.5 .OR. imat.EQ.11 )
THEN
464 ELSE IF( imat.EQ.6 .OR. imat.EQ.12 )
THEN
470 ELSE IF( lsamen( 2, c2,
'TR' ) .OR. lsamen( 2, c2,
'TP' ) )
THEN
481 IF( mat.EQ.1 .OR. mat.EQ.7 )
THEN
484 ELSE IF( imat.LT.0 )
THEN
494 IF( mat.EQ.3 .OR. mat.EQ.9 )
THEN
496 ELSE IF( mat.EQ.4 .OR. mat.EQ.10 )
THEN
504 ELSE IF( mat.EQ.6 )
THEN
510 ELSE IF( lsamen( 2, c2,
'TB' ) )
THEN
521 IF( mat.EQ.2 .OR. mat.EQ.8 )
THEN
523 ELSE IF( mat.EQ.3 .OR. mat.EQ.9 )
THEN
531 ELSE IF( mat.EQ.5 )
THEN
subroutine dlabad(SMALL, LARGE)
DLABAD
subroutine zlatb4(PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE, CNDNUM, DIST)
ZLATB4