120 SUBROUTINE dlatb4( PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE,
131 INTEGER IMAT, KL, KU, M, MODE, N
132 DOUBLE PRECISION ANORM, CNDNUM
138 DOUBLE PRECISION SHRINK, TENTH
139 parameter( shrink = 0.25d0, tenth = 0.1d+0 )
141 parameter( one = 1.0d+0 )
143 parameter( two = 2.0d+0 )
149 DOUBLE PRECISION BADC1, BADC2, EPS, LARGE, SMALL
153 DOUBLE PRECISION DLAMCH
154 EXTERNAL lsamen, dlamch
157 INTRINSIC abs, max, sqrt
163 SAVE eps, small, large, badc1, badc2, first
166 DATA first / .true. /
174 eps = dlamch(
'Precision' )
176 badc1 = sqrt( badc2 )
177 small = dlamch(
'Safe minimum' )
183 CALL dlabad( small, large )
184 small = shrink*( small / eps )
195 IF( lsamen( 2, c2,
'QR' ) .OR. lsamen( 2, c2,
'LQ' ) .OR.
196 $ lsamen( 2, c2,
'QL' ) .OR. lsamen( 2, c2,
'RQ' ) )
THEN
210 ELSE IF( imat.EQ.2 )
THEN
213 ELSE IF( imat.EQ.3 )
THEN
225 ELSE IF( imat.EQ.6 )
THEN
233 ELSE IF( imat.EQ.8 )
THEN
239 ELSE IF( lsamen( 2, c2,
'GE' ) )
THEN
252 ELSE IF( imat.EQ.2 )
THEN
255 ELSE IF( imat.EQ.3 )
THEN
267 ELSE IF( imat.EQ.9 )
THEN
273 IF( imat.EQ.10 )
THEN
275 ELSE IF( imat.EQ.11 )
THEN
281 ELSE IF( lsamen( 2, c2,
'GB' ) )
THEN
293 ELSE IF( imat.EQ.6 )
THEN
301 ELSE IF( imat.EQ.8 )
THEN
307 ELSE IF( lsamen( 2, c2,
'GT' ) )
THEN
328 ELSE IF( imat.EQ.4 )
THEN
334 IF( imat.EQ.5 .OR. imat.EQ.11 )
THEN
336 ELSE IF( imat.EQ.6 .OR. imat.EQ.12 )
THEN
342 ELSE IF( lsamen( 2, c2,
'PO' ) .OR. lsamen( 2, c2,
'PP' ) )
THEN
364 ELSE IF( imat.EQ.7 )
THEN
372 ELSE IF( imat.EQ.9 )
THEN
379 ELSE IF( lsamen( 2, c2,
'SY' ) .OR. lsamen( 2, c2,
'SP' ) )
THEN
401 ELSE IF( imat.EQ.8 )
THEN
409 ELSE IF( imat.EQ.10 )
THEN
415 ELSE IF( lsamen( 2, c2,
'PB' ) )
THEN
427 ELSE IF( imat.EQ.6 )
THEN
435 ELSE IF( imat.EQ.8 )
THEN
441 ELSE IF( lsamen( 2, c2,
'PT' ) )
THEN
458 ELSE IF( imat.EQ.4 )
THEN
464 IF( imat.EQ.5 .OR. imat.EQ.11 )
THEN
466 ELSE IF( imat.EQ.6 .OR. imat.EQ.12 )
THEN
472 ELSE IF( lsamen( 2, c2,
'TR' ) .OR. lsamen( 2, c2,
'TP' ) )
THEN
483 IF( mat.EQ.1 .OR. mat.EQ.7 )
THEN
486 ELSE IF( imat.LT.0 )
THEN
496 IF( mat.EQ.3 .OR. mat.EQ.9 )
THEN
498 ELSE IF( mat.EQ.4 )
THEN
500 ELSE IF( mat.EQ.10 )
THEN
508 ELSE IF( mat.EQ.6 )
THEN
514 ELSE IF( lsamen( 2, c2,
'TB' ) )
THEN
524 IF( imat.EQ.2 .OR. imat.EQ.8 )
THEN
526 ELSE IF( imat.EQ.3 .OR. imat.EQ.9 )
THEN
534 ELSE IF( imat.EQ.5 )
THEN