dasyjy.cpp 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548
  1. /* dasyjy.f -- translated by f2c (version 20100827).
  2. This file no longer depends on f2c.
  3. */
  4. #include "slatec-internal.hpp"
  5. /* Table of constant values */
  6. static integer const c__3 = 3;
  7. static integer const c__5 = 5;
  8. static integer const c__15 = 15;
  9. static integer const c__14 = 14;
  10. static integer const c__1 = 1;
  11. int dasyjy_(int (*funjy)(double *, double *, double *, double *, double *),
  12. double const *x, double const *fnu, double *flgjy, integer *in, double *y,
  13. double *wk, integer *iflw)
  14. {
  15. /* Initialized data */
  16. static double const con2 = .333333333333333;
  17. static double const con548 = .104166666666667;
  18. static double const ar[8] = { .0835503472222222,.128226574556327,
  19. .29184902646414,.881627267443758,3.32140828186277,
  20. 14.9957629868626,78.9230130115865,474.451538868264 };
  21. static double const br[10] = { -.145833333333333,-.0987413194444444,
  22. -.143312053915895,-.317227202678414,-.94242914795712,
  23. -3.51120304082635,-15.727263620368,-82.2814390971859,
  24. -492.355370523671,-3316.21856854797 };
  25. static double const c__[65] = { -.208333333333333,.125,.334201388888889,
  26. -.401041666666667,.0703125,-1.02581259645062,1.84646267361111,
  27. -.8912109375,.0732421875,4.66958442342625,-11.207002616223,
  28. 8.78912353515625,-2.3640869140625,.112152099609375,
  29. -28.2120725582002,84.6362176746007,-91.81824154324,
  30. 42.5349987453885,-7.36879435947963,.227108001708984,
  31. 212.570130039217,-765.252468141182,1059.990452528,
  32. -699.579627376133,218.190511744212,-26.4914304869516,
  33. .572501420974731,-1919.45766231841,8061.72218173731,
  34. -13586.5500064341,11655.3933368645,-5305.6469786134,
  35. 1200.90291321635,-108.090919788395,1.72772750258446,
  36. 20204.2913309661,-96980.5983886375,192547.001232532,
  37. -203400.177280416,122200.464983017,-41192.6549688976,
  38. 7109.51430248936,-493.915304773088,6.07404200127348,
  39. -242919.187900551,1311763.61466298,-2998015.91853811,
  40. 3763271.2976564,-2813563.22658653,1268365.27332162,
  41. -331645.172484564,45218.7689813627,-2499.83048181121,
  42. 24.3805296995561,3284469.85307204,-19706819.1184322,
  43. 50952602.4926646,-74105148.2115327,66344512.274729,
  44. -37567176.6607634,13288767.1664218,-2785618.12808645,
  45. 308186.404612662,-13886.089753717,110.017140269247 };
  46. static double const gama[26] = { .629960524947437,.251984209978975,
  47. .154790300415656,.110713062416159,.0857309395527395,
  48. .0697161316958684,.0586085671893714,.0504698873536311,
  49. .0442600580689155,.039372066154351,.0354283195924455,
  50. .0321818857502098,.0294646240791158,.0271581677112934,
  51. .0251768272973862,.0234570755306079,.0219508390134907,
  52. .0206210828235646,.0194388240897881,.0183810633800683,
  53. .0174293213231963,.0165685837786612,.0157865285987918,
  54. .0150729501494096,.0144193250839955,.0138184805735342 };
  55. static double const tols = -6.90775527898214;
  56. static double const con1 = .666666666666667;
  57. static struct {
  58. double e_1[104];
  59. } equiv_1 = { -.00444444444444444, -9.22077922077922e-4,
  60. -8.84892884892885e-5, 1.6592768783245e-4, 2.46691372741793e-4,
  61. 2.65995589346255e-4, 2.61824297061501e-4,
  62. 2.48730437344656e-4, 2.32721040083232e-4, 2.16362485712365e-4,
  63. 2.00738858762752e-4, 1.86267636637545e-4,
  64. 1.73060775917876e-4, 1.61091705929016e-4, 1.50274774160908e-4,
  65. 1.4050349739127e-4, 1.31668816545923e-4, 1.23667445598253e-4,
  66. 1.16405271474738e-4, 1.09798298372713e-4,
  67. 1.03772410422993e-4, 9.82626078369363e-5, 9.32120517249503e-5,
  68. 8.85710852478712e-5, 8.429631057157e-5, 8.03497548407791e-5,
  69. 6.93735541354589e-4, 2.32241745182922e-4,
  70. -1.41986273556691e-5, -1.16444931672049e-4,
  71. -1.50803558053049e-4, -1.55121924918096e-4,
  72. -1.46809756646466e-4, -1.33815503867491e-4,
  73. -1.19744975684254e-4, -1.06184319207974e-4,
  74. -9.37699549891194e-5, -8.26923045588193e-5,
  75. -7.29374348155221e-5, -6.44042357721016e-5,
  76. -5.69611566009369e-5, -5.04731044303562e-5,
  77. -4.48134868008883e-5, -3.98688727717599e-5,
  78. -3.55400532972042e-5, -3.17414256609022e-5,
  79. -2.83996793904175e-5, -2.54522720634871e-5,
  80. -2.28459297164725e-5, -2.05352753106481e-5,
  81. -1.84816217627666e-5, -1.66519330021394e-5,
  82. -3.54211971457744e-4, -1.56161263945159e-4,
  83. 3.04465503594936e-5, 1.30198655773243e-4, 1.67471106699712e-4,
  84. 1.70222587683593e-4, 1.56501427608595e-4,
  85. 1.36339170977445e-4, 1.14886692029825e-4, 9.45869093034688e-5,
  86. 7.64498419250898e-5, 6.07570334965197e-5,
  87. 4.74394299290509e-5, 3.62757512005344e-5, 2.69939714979225e-5,
  88. 1.93210938247939e-5, 1.30056674793963e-5,
  89. 7.82620866744497e-6, 3.59257485819352e-6, 1.44040049814252e-7,
  90. -2.65396769697939e-6, -4.91346867098486e-6,
  91. -6.72739296091248e-6, -8.17269379678658e-6,
  92. -9.31304715093561e-6, -1.02011418798016e-5,
  93. 3.78194199201773e-4, 2.02471952761816e-4,
  94. -6.37938506318862e-5, -2.38598230603006e-4,
  95. -3.10916256027362e-4, -3.13680115247576e-4,
  96. -2.78950273791323e-4, -2.28564082619141e-4,
  97. -1.75245280340847e-4, -1.2554406306069e-4,
  98. -8.22982872820208e-5, -4.62860730588116e-5,
  99. -1.72334302366962e-5, 5.60690482304602e-6,
  100. 2.31395443148287e-5, 3.62642745856794e-5, 4.58006124490189e-5,
  101. 5.24595294959114e-5, 5.68396208545815e-5,
  102. 5.94349820393104e-5, 6.06478527578422e-5, 6.08023907788436e-5,
  103. 6.0157789453946e-5, 5.89199657344698e-5, 5.72515823777593e-5,
  104. 5.52804375585853e-5 };
  105. static struct {
  106. double e_1[130];
  107. } equiv_4 = { .0179988721413553, .00559964911064388,
  108. .00288501402231133, .00180096606761054, .00124753110589199,
  109. 9.22878876572938e-4, 7.14430421727287e-4, 5.71787281789705e-4,
  110. 4.69431007606482e-4, 3.93232835462917e-4,
  111. 3.34818889318298e-4, 2.88952148495752e-4, 2.52211615549573e-4,
  112. 2.22280580798883e-4, 1.97541838033063e-4,
  113. 1.76836855019718e-4, 1.59316899661821e-4, 1.44347930197334e-4,
  114. 1.31448068119965e-4, 1.20245444949303e-4,
  115. 1.10449144504599e-4, 1.01828770740567e-4, 9.41998224204238e-5,
  116. 8.74130545753834e-5, 8.13466262162801e-5,
  117. 7.59002269646219e-5, -.00149282953213429,
  118. -8.78204709546389e-4, -5.02916549572035e-4,
  119. -2.94822138512746e-4, -1.75463996970783e-4,
  120. -1.04008550460816e-4, -5.96141953046458e-5,
  121. -3.12038929076098e-5, -1.2608973598023e-5,
  122. -2.4289260857573e-7, 8.05996165414274e-6, 1.36507009262147e-5,
  123. 1.73964125472926e-5, 1.98672978842134e-5,
  124. 2.14463263790823e-5, 2.23954659232457e-5, 2.28967783814713e-5,
  125. 2.30785389811178e-5, 2.30321976080909e-5,
  126. 2.28236073720349e-5, 2.25005881105292e-5, 2.20981015361991e-5,
  127. 2.16418427448104e-5, 2.11507649256221e-5,
  128. 2.06388749782171e-5, 2.01165241997082e-5, 5.52213076721293e-4,
  129. 4.47932581552385e-4, 2.79520653992021e-4,
  130. 1.52468156198447e-4, 6.93271105657044e-5, 1.76258683069991e-5,
  131. -1.35744996343269e-5, -3.17972413350427e-5,
  132. -4.18861861696693e-5, -4.69004889379141e-5,
  133. -4.87665447413787e-5, -4.87010031186735e-5,
  134. -4.74755620890087e-5, -4.55813058138628e-5,
  135. -4.33309644511266e-5, -4.0923019315775e-5,
  136. -3.84822638603221e-5, -3.60857167535411e-5,
  137. -3.37793306123367e-5, -3.1588856077211e-5,
  138. -2.95269561750807e-5, -2.75978914828336e-5,
  139. -2.58006174666884e-5, -2.4130835676128e-5,
  140. -2.25823509518346e-5, -2.11479656768913e-5,
  141. -4.7461779655996e-4, -4.77864567147321e-4,
  142. -3.20390228067038e-4, -1.61105016119962e-4,
  143. -4.25778101285435e-5, 3.44571294294968e-5,
  144. 7.97092684075675e-5, 1.03138236708272e-4, 1.12466775262204e-4,
  145. 1.13103642108481e-4, 1.08651634848774e-4,
  146. 1.01437951597662e-4, 9.29298396593364e-5, 8.4029313301609e-5,
  147. 7.52727991349134e-5, 6.69632521975731e-5, 5.92564547323195e-5,
  148. 5.22169308826976e-5, 4.58539485165361e-5,
  149. 4.01445513891487e-5, 3.50481730031328e-5, 3.05157995034347e-5,
  150. 2.64956119950516e-5, 2.29363633690998e-5,
  151. 1.97893056664022e-5, 1.70091984636413e-5, 7.36465810572578e-4,
  152. 8.72790805146194e-4, 6.22614862573135e-4,
  153. 2.85998154194304e-4, 3.84737672879366e-6,
  154. -1.87906003636972e-4, -2.97603646594555e-4,
  155. -3.45998126832656e-4, -3.53382470916038e-4,
  156. -3.35715635775049e-4, -3.0432112478904e-4,
  157. -2.66722723047613e-4, -2.2765421412282e-4,
  158. -1.89922611854562e-4, -1.55058918599094e-4,
  159. -1.23778240761874e-4, -9.62926147717644e-5,
  160. -7.25178327714425e-5, -5.22070028895634e-5,
  161. -3.50347750511901e-5, -2.06489761035552e-5,
  162. -8.70106096849767e-6, 1.136986866751e-6, 9.16426474122779e-6,
  163. 1.56477785428873e-5, 2.08223629482467e-5 };
  164. /* System generated locals */
  165. integer i__1, i__2, i__3;
  166. double d__1;
  167. /* Local variables */
  168. integer i__, j, k, l;
  169. double z__, s1, t2;
  170. integer kb;
  171. double fi, ap, cr[10], dr[10];
  172. integer jn;
  173. double fn, sa, az;
  174. integer jr;
  175. double sb;
  176. integer ks, ju, lr;
  177. double ta, tb, z32, xx, fn2;
  178. integer kp1;
  179. double dfi, akm, phi, tfn, tau, rcz, tol, rtz, abw2, rfn2;
  180. integer ksp1, lrp1;
  181. #define alfa ((double *)&equiv_1)
  182. #define beta ((double *)&equiv_4)
  183. double relb, elim, rden;
  184. integer kmax[5];
  185. double crz32, asum, bsum, suma, sumb, upol[10];
  186. #define alfa1 ((double *)&equiv_1)
  187. #define alfa2 ((double *)&equiv_1 + 52)
  188. #define beta1 ((double *)&equiv_4)
  189. #define beta2 ((double *)&equiv_4 + 52)
  190. #define beta3 ((double *)&equiv_4 + 104)
  191. integer iseta, isetb, klast;
  192. double rzden;
  193. integer kstemp;
  194. /* ***BEGIN PROLOGUE DASYJY */
  195. /* ***SUBSIDIARY */
  196. /* ***PURPOSE Subsidiary to DBESJ and DBESY */
  197. /* ***LIBRARY SLATEC */
  198. /* ***TYPE DOUBLE PRECISION (ASYJY-S, DASYJY-D) */
  199. /* ***AUTHOR Amos, D. E., (SNLA) */
  200. /* ***DESCRIPTION */
  201. /* DASYJY computes Bessel functions J and Y */
  202. /* for arguments X.GT.0.0 and orders FNU .GE. 35.0 */
  203. /* on FLGJY = 1 and FLGJY = -1 respectively */
  204. /* INPUT */
  205. /* FUNJY - External subroutine JAIRY or YAIRY */
  206. /* X - Argument, X.GT.0.0D0 */
  207. /* FNU - Order of the first Bessel function */
  208. /* FLGJY - Selection flag */
  209. /* FLGJY = 1.0D0 gives the J function */
  210. /* FLGJY = -1.0D0 gives the Y function */
  211. /* IN - Number of functions desired, IN = 1 or 2 */
  212. /* OUTPUT */
  213. /* Y - A vector whose first IN components contain the sequence */
  214. /* IFLW - A flag indicating underflow or overflow */
  215. /* return variables for BESJ only */
  216. /* WK(1) = 1 - (X/FNU)**2 = W**2 */
  217. /* WK(2) = SQRT(ABS(WK(1))) */
  218. /* WK(3) = ABS(WK(2) - ATAN(WK(2))) or */
  219. /* ABS(LN((1 + WK(2))/(X/FNU)) - WK(2)) */
  220. /* = ABS((2/3)*ZETA**(3/2)) */
  221. /* WK(4) = FNU*WK(3) */
  222. /* WK(5) = (1.5*WK(3)*FNU)**(1/3) = SQRT(ZETA)*FNU**(1/3) */
  223. /* WK(6) = SIGN(1.,W**2)*WK(5)**2 = SIGN(1.,W**2)*ZETA*FNU**(2/3) */
  224. /* WK(7) = FNU**(1/3) */
  225. /* Abstract **** A Double Precision Routine **** */
  226. /* DASYJY implements the uniform asymptotic expansion of */
  227. /* the J and Y Bessel functions for FNU.GE.35 and real */
  228. /* X.GT.0.0D0. The forms are identical except for a change */
  229. /* in sign of some of the terms. This change in sign is */
  230. /* accomplished by means of the flag FLGJY = 1 or -1. On */
  231. /* FLGJY = 1 the Airy functions AI(X) and DAI(X) are */
  232. /* supplied by the external function JAIRY, and on */
  233. /* FLGJY = -1 the Airy functions BI(X) and DBI(X) are */
  234. /* supplied by the external function YAIRY. */
  235. /* ***SEE ALSO DBESJ, DBESY */
  236. /* ***ROUTINES CALLED D1MACH, I1MACH */
  237. /* ***REVISION HISTORY (YYMMDD) */
  238. /* 750101 DATE WRITTEN */
  239. /* 890531 Changed all specific intrinsics to generic. (WRB) */
  240. /* 890911 Removed unnecessary intrinsics. (WRB) */
  241. /* 891004 Correction computation of ELIM. (WRB) */
  242. /* 891009 Removed unreferenced variable. (WRB) */
  243. /* 891214 Prologue converted to Version 4.0 format. (BAB) */
  244. /* 900328 Added TYPE section. (WRB) */
  245. /* 910408 Updated the AUTHOR section. (WRB) */
  246. /* ***END PROLOGUE DASYJY */
  247. /* Parameter adjustments */
  248. --wk;
  249. --y;
  250. /* Function Body */
  251. /* ***FIRST EXECUTABLE STATEMENT DASYJY */
  252. ta = d1mach_(3);
  253. tol = max(ta,1e-15);
  254. tb = d1mach_(5);
  255. ju = i1mach_(15);
  256. if (*flgjy == 1.) {
  257. goto L6;
  258. }
  259. jr = i1mach_(14);
  260. elim = tb * -2.303 * (ju + jr);
  261. goto L7;
  262. L6:
  263. elim = (tb * ju + 3.) * -2.303;
  264. L7:
  265. fn = *fnu;
  266. *iflw = 0;
  267. i__1 = *in;
  268. for (jn = 1; jn <= i__1; ++jn) {
  269. xx = *x / fn;
  270. wk[1] = 1. - xx * xx;
  271. abw2 = abs(wk[1]);
  272. wk[2] = sqrt(abw2);
  273. wk[7] = f2c::pow_dd(&fn, &con2);
  274. if (abw2 > .2775) {
  275. goto L80;
  276. }
  277. /* ASYMPTOTIC EXPANSION */
  278. /* CASES NEAR X=FN, ABS(1.-(X/FN)**2).LE.0.2775 */
  279. /* COEFFICIENTS OF ASYMPTOTIC EXPANSION BY SERIES */
  280. /* ZETA AND TRUNCATION FOR A(ZETA) AND B(ZETA) SERIES */
  281. /* KMAX IS TRUNCATION INDEX FOR A(ZETA) AND B(ZETA) SERIES=MAX(2,SA) */
  282. sa = 0.;
  283. if (abw2 == 0.) {
  284. goto L10;
  285. }
  286. sa = tols / log(abw2);
  287. L10:
  288. sb = sa;
  289. for (i__ = 1; i__ <= 5; ++i__) {
  290. akm = max(sa,2.);
  291. kmax[i__ - 1] = (integer) akm;
  292. sa += sb;
  293. /* L20: */
  294. }
  295. kb = kmax[4];
  296. klast = kb - 1;
  297. sa = gama[kb - 1];
  298. i__2 = klast;
  299. for (k = 1; k <= i__2; ++k) {
  300. --kb;
  301. sa = sa * wk[1] + gama[kb - 1];
  302. /* L30: */
  303. }
  304. z__ = wk[1] * sa;
  305. az = abs(z__);
  306. rtz = sqrt(az);
  307. wk[3] = con1 * az * rtz;
  308. wk[4] = wk[3] * fn;
  309. wk[5] = rtz * wk[7];
  310. wk[6] = -wk[5] * wk[5];
  311. if (z__ <= 0.) {
  312. goto L35;
  313. }
  314. if (wk[4] > elim) {
  315. goto L75;
  316. }
  317. wk[6] = -wk[6];
  318. L35:
  319. phi = sqrt(sqrt(sa + sa + sa + sa));
  320. /* B(ZETA) FOR S=0 */
  321. kb = kmax[4];
  322. klast = kb - 1;
  323. sb = beta[kb - 1];
  324. i__2 = klast;
  325. for (k = 1; k <= i__2; ++k) {
  326. --kb;
  327. sb = sb * wk[1] + beta[kb - 1];
  328. /* L40: */
  329. }
  330. ksp1 = 1;
  331. fn2 = fn * fn;
  332. rfn2 = 1. / fn2;
  333. rden = 1.;
  334. asum = 1.;
  335. relb = tol * abs(sb);
  336. bsum = sb;
  337. for (ks = 1; ks <= 4; ++ks) {
  338. ++ksp1;
  339. rden *= rfn2;
  340. /* A(ZETA) AND B(ZETA) FOR S=1,2,3,4 */
  341. kstemp = 5 - ks;
  342. kb = kmax[kstemp - 1];
  343. klast = kb - 1;
  344. sa = alfa[kb + ks * 26 - 27];
  345. sb = beta[kb + ksp1 * 26 - 27];
  346. i__2 = klast;
  347. for (k = 1; k <= i__2; ++k) {
  348. --kb;
  349. sa = sa * wk[1] + alfa[kb + ks * 26 - 27];
  350. sb = sb * wk[1] + beta[kb + ksp1 * 26 - 27];
  351. /* L50: */
  352. }
  353. ta = sa * rden;
  354. tb = sb * rden;
  355. asum += ta;
  356. bsum += tb;
  357. if (abs(ta) <= tol && abs(tb) <= relb) {
  358. goto L70;
  359. }
  360. /* L60: */
  361. }
  362. L70:
  363. bsum /= fn * wk[7];
  364. goto L160;
  365. L75:
  366. *iflw = 1;
  367. return 0;
  368. L80:
  369. upol[0] = 1.;
  370. tau = 1. / wk[2];
  371. t2 = 1. / wk[1];
  372. if (wk[1] >= 0.) {
  373. goto L90;
  374. }
  375. /* CASES FOR (X/FN).GT.SQRT(1.2775) */
  376. wk[3] = (d__1 = wk[2] - atan(wk[2]), abs(d__1));
  377. wk[4] = wk[3] * fn;
  378. rcz = -con1 / wk[4];
  379. z32 = wk[3] * 1.5;
  380. rtz = f2c::pow_dd(&z32, &con2);
  381. wk[5] = rtz * wk[7];
  382. wk[6] = -wk[5] * wk[5];
  383. goto L100;
  384. L90:
  385. /* CASES FOR (X/FN).LT.SQRT(0.7225) */
  386. wk[3] = (d__1 = log((wk[2] + 1.) / xx) - wk[2], abs(d__1));
  387. wk[4] = wk[3] * fn;
  388. rcz = con1 / wk[4];
  389. if (wk[4] > elim) {
  390. goto L75;
  391. }
  392. z32 = wk[3] * 1.5;
  393. rtz = f2c::pow_dd(&z32, &con2);
  394. wk[7] = f2c::pow_dd(&fn, &con2);
  395. wk[5] = rtz * wk[7];
  396. wk[6] = wk[5] * wk[5];
  397. L100:
  398. phi = sqrt((rtz + rtz) * tau);
  399. tb = 1.;
  400. asum = 1.;
  401. tfn = tau / fn;
  402. rden = 1. / fn;
  403. rfn2 = rden * rden;
  404. rden = 1.;
  405. upol[1] = (c__[0] * t2 + c__[1]) * tfn;
  406. crz32 = con548 * rcz;
  407. bsum = upol[1] + crz32;
  408. relb = tol * abs(bsum);
  409. ap = tfn;
  410. ks = 0;
  411. kp1 = 2;
  412. rzden = rcz;
  413. l = 2;
  414. iseta = 0;
  415. isetb = 0;
  416. for (lr = 2; lr <= 8; lr += 2) {
  417. /* COMPUTE TWO U POLYNOMIALS FOR NEXT A(ZETA) AND B(ZETA) */
  418. lrp1 = lr + 1;
  419. i__2 = lrp1;
  420. for (k = lr; k <= i__2; ++k) {
  421. ++ks;
  422. ++kp1;
  423. ++l;
  424. s1 = c__[l - 1];
  425. i__3 = kp1;
  426. for (j = 2; j <= i__3; ++j) {
  427. ++l;
  428. s1 = s1 * t2 + c__[l - 1];
  429. /* L110: */
  430. }
  431. ap *= tfn;
  432. upol[kp1 - 1] = ap * s1;
  433. cr[ks - 1] = br[ks - 1] * rzden;
  434. rzden *= rcz;
  435. dr[ks - 1] = ar[ks - 1] * rzden;
  436. /* L120: */
  437. }
  438. suma = upol[lrp1 - 1];
  439. sumb = upol[lr + 1] + upol[lrp1 - 1] * crz32;
  440. ju = lrp1;
  441. i__2 = lr;
  442. for (jr = 1; jr <= i__2; ++jr) {
  443. --ju;
  444. suma += cr[jr - 1] * upol[ju - 1];
  445. sumb += dr[jr - 1] * upol[ju - 1];
  446. /* L130: */
  447. }
  448. rden *= rfn2;
  449. tb = -tb;
  450. if (wk[1] > 0.) {
  451. tb = abs(tb);
  452. }
  453. if (rden < tol) {
  454. goto L131;
  455. }
  456. asum += suma * tb;
  457. bsum += sumb * tb;
  458. goto L140;
  459. L131:
  460. if (iseta == 1) {
  461. goto L132;
  462. }
  463. if (abs(suma) < tol) {
  464. iseta = 1;
  465. }
  466. asum += suma * tb;
  467. L132:
  468. if (isetb == 1) {
  469. goto L133;
  470. }
  471. if (abs(sumb) < relb) {
  472. isetb = 1;
  473. }
  474. bsum += sumb * tb;
  475. L133:
  476. if (iseta == 1 && isetb == 1) {
  477. goto L150;
  478. }
  479. L140:
  480. ;
  481. }
  482. L150:
  483. tb = wk[5];
  484. if (wk[1] > 0.) {
  485. tb = -tb;
  486. }
  487. bsum /= tb;
  488. L160:
  489. (*funjy)(&wk[6], &wk[5], &wk[4], &fi, &dfi);
  490. ta = 1. / tol;
  491. tb = d1mach_(1) * ta * 1e3;
  492. if (abs(fi) > tb) {
  493. goto L165;
  494. }
  495. fi *= ta;
  496. dfi *= ta;
  497. phi *= tol;
  498. L165:
  499. y[jn] = *flgjy * phi * (fi * asum + dfi * bsum) / wk[7];
  500. fn -= *flgjy;
  501. /* L170: */
  502. }
  503. return 0;
  504. } /* dasyjy_ */
  505. #undef beta3
  506. #undef beta2
  507. #undef beta1
  508. #undef alfa2
  509. #undef alfa1
  510. #undef beta
  511. #undef alfa