You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

sget31.f 22 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518
  1. *> \brief \b SGET31
  2. *
  3. * =========== DOCUMENTATION ===========
  4. *
  5. * Online html documentation available at
  6. * http://www.netlib.org/lapack/explore-html/
  7. *
  8. * Definition:
  9. * ===========
  10. *
  11. * SUBROUTINE SGET31( RMAX, LMAX, NINFO, KNT )
  12. *
  13. * .. Scalar Arguments ..
  14. * INTEGER KNT, LMAX
  15. * REAL RMAX
  16. * ..
  17. * .. Array Arguments ..
  18. * INTEGER NINFO( 2 )
  19. * ..
  20. *
  21. *
  22. *> \par Purpose:
  23. * =============
  24. *>
  25. *> \verbatim
  26. *>
  27. *> SGET31 tests SLALN2, a routine for solving
  28. *>
  29. *> (ca A - w D)X = sB
  30. *>
  31. *> where A is an NA by NA matrix (NA=1 or 2 only), w is a real (NW=1) or
  32. *> complex (NW=2) constant, ca is a real constant, D is an NA by NA real
  33. *> diagonal matrix, and B is an NA by NW matrix (when NW=2 the second
  34. *> column of B contains the imaginary part of the solution). The code
  35. *> returns X and s, where s is a scale factor, less than or equal to 1,
  36. *> which is chosen to avoid overflow in X.
  37. *>
  38. *> If any singular values of ca A-w D are less than another input
  39. *> parameter SMIN, they are perturbed up to SMIN.
  40. *>
  41. *> The test condition is that the scaled residual
  42. *>
  43. *> norm( (ca A-w D)*X - s*B ) /
  44. *> ( max( ulp*norm(ca A-w D), SMIN )*norm(X) )
  45. *>
  46. *> should be on the order of 1. Here, ulp is the machine precision.
  47. *> Also, it is verified that SCALE is less than or equal to 1, and that
  48. *> XNORM = infinity-norm(X).
  49. *> \endverbatim
  50. *
  51. * Arguments:
  52. * ==========
  53. *
  54. *> \param[out] RMAX
  55. *> \verbatim
  56. *> RMAX is REAL
  57. *> Value of the largest test ratio.
  58. *> \endverbatim
  59. *>
  60. *> \param[out] LMAX
  61. *> \verbatim
  62. *> LMAX is INTEGER
  63. *> Example number where largest test ratio achieved.
  64. *> \endverbatim
  65. *>
  66. *> \param[out] NINFO
  67. *> \verbatim
  68. *> NINFO is INTEGER array, dimension (3)
  69. *> NINFO(1) = number of examples with INFO less than 0
  70. *> NINFO(2) = number of examples with INFO greater than 0
  71. *> \endverbatim
  72. *>
  73. *> \param[out] KNT
  74. *> \verbatim
  75. *> KNT is INTEGER
  76. *> Total number of examples tested.
  77. *> \endverbatim
  78. *
  79. * Authors:
  80. * ========
  81. *
  82. *> \author Univ. of Tennessee
  83. *> \author Univ. of California Berkeley
  84. *> \author Univ. of Colorado Denver
  85. *> \author NAG Ltd.
  86. *
  87. *> \date November 2011
  88. *
  89. *> \ingroup single_eig
  90. *
  91. * =====================================================================
  92. SUBROUTINE SGET31( RMAX, LMAX, NINFO, KNT )
  93. *
  94. * -- LAPACK test routine (version 3.4.0) --
  95. * -- LAPACK is a software package provided by Univ. of Tennessee, --
  96. * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
  97. * November 2011
  98. *
  99. * .. Scalar Arguments ..
  100. INTEGER KNT, LMAX
  101. REAL RMAX
  102. * ..
  103. * .. Array Arguments ..
  104. INTEGER NINFO( 2 )
  105. * ..
  106. *
  107. * =====================================================================
  108. *
  109. * .. Parameters ..
  110. REAL ZERO, HALF, ONE
  111. PARAMETER ( ZERO = 0.0E0, HALF = 0.5E0, ONE = 1.0E0 )
  112. REAL TWO, THREE, FOUR
  113. PARAMETER ( TWO = 2.0E0, THREE = 3.0E0, FOUR = 4.0E0 )
  114. REAL SEVEN, TEN
  115. PARAMETER ( SEVEN = 7.0E0, TEN = 10.0E0 )
  116. REAL TWNONE
  117. PARAMETER ( TWNONE = 21.0E0 )
  118. * ..
  119. * .. Local Scalars ..
  120. INTEGER IA, IB, ICA, ID1, ID2, INFO, ISMIN, ITRANS,
  121. $ IWI, IWR, NA, NW
  122. REAL BIGNUM, CA, D1, D2, DEN, EPS, RES, SCALE, SMIN,
  123. $ SMLNUM, TMP, UNFL, WI, WR, XNORM
  124. * ..
  125. * .. Local Arrays ..
  126. LOGICAL LTRANS( 0: 1 )
  127. REAL A( 2, 2 ), B( 2, 2 ), VAB( 3 ), VCA( 5 ),
  128. $ VDD( 4 ), VSMIN( 4 ), VWI( 4 ), VWR( 4 ),
  129. $ X( 2, 2 )
  130. * ..
  131. * .. External Functions ..
  132. REAL SLAMCH
  133. EXTERNAL SLAMCH
  134. * ..
  135. * .. External Subroutines ..
  136. EXTERNAL SLABAD, SLALN2
  137. * ..
  138. * .. Intrinsic Functions ..
  139. INTRINSIC ABS, MAX, SQRT
  140. * ..
  141. * .. Data statements ..
  142. DATA LTRANS / .FALSE., .TRUE. /
  143. * ..
  144. * .. Executable Statements ..
  145. *
  146. * Get machine parameters
  147. *
  148. EPS = SLAMCH( 'P' )
  149. UNFL = SLAMCH( 'U' )
  150. SMLNUM = SLAMCH( 'S' ) / EPS
  151. BIGNUM = ONE / SMLNUM
  152. CALL SLABAD( SMLNUM, BIGNUM )
  153. *
  154. * Set up test case parameters
  155. *
  156. VSMIN( 1 ) = SMLNUM
  157. VSMIN( 2 ) = EPS
  158. VSMIN( 3 ) = ONE / ( TEN*TEN )
  159. VSMIN( 4 ) = ONE / EPS
  160. VAB( 1 ) = SQRT( SMLNUM )
  161. VAB( 2 ) = ONE
  162. VAB( 3 ) = SQRT( BIGNUM )
  163. VWR( 1 ) = ZERO
  164. VWR( 2 ) = HALF
  165. VWR( 3 ) = TWO
  166. VWR( 4 ) = ONE
  167. VWI( 1 ) = SMLNUM
  168. VWI( 2 ) = EPS
  169. VWI( 3 ) = ONE
  170. VWI( 4 ) = TWO
  171. VDD( 1 ) = SQRT( SMLNUM )
  172. VDD( 2 ) = ONE
  173. VDD( 3 ) = TWO
  174. VDD( 4 ) = SQRT( BIGNUM )
  175. VCA( 1 ) = ZERO
  176. VCA( 2 ) = SQRT( SMLNUM )
  177. VCA( 3 ) = EPS
  178. VCA( 4 ) = HALF
  179. VCA( 5 ) = ONE
  180. *
  181. KNT = 0
  182. NINFO( 1 ) = 0
  183. NINFO( 2 ) = 0
  184. LMAX = 0
  185. RMAX = ZERO
  186. *
  187. * Begin test loop
  188. *
  189. DO 190 ID1 = 1, 4
  190. D1 = VDD( ID1 )
  191. DO 180 ID2 = 1, 4
  192. D2 = VDD( ID2 )
  193. DO 170 ICA = 1, 5
  194. CA = VCA( ICA )
  195. DO 160 ITRANS = 0, 1
  196. DO 150 ISMIN = 1, 4
  197. SMIN = VSMIN( ISMIN )
  198. *
  199. NA = 1
  200. NW = 1
  201. DO 30 IA = 1, 3
  202. A( 1, 1 ) = VAB( IA )
  203. DO 20 IB = 1, 3
  204. B( 1, 1 ) = VAB( IB )
  205. DO 10 IWR = 1, 4
  206. IF( D1.EQ.ONE .AND. D2.EQ.ONE .AND. CA.EQ.
  207. $ ONE ) THEN
  208. WR = VWR( IWR )*A( 1, 1 )
  209. ELSE
  210. WR = VWR( IWR )
  211. END IF
  212. WI = ZERO
  213. CALL SLALN2( LTRANS( ITRANS ), NA, NW,
  214. $ SMIN, CA, A, 2, D1, D2, B, 2,
  215. $ WR, WI, X, 2, SCALE, XNORM,
  216. $ INFO )
  217. IF( INFO.LT.0 )
  218. $ NINFO( 1 ) = NINFO( 1 ) + 1
  219. IF( INFO.GT.0 )
  220. $ NINFO( 2 ) = NINFO( 2 ) + 1
  221. RES = ABS( ( CA*A( 1, 1 )-WR*D1 )*
  222. $ X( 1, 1 )-SCALE*B( 1, 1 ) )
  223. IF( INFO.EQ.0 ) THEN
  224. DEN = MAX( EPS*( ABS( ( CA*A( 1,
  225. $ 1 )-WR*D1 )*X( 1, 1 ) ) ),
  226. $ SMLNUM )
  227. ELSE
  228. DEN = MAX( SMIN*ABS( X( 1, 1 ) ),
  229. $ SMLNUM )
  230. END IF
  231. RES = RES / DEN
  232. IF( ABS( X( 1, 1 ) ).LT.UNFL .AND.
  233. $ ABS( B( 1, 1 ) ).LE.SMLNUM*
  234. $ ABS( CA*A( 1, 1 )-WR*D1 ) )RES = ZERO
  235. IF( SCALE.GT.ONE )
  236. $ RES = RES + ONE / EPS
  237. RES = RES + ABS( XNORM-ABS( X( 1, 1 ) ) )
  238. $ / MAX( SMLNUM, XNORM ) / EPS
  239. IF( INFO.NE.0 .AND. INFO.NE.1 )
  240. $ RES = RES + ONE / EPS
  241. KNT = KNT + 1
  242. IF( RES.GT.RMAX ) THEN
  243. LMAX = KNT
  244. RMAX = RES
  245. END IF
  246. 10 CONTINUE
  247. 20 CONTINUE
  248. 30 CONTINUE
  249. *
  250. NA = 1
  251. NW = 2
  252. DO 70 IA = 1, 3
  253. A( 1, 1 ) = VAB( IA )
  254. DO 60 IB = 1, 3
  255. B( 1, 1 ) = VAB( IB )
  256. B( 1, 2 ) = -HALF*VAB( IB )
  257. DO 50 IWR = 1, 4
  258. IF( D1.EQ.ONE .AND. D2.EQ.ONE .AND. CA.EQ.
  259. $ ONE ) THEN
  260. WR = VWR( IWR )*A( 1, 1 )
  261. ELSE
  262. WR = VWR( IWR )
  263. END IF
  264. DO 40 IWI = 1, 4
  265. IF( D1.EQ.ONE .AND. D2.EQ.ONE .AND.
  266. $ CA.EQ.ONE ) THEN
  267. WI = VWI( IWI )*A( 1, 1 )
  268. ELSE
  269. WI = VWI( IWI )
  270. END IF
  271. CALL SLALN2( LTRANS( ITRANS ), NA, NW,
  272. $ SMIN, CA, A, 2, D1, D2, B,
  273. $ 2, WR, WI, X, 2, SCALE,
  274. $ XNORM, INFO )
  275. IF( INFO.LT.0 )
  276. $ NINFO( 1 ) = NINFO( 1 ) + 1
  277. IF( INFO.GT.0 )
  278. $ NINFO( 2 ) = NINFO( 2 ) + 1
  279. RES = ABS( ( CA*A( 1, 1 )-WR*D1 )*
  280. $ X( 1, 1 )+( WI*D1 )*X( 1, 2 )-
  281. $ SCALE*B( 1, 1 ) )
  282. RES = RES + ABS( ( -WI*D1 )*X( 1, 1 )+
  283. $ ( CA*A( 1, 1 )-WR*D1 )*X( 1, 2 )-
  284. $ SCALE*B( 1, 2 ) )
  285. IF( INFO.EQ.0 ) THEN
  286. DEN = MAX( EPS*( MAX( ABS( CA*A( 1,
  287. $ 1 )-WR*D1 ), ABS( D1*WI ) )*
  288. $ ( ABS( X( 1, 1 ) )+ABS( X( 1,
  289. $ 2 ) ) ) ), SMLNUM )
  290. ELSE
  291. DEN = MAX( SMIN*( ABS( X( 1,
  292. $ 1 ) )+ABS( X( 1, 2 ) ) ),
  293. $ SMLNUM )
  294. END IF
  295. RES = RES / DEN
  296. IF( ABS( X( 1, 1 ) ).LT.UNFL .AND.
  297. $ ABS( X( 1, 2 ) ).LT.UNFL .AND.
  298. $ ABS( B( 1, 1 ) ).LE.SMLNUM*
  299. $ ABS( CA*A( 1, 1 )-WR*D1 ) )
  300. $ RES = ZERO
  301. IF( SCALE.GT.ONE )
  302. $ RES = RES + ONE / EPS
  303. RES = RES + ABS( XNORM-
  304. $ ABS( X( 1, 1 ) )-
  305. $ ABS( X( 1, 2 ) ) ) /
  306. $ MAX( SMLNUM, XNORM ) / EPS
  307. IF( INFO.NE.0 .AND. INFO.NE.1 )
  308. $ RES = RES + ONE / EPS
  309. KNT = KNT + 1
  310. IF( RES.GT.RMAX ) THEN
  311. LMAX = KNT
  312. RMAX = RES
  313. END IF
  314. 40 CONTINUE
  315. 50 CONTINUE
  316. 60 CONTINUE
  317. 70 CONTINUE
  318. *
  319. NA = 2
  320. NW = 1
  321. DO 100 IA = 1, 3
  322. A( 1, 1 ) = VAB( IA )
  323. A( 1, 2 ) = -THREE*VAB( IA )
  324. A( 2, 1 ) = -SEVEN*VAB( IA )
  325. A( 2, 2 ) = TWNONE*VAB( IA )
  326. DO 90 IB = 1, 3
  327. B( 1, 1 ) = VAB( IB )
  328. B( 2, 1 ) = -TWO*VAB( IB )
  329. DO 80 IWR = 1, 4
  330. IF( D1.EQ.ONE .AND. D2.EQ.ONE .AND. CA.EQ.
  331. $ ONE ) THEN
  332. WR = VWR( IWR )*A( 1, 1 )
  333. ELSE
  334. WR = VWR( IWR )
  335. END IF
  336. WI = ZERO
  337. CALL SLALN2( LTRANS( ITRANS ), NA, NW,
  338. $ SMIN, CA, A, 2, D1, D2, B, 2,
  339. $ WR, WI, X, 2, SCALE, XNORM,
  340. $ INFO )
  341. IF( INFO.LT.0 )
  342. $ NINFO( 1 ) = NINFO( 1 ) + 1
  343. IF( INFO.GT.0 )
  344. $ NINFO( 2 ) = NINFO( 2 ) + 1
  345. IF( ITRANS.EQ.1 ) THEN
  346. TMP = A( 1, 2 )
  347. A( 1, 2 ) = A( 2, 1 )
  348. A( 2, 1 ) = TMP
  349. END IF
  350. RES = ABS( ( CA*A( 1, 1 )-WR*D1 )*
  351. $ X( 1, 1 )+( CA*A( 1, 2 ) )*
  352. $ X( 2, 1 )-SCALE*B( 1, 1 ) )
  353. RES = RES + ABS( ( CA*A( 2, 1 ) )*
  354. $ X( 1, 1 )+( CA*A( 2, 2 )-WR*D2 )*
  355. $ X( 2, 1 )-SCALE*B( 2, 1 ) )
  356. IF( INFO.EQ.0 ) THEN
  357. DEN = MAX( EPS*( MAX( ABS( CA*A( 1,
  358. $ 1 )-WR*D1 )+ABS( CA*A( 1, 2 ) ),
  359. $ ABS( CA*A( 2, 1 ) )+ABS( CA*A( 2,
  360. $ 2 )-WR*D2 ) )*MAX( ABS( X( 1,
  361. $ 1 ) ), ABS( X( 2, 1 ) ) ) ),
  362. $ SMLNUM )
  363. ELSE
  364. DEN = MAX( EPS*( MAX( SMIN / EPS,
  365. $ MAX( ABS( CA*A( 1,
  366. $ 1 )-WR*D1 )+ABS( CA*A( 1, 2 ) ),
  367. $ ABS( CA*A( 2, 1 ) )+ABS( CA*A( 2,
  368. $ 2 )-WR*D2 ) ) )*MAX( ABS( X( 1,
  369. $ 1 ) ), ABS( X( 2, 1 ) ) ) ),
  370. $ SMLNUM )
  371. END IF
  372. RES = RES / DEN
  373. IF( ABS( X( 1, 1 ) ).LT.UNFL .AND.
  374. $ ABS( X( 2, 1 ) ).LT.UNFL .AND.
  375. $ ABS( B( 1, 1 ) )+ABS( B( 2, 1 ) ).LE.
  376. $ SMLNUM*( ABS( CA*A( 1,
  377. $ 1 )-WR*D1 )+ABS( CA*A( 1,
  378. $ 2 ) )+ABS( CA*A( 2,
  379. $ 1 ) )+ABS( CA*A( 2, 2 )-WR*D2 ) ) )
  380. $ RES = ZERO
  381. IF( SCALE.GT.ONE )
  382. $ RES = RES + ONE / EPS
  383. RES = RES + ABS( XNORM-
  384. $ MAX( ABS( X( 1, 1 ) ), ABS( X( 2,
  385. $ 1 ) ) ) ) / MAX( SMLNUM, XNORM ) /
  386. $ EPS
  387. IF( INFO.NE.0 .AND. INFO.NE.1 )
  388. $ RES = RES + ONE / EPS
  389. KNT = KNT + 1
  390. IF( RES.GT.RMAX ) THEN
  391. LMAX = KNT
  392. RMAX = RES
  393. END IF
  394. 80 CONTINUE
  395. 90 CONTINUE
  396. 100 CONTINUE
  397. *
  398. NA = 2
  399. NW = 2
  400. DO 140 IA = 1, 3
  401. A( 1, 1 ) = VAB( IA )*TWO
  402. A( 1, 2 ) = -THREE*VAB( IA )
  403. A( 2, 1 ) = -SEVEN*VAB( IA )
  404. A( 2, 2 ) = TWNONE*VAB( IA )
  405. DO 130 IB = 1, 3
  406. B( 1, 1 ) = VAB( IB )
  407. B( 2, 1 ) = -TWO*VAB( IB )
  408. B( 1, 2 ) = FOUR*VAB( IB )
  409. B( 2, 2 ) = -SEVEN*VAB( IB )
  410. DO 120 IWR = 1, 4
  411. IF( D1.EQ.ONE .AND. D2.EQ.ONE .AND. CA.EQ.
  412. $ ONE ) THEN
  413. WR = VWR( IWR )*A( 1, 1 )
  414. ELSE
  415. WR = VWR( IWR )
  416. END IF
  417. DO 110 IWI = 1, 4
  418. IF( D1.EQ.ONE .AND. D2.EQ.ONE .AND.
  419. $ CA.EQ.ONE ) THEN
  420. WI = VWI( IWI )*A( 1, 1 )
  421. ELSE
  422. WI = VWI( IWI )
  423. END IF
  424. CALL SLALN2( LTRANS( ITRANS ), NA, NW,
  425. $ SMIN, CA, A, 2, D1, D2, B,
  426. $ 2, WR, WI, X, 2, SCALE,
  427. $ XNORM, INFO )
  428. IF( INFO.LT.0 )
  429. $ NINFO( 1 ) = NINFO( 1 ) + 1
  430. IF( INFO.GT.0 )
  431. $ NINFO( 2 ) = NINFO( 2 ) + 1
  432. IF( ITRANS.EQ.1 ) THEN
  433. TMP = A( 1, 2 )
  434. A( 1, 2 ) = A( 2, 1 )
  435. A( 2, 1 ) = TMP
  436. END IF
  437. RES = ABS( ( CA*A( 1, 1 )-WR*D1 )*
  438. $ X( 1, 1 )+( CA*A( 1, 2 ) )*
  439. $ X( 2, 1 )+( WI*D1 )*X( 1, 2 )-
  440. $ SCALE*B( 1, 1 ) )
  441. RES = RES + ABS( ( CA*A( 1,
  442. $ 1 )-WR*D1 )*X( 1, 2 )+
  443. $ ( CA*A( 1, 2 ) )*X( 2, 2 )-
  444. $ ( WI*D1 )*X( 1, 1 )-SCALE*
  445. $ B( 1, 2 ) )
  446. RES = RES + ABS( ( CA*A( 2, 1 ) )*
  447. $ X( 1, 1 )+( CA*A( 2, 2 )-WR*D2 )*
  448. $ X( 2, 1 )+( WI*D2 )*X( 2, 2 )-
  449. $ SCALE*B( 2, 1 ) )
  450. RES = RES + ABS( ( CA*A( 2, 1 ) )*
  451. $ X( 1, 2 )+( CA*A( 2, 2 )-WR*D2 )*
  452. $ X( 2, 2 )-( WI*D2 )*X( 2, 1 )-
  453. $ SCALE*B( 2, 2 ) )
  454. IF( INFO.EQ.0 ) THEN
  455. DEN = MAX( EPS*( MAX( ABS( CA*A( 1,
  456. $ 1 )-WR*D1 )+ABS( CA*A( 1,
  457. $ 2 ) )+ABS( WI*D1 ),
  458. $ ABS( CA*A( 2,
  459. $ 1 ) )+ABS( CA*A( 2,
  460. $ 2 )-WR*D2 )+ABS( WI*D2 ) )*
  461. $ MAX( ABS( X( 1,
  462. $ 1 ) )+ABS( X( 2, 1 ) ),
  463. $ ABS( X( 1, 2 ) )+ABS( X( 2,
  464. $ 2 ) ) ) ), SMLNUM )
  465. ELSE
  466. DEN = MAX( EPS*( MAX( SMIN / EPS,
  467. $ MAX( ABS( CA*A( 1,
  468. $ 1 )-WR*D1 )+ABS( CA*A( 1,
  469. $ 2 ) )+ABS( WI*D1 ),
  470. $ ABS( CA*A( 2,
  471. $ 1 ) )+ABS( CA*A( 2,
  472. $ 2 )-WR*D2 )+ABS( WI*D2 ) ) )*
  473. $ MAX( ABS( X( 1,
  474. $ 1 ) )+ABS( X( 2, 1 ) ),
  475. $ ABS( X( 1, 2 ) )+ABS( X( 2,
  476. $ 2 ) ) ) ), SMLNUM )
  477. END IF
  478. RES = RES / DEN
  479. IF( ABS( X( 1, 1 ) ).LT.UNFL .AND.
  480. $ ABS( X( 2, 1 ) ).LT.UNFL .AND.
  481. $ ABS( X( 1, 2 ) ).LT.UNFL .AND.
  482. $ ABS( X( 2, 2 ) ).LT.UNFL .AND.
  483. $ ABS( B( 1, 1 ) )+
  484. $ ABS( B( 2, 1 ) ).LE.SMLNUM*
  485. $ ( ABS( CA*A( 1, 1 )-WR*D1 )+
  486. $ ABS( CA*A( 1, 2 ) )+ABS( CA*A( 2,
  487. $ 1 ) )+ABS( CA*A( 2,
  488. $ 2 )-WR*D2 )+ABS( WI*D2 )+ABS( WI*
  489. $ D1 ) ) )RES = ZERO
  490. IF( SCALE.GT.ONE )
  491. $ RES = RES + ONE / EPS
  492. RES = RES + ABS( XNORM-
  493. $ MAX( ABS( X( 1, 1 ) )+ABS( X( 1,
  494. $ 2 ) ), ABS( X( 2,
  495. $ 1 ) )+ABS( X( 2, 2 ) ) ) ) /
  496. $ MAX( SMLNUM, XNORM ) / EPS
  497. IF( INFO.NE.0 .AND. INFO.NE.1 )
  498. $ RES = RES + ONE / EPS
  499. KNT = KNT + 1
  500. IF( RES.GT.RMAX ) THEN
  501. LMAX = KNT
  502. RMAX = RES
  503. END IF
  504. 110 CONTINUE
  505. 120 CONTINUE
  506. 130 CONTINUE
  507. 140 CONTINUE
  508. 150 CONTINUE
  509. 160 CONTINUE
  510. 170 CONTINUE
  511. 180 CONTINUE
  512. 190 CONTINUE
  513. *
  514. RETURN
  515. *
  516. * End of SGET31
  517. *
  518. END