81 SUBROUTINE dget32( RMAX, LMAX, NINFO, KNT )
88 INTEGER KNT, LMAX, NINFO
95 DOUBLE PRECISION ZERO, ONE
96 parameter( zero = 0.0d0, one = 1.0d0 )
97 DOUBLE PRECISION TWO, FOUR, EIGHT
98 parameter( two = 2.0d0, four = 4.0d0, eight = 8.0d0 )
101 LOGICAL LTRANL, LTRANR
102 INTEGER IB, IB1, IB2, IB3, INFO, ISGN, ITL, ITLSCL,
103 $ ITR, , ITRANR, ITRSCL, N1, N2
104 DOUBLE PRECISION BIGNUM, DEN, EPS, RES, SCALE, SGN, SMLNUM, TMP,
108 INTEGER ITVAL( 2, 2, 8 )
109 DOUBLE PRECISION B( 2, 2 ), TL( 2, 2 ), TR( 2, 2 ), VAL( 3 ),
113 DOUBLE PRECISION DLAMCH
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 = DLAMCH( 's
' ) / EPS
133 BIGNUM = ONE / SMLNUM
134 CALL DLABAD( 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 DLASY2( 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.NE..AND..NE.
IF( INFO0 INFO1 )
185 $ RES = RES + ONE / EPS
186.GT.
IF( RESRMAX ) 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 )*
209 TL( 2, 2 ) = ITVAL( 2, 2, ITL )*
211 TR( 1, 1 ) = VAL( ITR )
213 CALL DLASY2( 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, 1 )-
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.GT.
IF( RESRMAX ) 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 DLASY2( 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( 1, 2 ) )
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.GT.
IF( RESRMAX ) 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 )*
330 TR( 2, 1 ) = ITVAL( 2, 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 DLASY2( 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 ) )+
373 RES = ABS( ( ( TL( 1, 1 )+SGN*TR( 1,
374 $ 1 ) ) )*( X( 1, 1 ) )+
375 $ ( SGN*TR( 2, 1 ) )*
376 $ ( X( 1, 2 ) )+( TL( 1, 2 ) )*
378 $ ( SCALE*B( 1, 1 ) ) )
379 RES = RES + ABS( ( TL( 1, 1 ) )*
381 $ ( SGN*TR( 1, 2 ) )*
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
407 RES = RES + ABS( XNORM-XNRM ) /
408 $ MAX( SMLNUM, XNORM ) / EPS
409.GT.
IF( RESRMAX ) THEN
subroutine dlasy2(ltranl, ltranr, isgn, n1, n2, tl, ldtl, tr, ldtr, b, ldb, scale, x, ldx, xnorm, info)
DLASY2 solves the Sylvester matrix equation where the matrices are of order 1 or 2.