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.

dget31.f 22 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515
  1. *> \brief \b DGET31
  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 DGET31( RMAX, LMAX, NINFO, KNT )
  12. *
  13. * .. Scalar Arguments ..
  14. * INTEGER KNT, LMAX
  15. * DOUBLE PRECISION RMAX
  16. * ..
  17. * .. Array Arguments ..
  18. * INTEGER NINFO( 2 )
  19. * ..
  20. *
  21. *
  22. *> \par Purpose:
  23. * =============
  24. *>
  25. *> \verbatim
  26. *>
  27. *> DGET31 tests DLALN2, 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 DOUBLE PRECISION
  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. *> \ingroup double_eig
  88. *
  89. * =====================================================================
  90. SUBROUTINE DGET31( RMAX, LMAX, NINFO, KNT )
  91. *
  92. * -- LAPACK test routine --
  93. * -- LAPACK is a software package provided by Univ. of Tennessee, --
  94. * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
  95. *
  96. * .. Scalar Arguments ..
  97. INTEGER KNT, LMAX
  98. DOUBLE PRECISION RMAX
  99. * ..
  100. * .. Array Arguments ..
  101. INTEGER NINFO( 2 )
  102. * ..
  103. *
  104. * =====================================================================
  105. *
  106. * .. Parameters ..
  107. DOUBLE PRECISION ZERO, HALF, ONE
  108. PARAMETER ( ZERO = 0.0D0, HALF = 0.5D0, ONE = 1.0D0 )
  109. DOUBLE PRECISION TWO, THREE, FOUR
  110. PARAMETER ( TWO = 2.0D0, THREE = 3.0D0, FOUR = 4.0D0 )
  111. DOUBLE PRECISION SEVEN, TEN
  112. PARAMETER ( SEVEN = 7.0D0, TEN = 10.0D0 )
  113. DOUBLE PRECISION TWNONE
  114. PARAMETER ( TWNONE = 21.0D0 )
  115. * ..
  116. * .. Local Scalars ..
  117. INTEGER IA, IB, ICA, ID1, ID2, INFO, ISMIN, ITRANS,
  118. $ IWI, IWR, NA, NW
  119. DOUBLE PRECISION BIGNUM, CA, D1, D2, DEN, EPS, RES, SCALE, SMIN,
  120. $ SMLNUM, TMP, UNFL, WI, WR, XNORM
  121. * ..
  122. * .. Local Arrays ..
  123. LOGICAL LTRANS( 0: 1 )
  124. DOUBLE PRECISION A( 2, 2 ), B( 2, 2 ), VAB( 3 ), VCA( 5 ),
  125. $ VDD( 4 ), VSMIN( 4 ), VWI( 4 ), VWR( 4 ),
  126. $ X( 2, 2 )
  127. * ..
  128. * .. External Functions ..
  129. DOUBLE PRECISION DLAMCH
  130. EXTERNAL DLAMCH
  131. * ..
  132. * .. External Subroutines ..
  133. EXTERNAL DLABAD, DLALN2
  134. * ..
  135. * .. Intrinsic Functions ..
  136. INTRINSIC ABS, MAX, SQRT
  137. * ..
  138. * .. Data statements ..
  139. DATA LTRANS / .FALSE., .TRUE. /
  140. * ..
  141. * .. Executable Statements ..
  142. *
  143. * Get machine parameters
  144. *
  145. EPS = DLAMCH( 'P' )
  146. UNFL = DLAMCH( 'U' )
  147. SMLNUM = DLAMCH( 'S' ) / EPS
  148. BIGNUM = ONE / SMLNUM
  149. CALL DLABAD( SMLNUM, BIGNUM )
  150. *
  151. * Set up test case parameters
  152. *
  153. VSMIN( 1 ) = SMLNUM
  154. VSMIN( 2 ) = EPS
  155. VSMIN( 3 ) = ONE / ( TEN*TEN )
  156. VSMIN( 4 ) = ONE / EPS
  157. VAB( 1 ) = SQRT( SMLNUM )
  158. VAB( 2 ) = ONE
  159. VAB( 3 ) = SQRT( BIGNUM )
  160. VWR( 1 ) = ZERO
  161. VWR( 2 ) = HALF
  162. VWR( 3 ) = TWO
  163. VWR( 4 ) = ONE
  164. VWI( 1 ) = SMLNUM
  165. VWI( 2 ) = EPS
  166. VWI( 3 ) = ONE
  167. VWI( 4 ) = TWO
  168. VDD( 1 ) = SQRT( SMLNUM )
  169. VDD( 2 ) = ONE
  170. VDD( 3 ) = TWO
  171. VDD( 4 ) = SQRT( BIGNUM )
  172. VCA( 1 ) = ZERO
  173. VCA( 2 ) = SQRT( SMLNUM )
  174. VCA( 3 ) = EPS
  175. VCA( 4 ) = HALF
  176. VCA( 5 ) = ONE
  177. *
  178. KNT = 0
  179. NINFO( 1 ) = 0
  180. NINFO( 2 ) = 0
  181. LMAX = 0
  182. RMAX = ZERO
  183. *
  184. * Begin test loop
  185. *
  186. DO 190 ID1 = 1, 4
  187. D1 = VDD( ID1 )
  188. DO 180 ID2 = 1, 4
  189. D2 = VDD( ID2 )
  190. DO 170 ICA = 1, 5
  191. CA = VCA( ICA )
  192. DO 160 ITRANS = 0, 1
  193. DO 150 ISMIN = 1, 4
  194. SMIN = VSMIN( ISMIN )
  195. *
  196. NA = 1
  197. NW = 1
  198. DO 30 IA = 1, 3
  199. A( 1, 1 ) = VAB( IA )
  200. DO 20 IB = 1, 3
  201. B( 1, 1 ) = VAB( IB )
  202. DO 10 IWR = 1, 4
  203. IF( D1.EQ.ONE .AND. D2.EQ.ONE .AND. CA.EQ.
  204. $ ONE ) THEN
  205. WR = VWR( IWR )*A( 1, 1 )
  206. ELSE
  207. WR = VWR( IWR )
  208. END IF
  209. WI = ZERO
  210. CALL DLALN2( LTRANS( ITRANS ), NA, NW,
  211. $ SMIN, CA, A, 2, D1, D2, B, 2,
  212. $ WR, WI, X, 2, SCALE, XNORM,
  213. $ INFO )
  214. IF( INFO.LT.0 )
  215. $ NINFO( 1 ) = NINFO( 1 ) + 1
  216. IF( INFO.GT.0 )
  217. $ NINFO( 2 ) = NINFO( 2 ) + 1
  218. RES = ABS( ( CA*A( 1, 1 )-WR*D1 )*
  219. $ X( 1, 1 )-SCALE*B( 1, 1 ) )
  220. IF( INFO.EQ.0 ) THEN
  221. DEN = MAX( EPS*( ABS( ( CA*A( 1,
  222. $ 1 )-WR*D1 )*X( 1, 1 ) ) ),
  223. $ SMLNUM )
  224. ELSE
  225. DEN = MAX( SMIN*ABS( X( 1, 1 ) ),
  226. $ SMLNUM )
  227. END IF
  228. RES = RES / DEN
  229. IF( ABS( X( 1, 1 ) ).LT.UNFL .AND.
  230. $ ABS( B( 1, 1 ) ).LE.SMLNUM*
  231. $ ABS( CA*A( 1, 1 )-WR*D1 ) )RES = ZERO
  232. IF( SCALE.GT.ONE )
  233. $ RES = RES + ONE / EPS
  234. RES = RES + ABS( XNORM-ABS( X( 1, 1 ) ) )
  235. $ / MAX( SMLNUM, XNORM ) / EPS
  236. IF( INFO.NE.0 .AND. INFO.NE.1 )
  237. $ RES = RES + ONE / EPS
  238. KNT = KNT + 1
  239. IF( RES.GT.RMAX ) THEN
  240. LMAX = KNT
  241. RMAX = RES
  242. END IF
  243. 10 CONTINUE
  244. 20 CONTINUE
  245. 30 CONTINUE
  246. *
  247. NA = 1
  248. NW = 2
  249. DO 70 IA = 1, 3
  250. A( 1, 1 ) = VAB( IA )
  251. DO 60 IB = 1, 3
  252. B( 1, 1 ) = VAB( IB )
  253. B( 1, 2 ) = -HALF*VAB( IB )
  254. DO 50 IWR = 1, 4
  255. IF( D1.EQ.ONE .AND. D2.EQ.ONE .AND. CA.EQ.
  256. $ ONE ) THEN
  257. WR = VWR( IWR )*A( 1, 1 )
  258. ELSE
  259. WR = VWR( IWR )
  260. END IF
  261. DO 40 IWI = 1, 4
  262. IF( D1.EQ.ONE .AND. D2.EQ.ONE .AND.
  263. $ CA.EQ.ONE ) THEN
  264. WI = VWI( IWI )*A( 1, 1 )
  265. ELSE
  266. WI = VWI( IWI )
  267. END IF
  268. CALL DLALN2( LTRANS( ITRANS ), NA, NW,
  269. $ SMIN, CA, A, 2, D1, D2, B,
  270. $ 2, WR, WI, X, 2, SCALE,
  271. $ XNORM, INFO )
  272. IF( INFO.LT.0 )
  273. $ NINFO( 1 ) = NINFO( 1 ) + 1
  274. IF( INFO.GT.0 )
  275. $ NINFO( 2 ) = NINFO( 2 ) + 1
  276. RES = ABS( ( CA*A( 1, 1 )-WR*D1 )*
  277. $ X( 1, 1 )+( WI*D1 )*X( 1, 2 )-
  278. $ SCALE*B( 1, 1 ) )
  279. RES = RES + ABS( ( -WI*D1 )*X( 1, 1 )+
  280. $ ( CA*A( 1, 1 )-WR*D1 )*X( 1, 2 )-
  281. $ SCALE*B( 1, 2 ) )
  282. IF( INFO.EQ.0 ) THEN
  283. DEN = MAX( EPS*( MAX( ABS( CA*A( 1,
  284. $ 1 )-WR*D1 ), ABS( D1*WI ) )*
  285. $ ( ABS( X( 1, 1 ) )+ABS( X( 1,
  286. $ 2 ) ) ) ), SMLNUM )
  287. ELSE
  288. DEN = MAX( SMIN*( ABS( X( 1,
  289. $ 1 ) )+ABS( X( 1, 2 ) ) ),
  290. $ SMLNUM )
  291. END IF
  292. RES = RES / DEN
  293. IF( ABS( X( 1, 1 ) ).LT.UNFL .AND.
  294. $ ABS( X( 1, 2 ) ).LT.UNFL .AND.
  295. $ ABS( B( 1, 1 ) ).LE.SMLNUM*
  296. $ ABS( CA*A( 1, 1 )-WR*D1 ) )
  297. $ RES = ZERO
  298. IF( SCALE.GT.ONE )
  299. $ RES = RES + ONE / EPS
  300. RES = RES + ABS( XNORM-
  301. $ ABS( X( 1, 1 ) )-
  302. $ ABS( X( 1, 2 ) ) ) /
  303. $ MAX( SMLNUM, XNORM ) / EPS
  304. IF( INFO.NE.0 .AND. INFO.NE.1 )
  305. $ RES = RES + ONE / EPS
  306. KNT = KNT + 1
  307. IF( RES.GT.RMAX ) THEN
  308. LMAX = KNT
  309. RMAX = RES
  310. END IF
  311. 40 CONTINUE
  312. 50 CONTINUE
  313. 60 CONTINUE
  314. 70 CONTINUE
  315. *
  316. NA = 2
  317. NW = 1
  318. DO 100 IA = 1, 3
  319. A( 1, 1 ) = VAB( IA )
  320. A( 1, 2 ) = -THREE*VAB( IA )
  321. A( 2, 1 ) = -SEVEN*VAB( IA )
  322. A( 2, 2 ) = TWNONE*VAB( IA )
  323. DO 90 IB = 1, 3
  324. B( 1, 1 ) = VAB( IB )
  325. B( 2, 1 ) = -TWO*VAB( IB )
  326. DO 80 IWR = 1, 4
  327. IF( D1.EQ.ONE .AND. D2.EQ.ONE .AND. CA.EQ.
  328. $ ONE ) THEN
  329. WR = VWR( IWR )*A( 1, 1 )
  330. ELSE
  331. WR = VWR( IWR )
  332. END IF
  333. WI = ZERO
  334. CALL DLALN2( LTRANS( ITRANS ), NA, NW,
  335. $ SMIN, CA, A, 2, D1, D2, B, 2,
  336. $ WR, WI, X, 2, SCALE, XNORM,
  337. $ INFO )
  338. IF( INFO.LT.0 )
  339. $ NINFO( 1 ) = NINFO( 1 ) + 1
  340. IF( INFO.GT.0 )
  341. $ NINFO( 2 ) = NINFO( 2 ) + 1
  342. IF( ITRANS.EQ.1 ) THEN
  343. TMP = A( 1, 2 )
  344. A( 1, 2 ) = A( 2, 1 )
  345. A( 2, 1 ) = TMP
  346. END IF
  347. RES = ABS( ( CA*A( 1, 1 )-WR*D1 )*
  348. $ X( 1, 1 )+( CA*A( 1, 2 ) )*
  349. $ X( 2, 1 )-SCALE*B( 1, 1 ) )
  350. RES = RES + ABS( ( CA*A( 2, 1 ) )*
  351. $ X( 1, 1 )+( CA*A( 2, 2 )-WR*D2 )*
  352. $ X( 2, 1 )-SCALE*B( 2, 1 ) )
  353. IF( INFO.EQ.0 ) THEN
  354. DEN = MAX( EPS*( MAX( ABS( CA*A( 1,
  355. $ 1 )-WR*D1 )+ABS( CA*A( 1, 2 ) ),
  356. $ ABS( CA*A( 2, 1 ) )+ABS( CA*A( 2,
  357. $ 2 )-WR*D2 ) )*MAX( ABS( X( 1,
  358. $ 1 ) ), ABS( X( 2, 1 ) ) ) ),
  359. $ SMLNUM )
  360. ELSE
  361. DEN = MAX( EPS*( MAX( SMIN / EPS,
  362. $ MAX( ABS( CA*A( 1,
  363. $ 1 )-WR*D1 )+ABS( CA*A( 1, 2 ) ),
  364. $ ABS( CA*A( 2, 1 ) )+ABS( CA*A( 2,
  365. $ 2 )-WR*D2 ) ) )*MAX( ABS( X( 1,
  366. $ 1 ) ), ABS( X( 2, 1 ) ) ) ),
  367. $ SMLNUM )
  368. END IF
  369. RES = RES / DEN
  370. IF( ABS( X( 1, 1 ) ).LT.UNFL .AND.
  371. $ ABS( X( 2, 1 ) ).LT.UNFL .AND.
  372. $ ABS( B( 1, 1 ) )+ABS( B( 2, 1 ) ).LE.
  373. $ SMLNUM*( ABS( CA*A( 1,
  374. $ 1 )-WR*D1 )+ABS( CA*A( 1,
  375. $ 2 ) )+ABS( CA*A( 2,
  376. $ 1 ) )+ABS( CA*A( 2, 2 )-WR*D2 ) ) )
  377. $ RES = ZERO
  378. IF( SCALE.GT.ONE )
  379. $ RES = RES + ONE / EPS
  380. RES = RES + ABS( XNORM-
  381. $ MAX( ABS( X( 1, 1 ) ), ABS( X( 2,
  382. $ 1 ) ) ) ) / MAX( SMLNUM, XNORM ) /
  383. $ EPS
  384. IF( INFO.NE.0 .AND. INFO.NE.1 )
  385. $ RES = RES + ONE / EPS
  386. KNT = KNT + 1
  387. IF( RES.GT.RMAX ) THEN
  388. LMAX = KNT
  389. RMAX = RES
  390. END IF
  391. 80 CONTINUE
  392. 90 CONTINUE
  393. 100 CONTINUE
  394. *
  395. NA = 2
  396. NW = 2
  397. DO 140 IA = 1, 3
  398. A( 1, 1 ) = VAB( IA )*TWO
  399. A( 1, 2 ) = -THREE*VAB( IA )
  400. A( 2, 1 ) = -SEVEN*VAB( IA )
  401. A( 2, 2 ) = TWNONE*VAB( IA )
  402. DO 130 IB = 1, 3
  403. B( 1, 1 ) = VAB( IB )
  404. B( 2, 1 ) = -TWO*VAB( IB )
  405. B( 1, 2 ) = FOUR*VAB( IB )
  406. B( 2, 2 ) = -SEVEN*VAB( IB )
  407. DO 120 IWR = 1, 4
  408. IF( D1.EQ.ONE .AND. D2.EQ.ONE .AND. CA.EQ.
  409. $ ONE ) THEN
  410. WR = VWR( IWR )*A( 1, 1 )
  411. ELSE
  412. WR = VWR( IWR )
  413. END IF
  414. DO 110 IWI = 1, 4
  415. IF( D1.EQ.ONE .AND. D2.EQ.ONE .AND.
  416. $ CA.EQ.ONE ) THEN
  417. WI = VWI( IWI )*A( 1, 1 )
  418. ELSE
  419. WI = VWI( IWI )
  420. END IF
  421. CALL DLALN2( LTRANS( ITRANS ), NA, NW,
  422. $ SMIN, CA, A, 2, D1, D2, B,
  423. $ 2, WR, WI, X, 2, SCALE,
  424. $ XNORM, INFO )
  425. IF( INFO.LT.0 )
  426. $ NINFO( 1 ) = NINFO( 1 ) + 1
  427. IF( INFO.GT.0 )
  428. $ NINFO( 2 ) = NINFO( 2 ) + 1
  429. IF( ITRANS.EQ.1 ) THEN
  430. TMP = A( 1, 2 )
  431. A( 1, 2 ) = A( 2, 1 )
  432. A( 2, 1 ) = TMP
  433. END IF
  434. RES = ABS( ( CA*A( 1, 1 )-WR*D1 )*
  435. $ X( 1, 1 )+( CA*A( 1, 2 ) )*
  436. $ X( 2, 1 )+( WI*D1 )*X( 1, 2 )-
  437. $ SCALE*B( 1, 1 ) )
  438. RES = RES + ABS( ( CA*A( 1,
  439. $ 1 )-WR*D1 )*X( 1, 2 )+
  440. $ ( CA*A( 1, 2 ) )*X( 2, 2 )-
  441. $ ( WI*D1 )*X( 1, 1 )-SCALE*
  442. $ B( 1, 2 ) )
  443. RES = RES + ABS( ( CA*A( 2, 1 ) )*
  444. $ X( 1, 1 )+( CA*A( 2, 2 )-WR*D2 )*
  445. $ X( 2, 1 )+( WI*D2 )*X( 2, 2 )-
  446. $ SCALE*B( 2, 1 ) )
  447. RES = RES + ABS( ( CA*A( 2, 1 ) )*
  448. $ X( 1, 2 )+( CA*A( 2, 2 )-WR*D2 )*
  449. $ X( 2, 2 )-( WI*D2 )*X( 2, 1 )-
  450. $ SCALE*B( 2, 2 ) )
  451. IF( INFO.EQ.0 ) THEN
  452. DEN = MAX( EPS*( MAX( ABS( CA*A( 1,
  453. $ 1 )-WR*D1 )+ABS( CA*A( 1,
  454. $ 2 ) )+ABS( WI*D1 ),
  455. $ ABS( CA*A( 2,
  456. $ 1 ) )+ABS( CA*A( 2,
  457. $ 2 )-WR*D2 )+ABS( WI*D2 ) )*
  458. $ MAX( ABS( X( 1,
  459. $ 1 ) )+ABS( X( 2, 1 ) ),
  460. $ ABS( X( 1, 2 ) )+ABS( X( 2,
  461. $ 2 ) ) ) ), SMLNUM )
  462. ELSE
  463. DEN = MAX( EPS*( MAX( SMIN / EPS,
  464. $ MAX( ABS( CA*A( 1,
  465. $ 1 )-WR*D1 )+ABS( CA*A( 1,
  466. $ 2 ) )+ABS( WI*D1 ),
  467. $ ABS( CA*A( 2,
  468. $ 1 ) )+ABS( CA*A( 2,
  469. $ 2 )-WR*D2 )+ABS( WI*D2 ) ) )*
  470. $ MAX( ABS( X( 1,
  471. $ 1 ) )+ABS( X( 2, 1 ) ),
  472. $ ABS( X( 1, 2 ) )+ABS( X( 2,
  473. $ 2 ) ) ) ), SMLNUM )
  474. END IF
  475. RES = RES / DEN
  476. IF( ABS( X( 1, 1 ) ).LT.UNFL .AND.
  477. $ ABS( X( 2, 1 ) ).LT.UNFL .AND.
  478. $ ABS( X( 1, 2 ) ).LT.UNFL .AND.
  479. $ ABS( X( 2, 2 ) ).LT.UNFL .AND.
  480. $ ABS( B( 1, 1 ) )+
  481. $ ABS( B( 2, 1 ) ).LE.SMLNUM*
  482. $ ( ABS( CA*A( 1, 1 )-WR*D1 )+
  483. $ ABS( CA*A( 1, 2 ) )+ABS( CA*A( 2,
  484. $ 1 ) )+ABS( CA*A( 2,
  485. $ 2 )-WR*D2 )+ABS( WI*D2 )+ABS( WI*
  486. $ D1 ) ) )RES = ZERO
  487. IF( SCALE.GT.ONE )
  488. $ RES = RES + ONE / EPS
  489. RES = RES + ABS( XNORM-
  490. $ MAX( ABS( X( 1, 1 ) )+ABS( X( 1,
  491. $ 2 ) ), ABS( X( 2,
  492. $ 1 ) )+ABS( X( 2, 2 ) ) ) ) /
  493. $ MAX( SMLNUM, XNORM ) / EPS
  494. IF( INFO.NE.0 .AND. INFO.NE.1 )
  495. $ RES = RES + ONE / EPS
  496. KNT = KNT + 1
  497. IF( RES.GT.RMAX ) THEN
  498. LMAX = KNT
  499. RMAX = RES
  500. END IF
  501. 110 CONTINUE
  502. 120 CONTINUE
  503. 130 CONTINUE
  504. 140 CONTINUE
  505. 150 CONTINUE
  506. 160 CONTINUE
  507. 170 CONTINUE
  508. 180 CONTINUE
  509. 190 CONTINUE
  510. *
  511. RETURN
  512. *
  513. * End of DGET31
  514. *
  515. END