81 SUBROUTINE sget32( RMAX, LMAX, NINFO, KNT )
88 INTEGER KNT, LMAX, NINFO
96 parameter( zero = 0.0e0, one = 1.0e0 )
98 parameter( two = 2.0e0, four = 4.0e0, eight = 8.0e0 )
101 LOGICAL LTRANL, LTRANR
102 INTEGER IB, IB1, IB2, IB3, INFO, ISGN, ITL, ITLSCL,
104 REAL BIGNUM, DEN, EPS, RES, SCALE, SGN, SMLNUM, TMP,
108 INTEGER ITVAL( 2, 2, 8 )
109 REAL B( 2, 2 ), TL( 2, 2 ), TR( 2, 2 ), VAL( 3 ),
120 INTRINSIC abs,
max,
min, sqrt
123 DATA itval / 8, 4, 2, 1, 4, 8, 1, 2, 2, 1, 8, 4, 1,
124 $ 2, 4, 8, 9, 4, 2, 1, 4, 9, 1, 2, 2, 1, 9, 4, 1,
132 smlnum = slamch(
'S' ) / eps
133 bignum = one / smlnum
134 CALL slabad( smlnum, bignum )
138 val( 1 ) = sqrt( smlnum )
140 val( 3 ) = sqrt( bignum )
151 DO 210 isgn = -1, 1, 2
161 tl( 1, 1 ) = val( itl )
162 tr( 1, 1 ) = val( itr )
163 b( 1, 1 ) = val( ib )
165 CALL slasy2( ltranl, ltranr, isgn, n1, n2, tl,
166 $ 2, tr, 2, b, 2, scale, x, 2, xnorm,
170 res = abs( ( tl( 1, 1 )+sgn*tr( 1, 1 ) )*
171 $ x( 1, 1 )-scale*b( 1, 1 ) )
173 den =
max( eps*( ( abs( tr( 1,
174 $ 1 ) )+abs( tl( 1, 1 ) ) )*abs( x( 1,
177 den = smlnum*
max( abs( x( 1, 1 ) ), one )
181 $ res = res + one / eps
182 res = res + abs( xnorm-abs( x( 1, 1 ) ) ) /
183 $
max( smlnum, xnorm ) / eps
184 IF( info.NE.0 .AND. info.NE.1 )
185 $ res = res + one / eps
186 IF( res.GT.rmax )
THEN
201 b( 1, 1 ) = val( ib1 )
202 b( 2, 1 ) = -four*val( ib2 )
203 tl( 1, 1 ) = itval( 1, 1, itl )*
205 tl( 2, 1 ) = itval( 2, 1, itl )*
207 tl( 1, 2 ) = itval( 1, 2, itl )*
211 tr( 1, 1 ) = val( itr )
213 CALL slasy2( ltranl, ltranr, isgn, n1, n2,
214 $ tl, 2, tr, 2, b, 2, scale, x,
220 tl( 1, 2 ) = tl( 2, 1 )
223 res = abs( ( tl( 1, 1 )+sgn*tr( 1, 1 ) )*
224 $ x( 1, 1 )+tl( 1, 2 )*x( 2,
226 res = res + abs( ( tl( 2, 2 )+sgn*tr( 1,
227 $ 1 ) )*x( 2, 1 )+tl( 2, 1 )*
228 $ x( 1, 1 )-scale*b( 2, 1 ) )
229 tnrm = abs( tr( 1, 1 ) ) +
230 $ abs( tl( 1, 1 ) ) +
231 $ abs( tl( 1, 2 ) ) +
232 $ abs( tl( 2, 1 ) ) +
234 xnrm =
max( abs( x( 1, 1 ) ),
236 den =
max( smlnum, smlnum*xnrm,
237 $ ( tnrm*eps )*xnrm )
240 $ res = res + one / eps
241 res = res + abs( xnorm-xnrm ) /
242 $
max( smlnum, xnorm ) / eps
243 IF( res.GT.rmax )
THEN
260 b( 1, 1 ) = val( ib1 )
261 b( 1, 2 ) = -two*val( ib2 )
262 tr( 1, 1 ) = itval( 1, 1, itr )*
264 tr( 2, 1 ) = itval( 2, 1, itr )*
266 tr( 1, 2 ) = itval( 1, 2, itr )*
268 tr( 2, 2 ) = itval( 2, 2, itr )*
270 tl( 1, 1 ) = val( itl )
272 CALL slasy2( ltranl, ltranr, isgn, n1, n2,
273 $ tl, 2, tr, 2, b, 2, scale, x,
279 tr( 1, 2 ) = tr( 2, 1 )
282 tnrm = abs( tl( 1, 1 ) ) +
283 $ abs( tr( 1, 1 ) ) +
284 $ abs( tr( 1, 2 ) ) +
285 $ abs( tr( 2, 2 ) ) +
287 xnrm = abs( x( 1, 1 ) ) + abs( x
288 res = abs( ( ( tl( 1, 1 )+sgn*tr( 1,
289 $ 1 ) ) )*( x( 1, 1 ) )+
290 $ ( sgn*tr( 2, 1 ) )*( x( 1, 2 ) )-
291 $ ( scale*b( 1, 1 ) ) )
292 res = res + abs( ( ( tl( 1, 1 )+sgn*tr( 2,
293 $ 2 ) ) )*( x( 1, 2 ) )+
294 $ ( sgn*tr( 1, 2 ) )*( x( 1, 1 ) )-
295 $ ( scale*b( 1, 2 ) ) )
296 den =
max( smlnum, smlnum*xnrm,
297 $ ( tnrm*eps )*xnrm )
300 $ res = res + one / eps
301 res = res + abs( xnorm-xnrm ) /
302 $
max( smlnum, xnorm ) / eps
303 IF( res.GT.rmax )
THEN
322 b( 1, 1 ) = val( ib1 )
323 b( 2, 1 ) = -four*val( ib2 )
324 b( 1, 2 ) = -two*val( ib3 )
326 $
min( val( ib1 ), val
327 $ ( ib2 ), val( ib3 ) )
328 tr( 1, 1 ) = itval( 1, 1, itr )*
332 tr( 1, 2 ) = itval( 1, 2, itr )*
334 tr( 2, 2 ) = itval( 2, 2, itr )*
336 tl( 1, 1 ) = itval( 1, 1, itl )*
338 tl( 2, 1 ) = itval( 2, 1, itl )*
340 tl( 1, 2 ) = itval( 1, 2, itl )*
342 tl( 2, 2 ) = itval( 2, 2, itl )*
345 CALL slasy2( ltranl, ltranr, isgn,
346 $ n1, n2, tl, 2, tr, 2,
353 tr( 1, 2 ) = tr( 2, 1 )
358 tl( 1, 2 ) = tl( 2, 1 )
361 tnrm = abs( tr( 1, 1 ) ) +
362 $ abs( tr( 2, 1 ) ) +
363 $ abs( tr( 1, 2 ) ) +
364 $ abs( tr( 2, 2 ) ) +
365 $ abs( tl( 1, 1 ) ) +
366 $ abs( tl( 2, 1 ) ) +
367 $ abs( tl( 1, 2 ) ) +
369 xnrm =
max( abs( x( 1, 1 ) )+
374 $ 1 ) ) )*( x( 1, 1 ) )+
375 $ ( sgn*tr( 2, 1 ) )*
378 $ ( scale*b( 1, 1 ) ) )
379 res = res + abs( ( tl( 1, 1 ) )*
383 $ ( sgn*tr( 2, 2 ) )*
384 $ ( x( 1, 2 ) )+( tl( 1, 2 ) )*
386 $ ( scale*b( 1, 2 ) ) )
387 res = res + abs( ( tl( 2, 1 ) )*
389 $ ( sgn*tr( 1, 1 ) )*
391 $ ( sgn*tr( 2, 1 ) )*
392 $ ( x( 2, 2 ) )+( tl( 2, 2 ) )*
394 $ ( scale*b( 2, 1 ) ) )
395 res = res + abs( ( ( tl( 2,
396 $ 2 )+sgn*tr( 2, 2 ) ) )*
398 $ ( sgn*tr( 1, 2 ) )*
399 $ ( x( 2, 1 ) )+( tl( 2, 1 ) )*
401 $ ( scale*b( 2, 2 ) ) )
402 den =
max( smlnum, smlnum*xnrm,
403 $ ( tnrm*eps )*xnrm )
406 $ res = res + one / eps
408 $
max( smlnum, xnorm ) / eps
409 IF( res.GT.rmax )
THEN