cunhj.f 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658
  1. *DECK CUNHJ
  2. SUBROUTINE CUNHJ (Z, FNU, IPMTR, TOL, PHI, ARG, ZETA1, ZETA2,
  3. + ASUM, BSUM)
  4. C***BEGIN PROLOGUE CUNHJ
  5. C***SUBSIDIARY
  6. C***PURPOSE Subsidiary to CBESI and CBESK
  7. C***LIBRARY SLATEC
  8. C***TYPE ALL (CUNHJ-A, ZUNHJ-A)
  9. C***AUTHOR Amos, D. E., (SNL)
  10. C***DESCRIPTION
  11. C
  12. C REFERENCES
  13. C HANDBOOK OF MATHEMATICAL FUNCTIONS BY M. ABRAMOWITZ AND I.A.
  14. C STEGUN, AMS55, NATIONAL BUREAU OF STANDARDS, 1965, CHAPTER 9.
  15. C
  16. C ASYMPTOTICS AND SPECIAL FUNCTIONS BY F.W.J. OLVER, ACADEMIC
  17. C PRESS, N.Y., 1974, PAGE 420
  18. C
  19. C ABSTRACT
  20. C CUNHJ COMPUTES PARAMETERS FOR BESSEL FUNCTIONS C(FNU,Z) =
  21. C J(FNU,Z), Y(FNU,Z) OR H(I,FNU,Z) I=1,2 FOR LARGE ORDERS FNU
  22. C BY MEANS OF THE UNIFORM ASYMPTOTIC EXPANSION
  23. C
  24. C C(FNU,Z)=C1*PHI*( ASUM*AIRY(ARG) + C2*BSUM*DAIRY(ARG) )
  25. C
  26. C FOR PROPER CHOICES OF C1, C2, AIRY AND DAIRY WHERE AIRY IS
  27. C AN AIRY FUNCTION AND DAIRY IS ITS DERIVATIVE.
  28. C
  29. C (2/3)*FNU*ZETA**1.5 = ZETA1-ZETA2,
  30. C
  31. C ZETA1=0.5*FNU*CLOG((1+W)/(1-W)), ZETA2=FNU*W FOR SCALING
  32. C PURPOSES IN AIRY FUNCTIONS FROM CAIRY OR CBIRY.
  33. C
  34. C MCONJ=SIGN OF AIMAG(Z), BUT IS AMBIGUOUS WHEN Z IS REAL AND
  35. C MUST BE SPECIFIED. IPMTR=0 RETURNS ALL PARAMETERS. IPMTR=
  36. C 1 COMPUTES ALL EXCEPT ASUM AND BSUM.
  37. C
  38. C***SEE ALSO CBESI, CBESK
  39. C***ROUTINES CALLED R1MACH
  40. C***REVISION HISTORY (YYMMDD)
  41. C 830501 DATE WRITTEN
  42. C 910415 Prologue converted to Version 4.0 format. (BAB)
  43. C***END PROLOGUE CUNHJ
  44. COMPLEX ARG, ASUM, BSUM, CFNU, CONE, CR, CZERO, DR, P, PHI,
  45. * PRZTH, PTFN, RFN13, RTZTA, RZTH, SUMA, SUMB, TFN, T2, UP, W, W2,
  46. * Z, ZA, ZB, ZC, ZETA, ZETA1, ZETA2, ZTH
  47. REAL ALFA, ANG, AP, AR, ATOL, AW2, AZTH, BETA, BR, BTOL, C, EX1,
  48. * EX2, FNU, FN13, FN23, GAMA, HPI, PI, PP, RFNU, RFNU2, THPI, TOL,
  49. * WI, WR, ZCI, ZCR, ZETAI, ZETAR, ZTHI, ZTHR, ASUMR, ASUMI, BSUMR,
  50. * BSUMI, TEST, TSTR, TSTI, AC, R1MACH
  51. INTEGER IAS, IBS, IPMTR, IS, J, JR, JU, K, KMAX, KP1, KS, L, LR,
  52. * LRP1, L1, L2, M
  53. DIMENSION AR(14), BR(14), C(105), ALFA(180), BETA(210), GAMA(30),
  54. * AP(30), P(30), UP(14), CR(14), DR(14)
  55. DATA AR(1), AR(2), AR(3), AR(4), AR(5), AR(6), AR(7), AR(8),
  56. 1 AR(9), AR(10), AR(11), AR(12), AR(13), AR(14)/
  57. 2 1.00000000000000000E+00, 1.04166666666666667E-01,
  58. 3 8.35503472222222222E-02, 1.28226574556327160E-01,
  59. 4 2.91849026464140464E-01, 8.81627267443757652E-01,
  60. 5 3.32140828186276754E+00, 1.49957629868625547E+01,
  61. 6 7.89230130115865181E+01, 4.74451538868264323E+02,
  62. 7 3.20749009089066193E+03, 2.40865496408740049E+04,
  63. 8 1.98923119169509794E+05, 1.79190200777534383E+06/
  64. DATA BR(1), BR(2), BR(3), BR(4), BR(5), BR(6), BR(7), BR(8),
  65. 1 BR(9), BR(10), BR(11), BR(12), BR(13), BR(14)/
  66. 2 1.00000000000000000E+00, -1.45833333333333333E-01,
  67. 3 -9.87413194444444444E-02, -1.43312053915895062E-01,
  68. 4 -3.17227202678413548E-01, -9.42429147957120249E-01,
  69. 5 -3.51120304082635426E+00, -1.57272636203680451E+01,
  70. 6 -8.22814390971859444E+01, -4.92355370523670524E+02,
  71. 7 -3.31621856854797251E+03, -2.48276742452085896E+04,
  72. 8 -2.04526587315129788E+05, -1.83844491706820990E+06/
  73. DATA C(1), C(2), C(3), C(4), C(5), C(6), C(7), C(8), C(9), C(10),
  74. 1 C(11), C(12), C(13), C(14), C(15), C(16), C(17), C(18),
  75. 2 C(19), C(20), C(21), C(22), C(23), C(24)/
  76. 3 1.00000000000000000E+00, -2.08333333333333333E-01,
  77. 4 1.25000000000000000E-01, 3.34201388888888889E-01,
  78. 5 -4.01041666666666667E-01, 7.03125000000000000E-02,
  79. 6 -1.02581259645061728E+00, 1.84646267361111111E+00,
  80. 7 -8.91210937500000000E-01, 7.32421875000000000E-02,
  81. 8 4.66958442342624743E+00, -1.12070026162229938E+01,
  82. 9 8.78912353515625000E+00, -2.36408691406250000E+00,
  83. A 1.12152099609375000E-01, -2.82120725582002449E+01,
  84. B 8.46362176746007346E+01, -9.18182415432400174E+01,
  85. C 4.25349987453884549E+01, -7.36879435947963170E+00,
  86. D 2.27108001708984375E-01, 2.12570130039217123E+02,
  87. E -7.65252468141181642E+02, 1.05999045252799988E+03/
  88. DATA C(25), C(26), C(27), C(28), C(29), C(30), C(31), C(32),
  89. 1 C(33), C(34), C(35), C(36), C(37), C(38), C(39), C(40),
  90. 2 C(41), C(42), C(43), C(44), C(45), C(46), C(47), C(48)/
  91. 3 -6.99579627376132541E+02, 2.18190511744211590E+02,
  92. 4 -2.64914304869515555E+01, 5.72501420974731445E-01,
  93. 5 -1.91945766231840700E+03, 8.06172218173730938E+03,
  94. 6 -1.35865500064341374E+04, 1.16553933368645332E+04,
  95. 7 -5.30564697861340311E+03, 1.20090291321635246E+03,
  96. 8 -1.08090919788394656E+02, 1.72772750258445740E+00,
  97. 9 2.02042913309661486E+04, -9.69805983886375135E+04,
  98. A 1.92547001232531532E+05, -2.03400177280415534E+05,
  99. B 1.22200464983017460E+05, -4.11926549688975513E+04,
  100. C 7.10951430248936372E+03, -4.93915304773088012E+02,
  101. D 6.07404200127348304E+00, -2.42919187900551333E+05,
  102. E 1.31176361466297720E+06, -2.99801591853810675E+06/
  103. DATA C(49), C(50), C(51), C(52), C(53), C(54), C(55), C(56),
  104. 1 C(57), C(58), C(59), C(60), C(61), C(62), C(63), C(64),
  105. 2 C(65), C(66), C(67), C(68), C(69), C(70), C(71), C(72)/
  106. 3 3.76327129765640400E+06, -2.81356322658653411E+06,
  107. 4 1.26836527332162478E+06, -3.31645172484563578E+05,
  108. 5 4.52187689813627263E+04, -2.49983048181120962E+03,
  109. 6 2.43805296995560639E+01, 3.28446985307203782E+06,
  110. 7 -1.97068191184322269E+07, 5.09526024926646422E+07,
  111. 8 -7.41051482115326577E+07, 6.63445122747290267E+07,
  112. 9 -3.75671766607633513E+07, 1.32887671664218183E+07,
  113. A -2.78561812808645469E+06, 3.08186404612662398E+05,
  114. B -1.38860897537170405E+04, 1.10017140269246738E+02,
  115. C -4.93292536645099620E+07, 3.25573074185765749E+08,
  116. D -9.39462359681578403E+08, 1.55359689957058006E+09,
  117. E -1.62108055210833708E+09, 1.10684281682301447E+09/
  118. DATA C(73), C(74), C(75), C(76), C(77), C(78), C(79), C(80),
  119. 1 C(81), C(82), C(83), C(84), C(85), C(86), C(87), C(88),
  120. 2 C(89), C(90), C(91), C(92), C(93), C(94), C(95), C(96)/
  121. 3 -4.95889784275030309E+08, 1.42062907797533095E+08,
  122. 4 -2.44740627257387285E+07, 2.24376817792244943E+06,
  123. 5 -8.40054336030240853E+04, 5.51335896122020586E+02,
  124. 6 8.14789096118312115E+08, -5.86648149205184723E+09,
  125. 7 1.86882075092958249E+10, -3.46320433881587779E+10,
  126. 8 4.12801855797539740E+10, -3.30265997498007231E+10,
  127. 9 1.79542137311556001E+10, -6.56329379261928433E+09,
  128. A 1.55927986487925751E+09, -2.25105661889415278E+08,
  129. B 1.73951075539781645E+07, -5.49842327572288687E+05,
  130. C 3.03809051092238427E+03, -1.46792612476956167E+10,
  131. D 1.14498237732025810E+11, -3.99096175224466498E+11,
  132. E 8.19218669548577329E+11, -1.09837515608122331E+12/
  133. DATA C(97), C(98), C(99), C(100), C(101), C(102), C(103), C(104),
  134. 1 C(105)/
  135. 2 1.00815810686538209E+12, -6.45364869245376503E+11,
  136. 3 2.87900649906150589E+11, -8.78670721780232657E+10,
  137. 4 1.76347306068349694E+10, -2.16716498322379509E+09,
  138. 5 1.43157876718888981E+08, -3.87183344257261262E+06,
  139. 6 1.82577554742931747E+04/
  140. DATA ALFA(1), ALFA(2), ALFA(3), ALFA(4), ALFA(5), ALFA(6),
  141. 1 ALFA(7), ALFA(8), ALFA(9), ALFA(10), ALFA(11), ALFA(12),
  142. 2 ALFA(13), ALFA(14), ALFA(15), ALFA(16), ALFA(17), ALFA(18),
  143. 3 ALFA(19), ALFA(20), ALFA(21), ALFA(22)/
  144. 4 -4.44444444444444444E-03, -9.22077922077922078E-04,
  145. 5 -8.84892884892884893E-05, 1.65927687832449737E-04,
  146. 6 2.46691372741792910E-04, 2.65995589346254780E-04,
  147. 7 2.61824297061500945E-04, 2.48730437344655609E-04,
  148. 8 2.32721040083232098E-04, 2.16362485712365082E-04,
  149. 9 2.00738858762752355E-04, 1.86267636637545172E-04,
  150. A 1.73060775917876493E-04, 1.61091705929015752E-04,
  151. B 1.50274774160908134E-04, 1.40503497391269794E-04,
  152. C 1.31668816545922806E-04, 1.23667445598253261E-04,
  153. D 1.16405271474737902E-04, 1.09798298372713369E-04,
  154. E 1.03772410422992823E-04, 9.82626078369363448E-05/
  155. DATA ALFA(23), ALFA(24), ALFA(25), ALFA(26), ALFA(27), ALFA(28),
  156. 1 ALFA(29), ALFA(30), ALFA(31), ALFA(32), ALFA(33), ALFA(34),
  157. 2 ALFA(35), ALFA(36), ALFA(37), ALFA(38), ALFA(39), ALFA(40),
  158. 3 ALFA(41), ALFA(42), ALFA(43), ALFA(44)/
  159. 4 9.32120517249503256E-05, 8.85710852478711718E-05,
  160. 5 8.42963105715700223E-05, 8.03497548407791151E-05,
  161. 6 7.66981345359207388E-05, 7.33122157481777809E-05,
  162. 7 7.01662625163141333E-05, 6.72375633790160292E-05,
  163. 8 6.93735541354588974E-04, 2.32241745182921654E-04,
  164. 9 -1.41986273556691197E-05, -1.16444931672048640E-04,
  165. A -1.50803558053048762E-04, -1.55121924918096223E-04,
  166. B -1.46809756646465549E-04, -1.33815503867491367E-04,
  167. C -1.19744975684254051E-04, -1.06184319207974020E-04,
  168. D -9.37699549891194492E-05, -8.26923045588193274E-05,
  169. E -7.29374348155221211E-05, -6.44042357721016283E-05/
  170. DATA ALFA(45), ALFA(46), ALFA(47), ALFA(48), ALFA(49), ALFA(50),
  171. 1 ALFA(51), ALFA(52), ALFA(53), ALFA(54), ALFA(55), ALFA(56),
  172. 2 ALFA(57), ALFA(58), ALFA(59), ALFA(60), ALFA(61), ALFA(62),
  173. 3 ALFA(63), ALFA(64), ALFA(65), ALFA(66)/
  174. 4 -5.69611566009369048E-05, -5.04731044303561628E-05,
  175. 5 -4.48134868008882786E-05, -3.98688727717598864E-05,
  176. 6 -3.55400532972042498E-05, -3.17414256609022480E-05,
  177. 7 -2.83996793904174811E-05, -2.54522720634870566E-05,
  178. 8 -2.28459297164724555E-05, -2.05352753106480604E-05,
  179. 9 -1.84816217627666085E-05, -1.66519330021393806E-05,
  180. A -1.50179412980119482E-05, -1.35554031379040526E-05,
  181. B -1.22434746473858131E-05, -1.10641884811308169E-05,
  182. C -3.54211971457743841E-04, -1.56161263945159416E-04,
  183. D 3.04465503594936410E-05, 1.30198655773242693E-04,
  184. E 1.67471106699712269E-04, 1.70222587683592569E-04/
  185. DATA ALFA(67), ALFA(68), ALFA(69), ALFA(70), ALFA(71), ALFA(72),
  186. 1 ALFA(73), ALFA(74), ALFA(75), ALFA(76), ALFA(77), ALFA(78),
  187. 2 ALFA(79), ALFA(80), ALFA(81), ALFA(82), ALFA(83), ALFA(84),
  188. 3 ALFA(85), ALFA(86), ALFA(87), ALFA(88)/
  189. 4 1.56501427608594704E-04, 1.36339170977445120E-04,
  190. 5 1.14886692029825128E-04, 9.45869093034688111E-05,
  191. 6 7.64498419250898258E-05, 6.07570334965197354E-05,
  192. 7 4.74394299290508799E-05, 3.62757512005344297E-05,
  193. 8 2.69939714979224901E-05, 1.93210938247939253E-05,
  194. 9 1.30056674793963203E-05, 7.82620866744496661E-06,
  195. A 3.59257485819351583E-06, 1.44040049814251817E-07,
  196. B -2.65396769697939116E-06, -4.91346867098485910E-06,
  197. C -6.72739296091248287E-06, -8.17269379678657923E-06,
  198. D -9.31304715093561232E-06, -1.02011418798016441E-05,
  199. E -1.08805962510592880E-05, -1.13875481509603555E-05/
  200. DATA ALFA(89), ALFA(90), ALFA(91), ALFA(92), ALFA(93), ALFA(94),
  201. 1 ALFA(95), ALFA(96), ALFA(97), ALFA(98), ALFA(99), ALFA(100),
  202. 2 ALFA(101), ALFA(102), ALFA(103), ALFA(104), ALFA(105),
  203. 3 ALFA(106), ALFA(107), ALFA(108), ALFA(109), ALFA(110)/
  204. 4 -1.17519675674556414E-05, -1.19987364870944141E-05,
  205. 5 3.78194199201772914E-04, 2.02471952761816167E-04,
  206. 6 -6.37938506318862408E-05, -2.38598230603005903E-04,
  207. 7 -3.10916256027361568E-04, -3.13680115247576316E-04,
  208. 8 -2.78950273791323387E-04, -2.28564082619141374E-04,
  209. 9 -1.75245280340846749E-04, -1.25544063060690348E-04,
  210. A -8.22982872820208365E-05, -4.62860730588116458E-05,
  211. B -1.72334302366962267E-05, 5.60690482304602267E-06,
  212. C 2.31395443148286800E-05, 3.62642745856793957E-05,
  213. D 4.58006124490188752E-05, 5.24595294959114050E-05,
  214. E 5.68396208545815266E-05, 5.94349820393104052E-05/
  215. DATA ALFA(111), ALFA(112), ALFA(113), ALFA(114), ALFA(115),
  216. 1 ALFA(116), ALFA(117), ALFA(118), ALFA(119), ALFA(120),
  217. 2 ALFA(121), ALFA(122), ALFA(123), ALFA(124), ALFA(125),
  218. 3 ALFA(126), ALFA(127), ALFA(128), ALFA(129), ALFA(130)/
  219. 4 6.06478527578421742E-05, 6.08023907788436497E-05,
  220. 5 6.01577894539460388E-05, 5.89199657344698500E-05,
  221. 6 5.72515823777593053E-05, 5.52804375585852577E-05,
  222. 7 5.31063773802880170E-05, 5.08069302012325706E-05,
  223. 8 4.84418647620094842E-05, 4.60568581607475370E-05,
  224. 9 -6.91141397288294174E-04, -4.29976633058871912E-04,
  225. A 1.83067735980039018E-04, 6.60088147542014144E-04,
  226. B 8.75964969951185931E-04, 8.77335235958235514E-04,
  227. C 7.49369585378990637E-04, 5.63832329756980918E-04,
  228. D 3.68059319971443156E-04, 1.88464535514455599E-04/
  229. DATA ALFA(131), ALFA(132), ALFA(133), ALFA(134), ALFA(135),
  230. 1 ALFA(136), ALFA(137), ALFA(138), ALFA(139), ALFA(140),
  231. 2 ALFA(141), ALFA(142), ALFA(143), ALFA(144), ALFA(145),
  232. 3 ALFA(146), ALFA(147), ALFA(148), ALFA(149), ALFA(150)/
  233. 4 3.70663057664904149E-05, -8.28520220232137023E-05,
  234. 5 -1.72751952869172998E-04, -2.36314873605872983E-04,
  235. 6 -2.77966150694906658E-04, -3.02079514155456919E-04,
  236. 7 -3.12594712643820127E-04, -3.12872558758067163E-04,
  237. 8 -3.05678038466324377E-04, -2.93226470614557331E-04,
  238. 9 -2.77255655582934777E-04, -2.59103928467031709E-04,
  239. A -2.39784014396480342E-04, -2.20048260045422848E-04,
  240. B -2.00443911094971498E-04, -1.81358692210970687E-04,
  241. C -1.63057674478657464E-04, -1.45712672175205844E-04,
  242. D -1.29425421983924587E-04, -1.14245691942445952E-04/
  243. DATA ALFA(151), ALFA(152), ALFA(153), ALFA(154), ALFA(155),
  244. 1 ALFA(156), ALFA(157), ALFA(158), ALFA(159), ALFA(160),
  245. 2 ALFA(161), ALFA(162), ALFA(163), ALFA(164), ALFA(165),
  246. 3 ALFA(166), ALFA(167), ALFA(168), ALFA(169), ALFA(170)/
  247. 4 1.92821964248775885E-03, 1.35592576302022234E-03,
  248. 5 -7.17858090421302995E-04, -2.58084802575270346E-03,
  249. 6 -3.49271130826168475E-03, -3.46986299340960628E-03,
  250. 7 -2.82285233351310182E-03, -1.88103076404891354E-03,
  251. 8 -8.89531718383947600E-04, 3.87912102631035228E-06,
  252. 9 7.28688540119691412E-04, 1.26566373053457758E-03,
  253. A 1.62518158372674427E-03, 1.83203153216373172E-03,
  254. B 1.91588388990527909E-03, 1.90588846755546138E-03,
  255. C 1.82798982421825727E-03, 1.70389506421121530E-03,
  256. D 1.55097127171097686E-03, 1.38261421852276159E-03/
  257. DATA ALFA(171), ALFA(172), ALFA(173), ALFA(174), ALFA(175),
  258. 1 ALFA(176), ALFA(177), ALFA(178), ALFA(179), ALFA(180)/
  259. 2 1.20881424230064774E-03, 1.03676532638344962E-03,
  260. 3 8.71437918068619115E-04, 7.16080155297701002E-04,
  261. 4 5.72637002558129372E-04, 4.42089819465802277E-04,
  262. 5 3.24724948503090564E-04, 2.20342042730246599E-04,
  263. 6 1.28412898401353882E-04, 4.82005924552095464E-05/
  264. DATA BETA(1), BETA(2), BETA(3), BETA(4), BETA(5), BETA(6),
  265. 1 BETA(7), BETA(8), BETA(9), BETA(10), BETA(11), BETA(12),
  266. 2 BETA(13), BETA(14), BETA(15), BETA(16), BETA(17), BETA(18),
  267. 3 BETA(19), BETA(20), BETA(21), BETA(22)/
  268. 4 1.79988721413553309E-02, 5.59964911064388073E-03,
  269. 5 2.88501402231132779E-03, 1.80096606761053941E-03,
  270. 6 1.24753110589199202E-03, 9.22878876572938311E-04,
  271. 7 7.14430421727287357E-04, 5.71787281789704872E-04,
  272. 8 4.69431007606481533E-04, 3.93232835462916638E-04,
  273. 9 3.34818889318297664E-04, 2.88952148495751517E-04,
  274. A 2.52211615549573284E-04, 2.22280580798883327E-04,
  275. B 1.97541838033062524E-04, 1.76836855019718004E-04,
  276. C 1.59316899661821081E-04, 1.44347930197333986E-04,
  277. D 1.31448068119965379E-04, 1.20245444949302884E-04,
  278. E 1.10449144504599392E-04, 1.01828770740567258E-04/
  279. DATA BETA(23), BETA(24), BETA(25), BETA(26), BETA(27), BETA(28),
  280. 1 BETA(29), BETA(30), BETA(31), BETA(32), BETA(33), BETA(34),
  281. 2 BETA(35), BETA(36), BETA(37), BETA(38), BETA(39), BETA(40),
  282. 3 BETA(41), BETA(42), BETA(43), BETA(44)/
  283. 4 9.41998224204237509E-05, 8.74130545753834437E-05,
  284. 5 8.13466262162801467E-05, 7.59002269646219339E-05,
  285. 6 7.09906300634153481E-05, 6.65482874842468183E-05,
  286. 7 6.25146958969275078E-05, 5.88403394426251749E-05,
  287. 8 -1.49282953213429172E-03, -8.78204709546389328E-04,
  288. 9 -5.02916549572034614E-04, -2.94822138512746025E-04,
  289. A -1.75463996970782828E-04, -1.04008550460816434E-04,
  290. B -5.96141953046457895E-05, -3.12038929076098340E-05,
  291. C -1.26089735980230047E-05, -2.42892608575730389E-07,
  292. D 8.05996165414273571E-06, 1.36507009262147391E-05,
  293. E 1.73964125472926261E-05, 1.98672978842133780E-05/
  294. DATA BETA(45), BETA(46), BETA(47), BETA(48), BETA(49), BETA(50),
  295. 1 BETA(51), BETA(52), BETA(53), BETA(54), BETA(55), BETA(56),
  296. 2 BETA(57), BETA(58), BETA(59), BETA(60), BETA(61), BETA(62),
  297. 3 BETA(63), BETA(64), BETA(65), BETA(66)/
  298. 4 2.14463263790822639E-05, 2.23954659232456514E-05,
  299. 5 2.28967783814712629E-05, 2.30785389811177817E-05,
  300. 6 2.30321976080909144E-05, 2.28236073720348722E-05,
  301. 7 2.25005881105292418E-05, 2.20981015361991429E-05,
  302. 8 2.16418427448103905E-05, 2.11507649256220843E-05,
  303. 9 2.06388749782170737E-05, 2.01165241997081666E-05,
  304. A 1.95913450141179244E-05, 1.90689367910436740E-05,
  305. B 1.85533719641636667E-05, 1.80475722259674218E-05,
  306. C 5.52213076721292790E-04, 4.47932581552384646E-04,
  307. D 2.79520653992020589E-04, 1.52468156198446602E-04,
  308. E 6.93271105657043598E-05, 1.76258683069991397E-05/
  309. DATA BETA(67), BETA(68), BETA(69), BETA(70), BETA(71), BETA(72),
  310. 1 BETA(73), BETA(74), BETA(75), BETA(76), BETA(77), BETA(78),
  311. 2 BETA(79), BETA(80), BETA(81), BETA(82), BETA(83), BETA(84),
  312. 3 BETA(85), BETA(86), BETA(87), BETA(88)/
  313. 4 -1.35744996343269136E-05, -3.17972413350427135E-05,
  314. 5 -4.18861861696693365E-05, -4.69004889379141029E-05,
  315. 6 -4.87665447413787352E-05, -4.87010031186735069E-05,
  316. 7 -4.74755620890086638E-05, -4.55813058138628452E-05,
  317. 8 -4.33309644511266036E-05, -4.09230193157750364E-05,
  318. 9 -3.84822638603221274E-05, -3.60857167535410501E-05,
  319. A -3.37793306123367417E-05, -3.15888560772109621E-05,
  320. B -2.95269561750807315E-05, -2.75978914828335759E-05,
  321. C -2.58006174666883713E-05, -2.41308356761280200E-05,
  322. D -2.25823509518346033E-05, -2.11479656768912971E-05,
  323. E -1.98200638885294927E-05, -1.85909870801065077E-05/
  324. DATA BETA(89), BETA(90), BETA(91), BETA(92), BETA(93), BETA(94),
  325. 1 BETA(95), BETA(96), BETA(97), BETA(98), BETA(99), BETA(100),
  326. 2 BETA(101), BETA(102), BETA(103), BETA(104), BETA(105),
  327. 3 BETA(106), BETA(107), BETA(108), BETA(109), BETA(110)/
  328. 4 -1.74532699844210224E-05, -1.63997823854497997E-05,
  329. 5 -4.74617796559959808E-04, -4.77864567147321487E-04,
  330. 6 -3.20390228067037603E-04, -1.61105016119962282E-04,
  331. 7 -4.25778101285435204E-05, 3.44571294294967503E-05,
  332. 8 7.97092684075674924E-05, 1.03138236708272200E-04,
  333. 9 1.12466775262204158E-04, 1.13103642108481389E-04,
  334. A 1.08651634848774268E-04, 1.01437951597661973E-04,
  335. B 9.29298396593363896E-05, 8.40293133016089978E-05,
  336. C 7.52727991349134062E-05, 6.69632521975730872E-05,
  337. D 5.92564547323194704E-05, 5.22169308826975567E-05,
  338. E 4.58539485165360646E-05, 4.01445513891486808E-05/
  339. DATA BETA(111), BETA(112), BETA(113), BETA(114), BETA(115),
  340. 1 BETA(116), BETA(117), BETA(118), BETA(119), BETA(120),
  341. 2 BETA(121), BETA(122), BETA(123), BETA(124), BETA(125),
  342. 3 BETA(126), BETA(127), BETA(128), BETA(129), BETA(130)/
  343. 4 3.50481730031328081E-05, 3.05157995034346659E-05,
  344. 5 2.64956119950516039E-05, 2.29363633690998152E-05,
  345. 6 1.97893056664021636E-05, 1.70091984636412623E-05,
  346. 7 1.45547428261524004E-05, 1.23886640995878413E-05,
  347. 8 1.04775876076583236E-05, 8.79179954978479373E-06,
  348. 9 7.36465810572578444E-04, 8.72790805146193976E-04,
  349. A 6.22614862573135066E-04, 2.85998154194304147E-04,
  350. B 3.84737672879366102E-06, -1.87906003636971558E-04,
  351. C -2.97603646594554535E-04, -3.45998126832656348E-04,
  352. D -3.53382470916037712E-04, -3.35715635775048757E-04/
  353. DATA BETA(131), BETA(132), BETA(133), BETA(134), BETA(135),
  354. 1 BETA(136), BETA(137), BETA(138), BETA(139), BETA(140),
  355. 2 BETA(141), BETA(142), BETA(143), BETA(144), BETA(145),
  356. 3 BETA(146), BETA(147), BETA(148), BETA(149), BETA(150)/
  357. 4 -3.04321124789039809E-04, -2.66722723047612821E-04,
  358. 5 -2.27654214122819527E-04, -1.89922611854562356E-04,
  359. 6 -1.55058918599093870E-04, -1.23778240761873630E-04,
  360. 7 -9.62926147717644187E-05, -7.25178327714425337E-05,
  361. 8 -5.22070028895633801E-05, -3.50347750511900522E-05,
  362. 9 -2.06489761035551757E-05, -8.70106096849767054E-06,
  363. A 1.13698686675100290E-06, 9.16426474122778849E-06,
  364. B 1.56477785428872620E-05, 2.08223629482466847E-05,
  365. C 2.48923381004595156E-05, 2.80340509574146325E-05,
  366. D 3.03987774629861915E-05, 3.21156731406700616E-05/
  367. DATA BETA(151), BETA(152), BETA(153), BETA(154), BETA(155),
  368. 1 BETA(156), BETA(157), BETA(158), BETA(159), BETA(160),
  369. 2 BETA(161), BETA(162), BETA(163), BETA(164), BETA(165),
  370. 3 BETA(166), BETA(167), BETA(168), BETA(169), BETA(170)/
  371. 4 -1.80182191963885708E-03, -2.43402962938042533E-03,
  372. 5 -1.83422663549856802E-03, -7.62204596354009765E-04,
  373. 6 2.39079475256927218E-04, 9.49266117176881141E-04,
  374. 7 1.34467449701540359E-03, 1.48457495259449178E-03,
  375. 8 1.44732339830617591E-03, 1.30268261285657186E-03,
  376. 9 1.10351597375642682E-03, 8.86047440419791759E-04,
  377. A 6.73073208165665473E-04, 4.77603872856582378E-04,
  378. B 3.05991926358789362E-04, 1.60315694594721630E-04,
  379. C 4.00749555270613286E-05, -5.66607461635251611E-05,
  380. D -1.32506186772982638E-04, -1.90296187989614057E-04/
  381. DATA BETA(171), BETA(172), BETA(173), BETA(174), BETA(175),
  382. 1 BETA(176), BETA(177), BETA(178), BETA(179), BETA(180),
  383. 2 BETA(181), BETA(182), BETA(183), BETA(184), BETA(185),
  384. 3 BETA(186), BETA(187), BETA(188), BETA(189), BETA(190)/
  385. 4 -2.32811450376937408E-04, -2.62628811464668841E-04,
  386. 5 -2.82050469867598672E-04, -2.93081563192861167E-04,
  387. 6 -2.97435962176316616E-04, -2.96557334239348078E-04,
  388. 7 -2.91647363312090861E-04, -2.83696203837734166E-04,
  389. 8 -2.73512317095673346E-04, -2.61750155806768580E-04,
  390. 9 6.38585891212050914E-03, 9.62374215806377941E-03,
  391. A 7.61878061207001043E-03, 2.83219055545628054E-03,
  392. B -2.09841352012720090E-03, -5.73826764216626498E-03,
  393. C -7.70804244495414620E-03, -8.21011692264844401E-03,
  394. D -7.65824520346905413E-03, -6.47209729391045177E-03/
  395. DATA BETA(191), BETA(192), BETA(193), BETA(194), BETA(195),
  396. 1 BETA(196), BETA(197), BETA(198), BETA(199), BETA(200),
  397. 2 BETA(201), BETA(202), BETA(203), BETA(204), BETA(205),
  398. 3 BETA(206), BETA(207), BETA(208), BETA(209), BETA(210)/
  399. 4 -4.99132412004966473E-03, -3.45612289713133280E-03,
  400. 5 -2.01785580014170775E-03, -7.59430686781961401E-04,
  401. 6 2.84173631523859138E-04, 1.10891667586337403E-03,
  402. 7 1.72901493872728771E-03, 2.16812590802684701E-03,
  403. 8 2.45357710494539735E-03, 2.61281821058334862E-03,
  404. 9 2.67141039656276912E-03, 2.65203073395980430E-03,
  405. A 2.57411652877287315E-03, 2.45389126236094427E-03,
  406. B 2.30460058071795494E-03, 2.13684837686712662E-03,
  407. C 1.95896528478870911E-03, 1.77737008679454412E-03,
  408. D 1.59690280765839059E-03, 1.42111975664438546E-03/
  409. DATA GAMA(1), GAMA(2), GAMA(3), GAMA(4), GAMA(5), GAMA(6),
  410. 1 GAMA(7), GAMA(8), GAMA(9), GAMA(10), GAMA(11), GAMA(12),
  411. 2 GAMA(13), GAMA(14), GAMA(15), GAMA(16), GAMA(17), GAMA(18),
  412. 3 GAMA(19), GAMA(20), GAMA(21), GAMA(22)/
  413. 4 6.29960524947436582E-01, 2.51984209978974633E-01,
  414. 5 1.54790300415655846E-01, 1.10713062416159013E-01,
  415. 6 8.57309395527394825E-02, 6.97161316958684292E-02,
  416. 7 5.86085671893713576E-02, 5.04698873536310685E-02,
  417. 8 4.42600580689154809E-02, 3.93720661543509966E-02,
  418. 9 3.54283195924455368E-02, 3.21818857502098231E-02,
  419. A 2.94646240791157679E-02, 2.71581677112934479E-02,
  420. B 2.51768272973861779E-02, 2.34570755306078891E-02,
  421. C 2.19508390134907203E-02, 2.06210828235646240E-02,
  422. D 1.94388240897880846E-02, 1.83810633800683158E-02,
  423. E 1.74293213231963172E-02, 1.65685837786612353E-02/
  424. DATA GAMA(23), GAMA(24), GAMA(25), GAMA(26), GAMA(27), GAMA(28),
  425. 1 GAMA(29), GAMA(30)/
  426. 2 1.57865285987918445E-02, 1.50729501494095594E-02,
  427. 3 1.44193250839954639E-02, 1.38184805735341786E-02,
  428. 4 1.32643378994276568E-02, 1.27517121970498651E-02,
  429. 5 1.22761545318762767E-02, 1.18338262398482403E-02/
  430. DATA EX1, EX2, HPI, PI, THPI /
  431. 1 3.33333333333333333E-01, 6.66666666666666667E-01,
  432. 2 1.57079632679489662E+00, 3.14159265358979324E+00,
  433. 3 4.71238898038468986E+00/
  434. DATA CZERO, CONE / (0.0E0,0.0E0), (1.0E0,0.0E0) /
  435. C***FIRST EXECUTABLE STATEMENT CUNHJ
  436. RFNU = 1.0E0/FNU
  437. C ZB = Z*CMPLX(RFNU,0.0E0)
  438. C-----------------------------------------------------------------------
  439. C OVERFLOW TEST (Z/FNU TOO SMALL)
  440. C-----------------------------------------------------------------------
  441. TSTR = REAL(Z)
  442. TSTI = AIMAG(Z)
  443. TEST = R1MACH(1)*1.0E+3
  444. AC = FNU*TEST
  445. IF (ABS(TSTR).GT.AC .OR. ABS(TSTI).GT.AC) GO TO 15
  446. AC = 2.0E0*ABS(ALOG(TEST))+FNU
  447. ZETA1 = CMPLX(AC,0.0E0)
  448. ZETA2 = CMPLX(FNU,0.0E0)
  449. PHI=CONE
  450. ARG=CONE
  451. RETURN
  452. 15 CONTINUE
  453. ZB = Z*CMPLX(RFNU,0.0E0)
  454. RFNU2 = RFNU*RFNU
  455. C-----------------------------------------------------------------------
  456. C COMPUTE IN THE FOURTH QUADRANT
  457. C-----------------------------------------------------------------------
  458. FN13 = FNU**EX1
  459. FN23 = FN13*FN13
  460. RFN13 = CMPLX(1.0E0/FN13,0.0E0)
  461. W2 = CONE - ZB*ZB
  462. AW2 = ABS(W2)
  463. IF (AW2.GT.0.25E0) GO TO 130
  464. C-----------------------------------------------------------------------
  465. C POWER SERIES FOR ABS(W2).LE.0.25E0
  466. C-----------------------------------------------------------------------
  467. K = 1
  468. P(1) = CONE
  469. SUMA = CMPLX(GAMA(1),0.0E0)
  470. AP(1) = 1.0E0
  471. IF (AW2.LT.TOL) GO TO 20
  472. DO 10 K=2,30
  473. P(K) = P(K-1)*W2
  474. SUMA = SUMA + P(K)*CMPLX(GAMA(K),0.0E0)
  475. AP(K) = AP(K-1)*AW2
  476. IF (AP(K).LT.TOL) GO TO 20
  477. 10 CONTINUE
  478. K = 30
  479. 20 CONTINUE
  480. KMAX = K
  481. ZETA = W2*SUMA
  482. ARG = ZETA*CMPLX(FN23,0.0E0)
  483. ZA = CSQRT(SUMA)
  484. ZETA2 = CSQRT(W2)*CMPLX(FNU,0.0E0)
  485. ZETA1 = ZETA2*(CONE+ZETA*ZA*CMPLX(EX2,0.0E0))
  486. ZA = ZA + ZA
  487. PHI = CSQRT(ZA)*RFN13
  488. IF (IPMTR.EQ.1) GO TO 120
  489. C-----------------------------------------------------------------------
  490. C SUM SERIES FOR ASUM AND BSUM
  491. C-----------------------------------------------------------------------
  492. SUMB = CZERO
  493. DO 30 K=1,KMAX
  494. SUMB = SUMB + P(K)*CMPLX(BETA(K),0.0E0)
  495. 30 CONTINUE
  496. ASUM = CZERO
  497. BSUM = SUMB
  498. L1 = 0
  499. L2 = 30
  500. BTOL = TOL*ABS(BSUM)
  501. ATOL = TOL
  502. PP = 1.0E0
  503. IAS = 0
  504. IBS = 0
  505. IF (RFNU2.LT.TOL) GO TO 110
  506. DO 100 IS=2,7
  507. ATOL = ATOL/RFNU2
  508. PP = PP*RFNU2
  509. IF (IAS.EQ.1) GO TO 60
  510. SUMA = CZERO
  511. DO 40 K=1,KMAX
  512. M = L1 + K
  513. SUMA = SUMA + P(K)*CMPLX(ALFA(M),0.0E0)
  514. IF (AP(K).LT.ATOL) GO TO 50
  515. 40 CONTINUE
  516. 50 CONTINUE
  517. ASUM = ASUM + SUMA*CMPLX(PP,0.0E0)
  518. IF (PP.LT.TOL) IAS = 1
  519. 60 CONTINUE
  520. IF (IBS.EQ.1) GO TO 90
  521. SUMB = CZERO
  522. DO 70 K=1,KMAX
  523. M = L2 + K
  524. SUMB = SUMB + P(K)*CMPLX(BETA(M),0.0E0)
  525. IF (AP(K).LT.ATOL) GO TO 80
  526. 70 CONTINUE
  527. 80 CONTINUE
  528. BSUM = BSUM + SUMB*CMPLX(PP,0.0E0)
  529. IF (PP.LT.BTOL) IBS = 1
  530. 90 CONTINUE
  531. IF (IAS.EQ.1 .AND. IBS.EQ.1) GO TO 110
  532. L1 = L1 + 30
  533. L2 = L2 + 30
  534. 100 CONTINUE
  535. 110 CONTINUE
  536. ASUM = ASUM + CONE
  537. PP = RFNU*REAL(RFN13)
  538. BSUM = BSUM*CMPLX(PP,0.0E0)
  539. 120 CONTINUE
  540. RETURN
  541. C-----------------------------------------------------------------------
  542. C ABS(W2).GT.0.25E0
  543. C-----------------------------------------------------------------------
  544. 130 CONTINUE
  545. W = CSQRT(W2)
  546. WR = REAL(W)
  547. WI = AIMAG(W)
  548. IF (WR.LT.0.0E0) WR = 0.0E0
  549. IF (WI.LT.0.0E0) WI = 0.0E0
  550. W = CMPLX(WR,WI)
  551. ZA = (CONE+W)/ZB
  552. ZC = CLOG(ZA)
  553. ZCR = REAL(ZC)
  554. ZCI = AIMAG(ZC)
  555. IF (ZCI.LT.0.0E0) ZCI = 0.0E0
  556. IF (ZCI.GT.HPI) ZCI = HPI
  557. IF (ZCR.LT.0.0E0) ZCR = 0.0E0
  558. ZC = CMPLX(ZCR,ZCI)
  559. ZTH = (ZC-W)*CMPLX(1.5E0,0.0E0)
  560. CFNU = CMPLX(FNU,0.0E0)
  561. ZETA1 = ZC*CFNU
  562. ZETA2 = W*CFNU
  563. AZTH = ABS(ZTH)
  564. ZTHR = REAL(ZTH)
  565. ZTHI = AIMAG(ZTH)
  566. ANG = THPI
  567. IF (ZTHR.GE.0.0E0 .AND. ZTHI.LT.0.0E0) GO TO 140
  568. ANG = HPI
  569. IF (ZTHR.EQ.0.0E0) GO TO 140
  570. ANG = ATAN(ZTHI/ZTHR)
  571. IF (ZTHR.LT.0.0E0) ANG = ANG + PI
  572. 140 CONTINUE
  573. PP = AZTH**EX2
  574. ANG = ANG*EX2
  575. ZETAR = PP*COS(ANG)
  576. ZETAI = PP*SIN(ANG)
  577. IF (ZETAI.LT.0.0E0) ZETAI = 0.0E0
  578. ZETA = CMPLX(ZETAR,ZETAI)
  579. ARG = ZETA*CMPLX(FN23,0.0E0)
  580. RTZTA = ZTH/ZETA
  581. ZA = RTZTA/W
  582. PHI = CSQRT(ZA+ZA)*RFN13
  583. IF (IPMTR.EQ.1) GO TO 120
  584. TFN = CMPLX(RFNU,0.0E0)/W
  585. RZTH = CMPLX(RFNU,0.0E0)/ZTH
  586. ZC = RZTH*CMPLX(AR(2),0.0E0)
  587. T2 = CONE/W2
  588. UP(2) = (T2*CMPLX(C(2),0.0E0)+CMPLX(C(3),0.0E0))*TFN
  589. BSUM = UP(2) + ZC
  590. ASUM = CZERO
  591. IF (RFNU.LT.TOL) GO TO 220
  592. PRZTH = RZTH
  593. PTFN = TFN
  594. UP(1) = CONE
  595. PP = 1.0E0
  596. BSUMR = REAL(BSUM)
  597. BSUMI = AIMAG(BSUM)
  598. BTOL = TOL*(ABS(BSUMR)+ABS(BSUMI))
  599. KS = 0
  600. KP1 = 2
  601. L = 3
  602. IAS = 0
  603. IBS = 0
  604. DO 210 LR=2,12,2
  605. LRP1 = LR + 1
  606. C-----------------------------------------------------------------------
  607. C COMPUTE TWO ADDITIONAL CR, DR, AND UP FOR TWO MORE TERMS IN
  608. C NEXT SUMA AND SUMB
  609. C-----------------------------------------------------------------------
  610. DO 160 K=LR,LRP1
  611. KS = KS + 1
  612. KP1 = KP1 + 1
  613. L = L + 1
  614. ZA = CMPLX(C(L),0.0E0)
  615. DO 150 J=2,KP1
  616. L = L + 1
  617. ZA = ZA*T2 + CMPLX(C(L),0.0E0)
  618. 150 CONTINUE
  619. PTFN = PTFN*TFN
  620. UP(KP1) = PTFN*ZA
  621. CR(KS) = PRZTH*CMPLX(BR(KS+1),0.0E0)
  622. PRZTH = PRZTH*RZTH
  623. DR(KS) = PRZTH*CMPLX(AR(KS+2),0.0E0)
  624. 160 CONTINUE
  625. PP = PP*RFNU2
  626. IF (IAS.EQ.1) GO TO 180
  627. SUMA = UP(LRP1)
  628. JU = LRP1
  629. DO 170 JR=1,LR
  630. JU = JU - 1
  631. SUMA = SUMA + CR(JR)*UP(JU)
  632. 170 CONTINUE
  633. ASUM = ASUM + SUMA
  634. ASUMR = REAL(ASUM)
  635. ASUMI = AIMAG(ASUM)
  636. TEST = ABS(ASUMR) + ABS(ASUMI)
  637. IF (PP.LT.TOL .AND. TEST.LT.TOL) IAS = 1
  638. 180 CONTINUE
  639. IF (IBS.EQ.1) GO TO 200
  640. SUMB = UP(LR+2) + UP(LRP1)*ZC
  641. JU = LRP1
  642. DO 190 JR=1,LR
  643. JU = JU - 1
  644. SUMB = SUMB + DR(JR)*UP(JU)
  645. 190 CONTINUE
  646. BSUM = BSUM + SUMB
  647. BSUMR = REAL(BSUM)
  648. BSUMI = AIMAG(BSUM)
  649. TEST = ABS(BSUMR) + ABS(BSUMI)
  650. IF (PP.LT.BTOL .AND. TEST.LT.TOL) IBS = 1
  651. 200 CONTINUE
  652. IF (IAS.EQ.1 .AND. IBS.EQ.1) GO TO 220
  653. 210 CONTINUE
  654. 220 CONTINUE
  655. ASUM = ASUM + CONE
  656. BSUM = -BSUM*RFN13/RTZTA
  657. GO TO 120
  658. END