104 SUBROUTINE dlas2( F, G, H, SSMIN, SSMAX )
111 DOUBLE PRECISION F, G, H, SSMAX, SSMIN
117 DOUBLE PRECISION ZERO
118 parameter( zero = 0.0d0 )
120 parameter( one = 1.0d0 )
122 parameter( two = 2.0d0 )
125 DOUBLE PRECISION AS, AT, AU, C, FA, FHMN, FHMX, GA, HA
128 INTRINSIC abs, max, min, sqrt
137 IF( fhmn.EQ.zero )
THEN
139 IF( fhmx.EQ.zero )
THEN
142 ssmax = max( fhmx, ga )*sqrt( one+
143 $ ( min( fhmx, ga ) / max( fhmx, ga ) )**2 )
146 IF( ga.LT.fhmx )
THEN
147 as = one + fhmn / fhmx
148 at = ( fhmx-fhmn ) / fhmx
149 au = ( ga / fhmx )**2
150 c = two / ( sqrt( as*as+au )+sqrt( at*at+au ) )
155 IF( au.EQ.zero )
THEN
161 ssmin = ( fhmn*fhmx ) / ga
164 as = one + fhmn / fhmx
165 at = ( fhmx-fhmn ) / fhmx
166 c = one / ( sqrt( one+( as*au )**2 )+
167 $ sqrt( one+( at*au )**2 ) )
168 ssmin = ( fhmn*c )*au
169 ssmin = ssmin + ssmin
subroutine dlas2(f, g, h, ssmin, ssmax)
DLAS2 computes singular values of a 2-by-2 triangular matrix.