169 SUBROUTINE dlatb9( PATH, IMAT, M, P, N, TYPE, KLA, KUA, KLB, KUB,
170 $ anorm, bnorm, modea, modeb, cndnma, cndnmb,
179 CHARACTER DISTA, DISTB, TYPE
181 INTEGER IMAT, KLA, KLB, KUA, KUB, M, MODEA, MODEB, N, P
182 DOUBLE PRECISION ANORM, BNORM, CNDNMA, CNDNMB
188 DOUBLE PRECISION SHRINK, TENTH
189 parameter ( shrink = 0.25d0, tenth = 0.1d+0 )
190 DOUBLE PRECISION ONE, TEN
191 parameter ( one = 1.0d+0, ten = 1.0d+1 )
195 DOUBLE PRECISION BADC1, BADC2, EPS, LARGE, SMALL
199 DOUBLE PRECISION DLAMCH
200 EXTERNAL lsamen, dlamch
209 SAVE eps, small, large, badc1, badc2, first
212 DATA first / .true. /
220 eps = dlamch(
'Precision' )
222 badc1 = sqrt( badc2 )
223 small = dlamch(
'Safe minimum' )
229 CALL dlabad( small, large )
230 small = shrink*( small / eps )
244 IF( lsamen( 3, path,
'GRQ' ) .OR. lsamen( 3, path,
'LSE' ) .OR.
245 $ lsamen( 3, path,
'GSV' ) )
THEN
258 ELSE IF( imat.EQ.2 )
THEN
267 ELSE IF( imat.EQ.3 )
THEN
287 ELSE IF( lsamen( 3, path,
'GQR' ) .OR. lsamen( 3, path,
'GLM' ) )
300 ELSE IF( imat.EQ.2 )
THEN
309 ELSE IF( imat.EQ.3 )
THEN
334 IF( lsamen( 3, path,
'GQR' ) .OR. lsamen( 3, path,
'GRQ' ) .OR.
335 $ lsamen( 3, path,
'GSV' ) )
THEN
339 ELSE IF( imat.EQ.6 )
THEN
342 ELSE IF( imat.EQ.7 )
THEN
345 ELSE IF( imat.EQ.8 )
THEN
353 IF( lsamen( 3, path,
'GQR' ) .OR. lsamen( 3, path,
'GRQ' ) )
THEN
357 ELSE IF( imat.EQ.8 )
THEN
subroutine dlabad(SMALL, LARGE)
DLABAD
subroutine dlatb9(PATH, IMAT, M, P, N, TYPE, KLA, KUA, KLB, KUB, ANORM, BNORM, MODEA, MODEB, CNDNMA, CNDNMB, DISTA, DISTB)
DLATB9