dbsi0e.f 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. *DECK DBSI0E
  2. DOUBLE PRECISION FUNCTION DBSI0E (X)
  3. C***BEGIN PROLOGUE DBSI0E
  4. C***PURPOSE Compute the exponentially scaled modified (hyperbolic)
  5. C Bessel function of the first kind of order zero.
  6. C***LIBRARY SLATEC (FNLIB)
  7. C***CATEGORY C10B1
  8. C***TYPE DOUBLE PRECISION (BESI0E-S, DBSI0E-D)
  9. C***KEYWORDS EXPONENTIALLY SCALED, FIRST KIND, FNLIB,
  10. C HYPERBOLIC BESSEL FUNCTION, MODIFIED BESSEL FUNCTION,
  11. C ORDER ZERO, SPECIAL FUNCTIONS
  12. C***AUTHOR Fullerton, W., (LANL)
  13. C***DESCRIPTION
  14. C
  15. C DBSI0E(X) calculates the double precision exponentially scaled
  16. C modified (hyperbolic) Bessel function of the first kind of order
  17. C zero for double precision argument X. The result is the Bessel
  18. C function I0(X) multiplied by EXP(-ABS(X)).
  19. C
  20. C Series for BI0 on the interval 0. to 9.00000E+00
  21. C with weighted error 9.51E-34
  22. C log weighted error 33.02
  23. C significant figures required 33.31
  24. C decimal places required 33.65
  25. C
  26. C Series for AI0 on the interval 1.25000E-01 to 3.33333E-01
  27. C with weighted error 2.74E-32
  28. C log weighted error 31.56
  29. C significant figures required 30.15
  30. C decimal places required 32.39
  31. C
  32. C Series for AI02 on the interval 0. to 1.25000E-01
  33. C with weighted error 1.97E-32
  34. C log weighted error 31.71
  35. C significant figures required 30.15
  36. C decimal places required 32.63
  37. C
  38. C***REFERENCES (NONE)
  39. C***ROUTINES CALLED D1MACH, DCSEVL, INITDS
  40. C***REVISION HISTORY (YYMMDD)
  41. C 770701 DATE WRITTEN
  42. C 890531 Changed all specific intrinsics to generic. (WRB)
  43. C 890531 REVISION DATE from Version 3.2
  44. C 891214 Prologue converted to Version 4.0 format. (BAB)
  45. C***END PROLOGUE DBSI0E
  46. DOUBLE PRECISION X, BI0CS(18), AI0CS(46), AI02CS(69),
  47. 1 XSML, Y, D1MACH, DCSEVL
  48. LOGICAL FIRST
  49. SAVE BI0CS, AI0CS, AI02CS, NTI0, NTAI0, NTAI02, XSML, FIRST
  50. DATA BI0CS( 1) / -.7660547252 8391449510 8189497624 3285 D-1 /
  51. DATA BI0CS( 2) / +.1927337953 9938082699 5240875088 1196 D+1 /
  52. DATA BI0CS( 3) / +.2282644586 9203013389 3702929233 0415 D+0 /
  53. DATA BI0CS( 4) / +.1304891466 7072904280 7933421069 1888 D-1 /
  54. DATA BI0CS( 5) / +.4344270900 8164874513 7868268102 6107 D-3 /
  55. DATA BI0CS( 6) / +.9422657686 0019346639 2317174411 8766 D-5 /
  56. DATA BI0CS( 7) / +.1434006289 5106910799 6209187817 9957 D-6 /
  57. DATA BI0CS( 8) / +.1613849069 6617490699 1541971999 4611 D-8 /
  58. DATA BI0CS( 9) / +.1396650044 5356696994 9509270814 2522 D-10 /
  59. DATA BI0CS( 10) / +.9579451725 5054453446 2752317189 3333 D-13 /
  60. DATA BI0CS( 11) / +.5333981859 8625021310 1510774400 0000 D-15 /
  61. DATA BI0CS( 12) / +.2458716088 4374707746 9678591999 9999 D-17 /
  62. DATA BI0CS( 13) / +.9535680890 2487700269 4434133333 3333 D-20 /
  63. DATA BI0CS( 14) / +.3154382039 7214273367 8933333333 3333 D-22 /
  64. DATA BI0CS( 15) / +.9004564101 0946374314 6666666666 6666 D-25 /
  65. DATA BI0CS( 16) / +.2240647369 1236700160 0000000000 0000 D-27 /
  66. DATA BI0CS( 17) / +.4903034603 2428373333 3333333333 3333 D-30 /
  67. DATA BI0CS( 18) / +.9508172606 1226666666 6666666666 6666 D-33 /
  68. DATA AI0CS( 1) / +.7575994494 0237959427 2987203743 8 D-1 /
  69. DATA AI0CS( 2) / +.7591380810 8233455072 9297873320 4 D-2 /
  70. DATA AI0CS( 3) / +.4153131338 9237505018 6319749138 2 D-3 /
  71. DATA AI0CS( 4) / +.1070076463 4390730735 8242970217 0 D-4 /
  72. DATA AI0CS( 5) / -.7901179979 2128946607 5031948573 0 D-5 /
  73. DATA AI0CS( 6) / -.7826143501 4387522697 8898980690 9 D-6 /
  74. DATA AI0CS( 7) / +.2783849942 9488708063 8118538985 7 D-6 /
  75. DATA AI0CS( 8) / +.8252472600 6120271919 6682913319 8 D-8 /
  76. DATA AI0CS( 9) / -.1204463945 5201991790 5496089110 3 D-7 /
  77. DATA AI0CS( 10) / +.1559648598 5060764436 1228752792 8 D-8 /
  78. DATA AI0CS( 11) / +.2292556367 1033165434 7725480285 7 D-9 /
  79. DATA AI0CS( 12) / -.1191622884 2790646036 7777423447 8 D-9 /
  80. DATA AI0CS( 13) / +.1757854916 0324098302 1833124774 3 D-10 /
  81. DATA AI0CS( 14) / +.1128224463 2189005171 4441135682 4 D-11 /
  82. DATA AI0CS( 15) / -.1146848625 9272988777 2963387698 2 D-11 /
  83. DATA AI0CS( 16) / +.2715592054 8036628726 4365192160 6 D-12 /
  84. DATA AI0CS( 17) / -.2415874666 5626878384 4247572028 1 D-13 /
  85. DATA AI0CS( 18) / -.6084469888 2551250646 0609963922 4 D-14 /
  86. DATA AI0CS( 19) / +.3145705077 1754772937 0836026730 3 D-14 /
  87. DATA AI0CS( 20) / -.7172212924 8711877179 6217505917 6 D-15 /
  88. DATA AI0CS( 21) / +.7874493403 4541033960 8390960332 7 D-16 /
  89. DATA AI0CS( 22) / +.1004802753 0094624023 4524457183 9 D-16 /
  90. DATA AI0CS( 23) / -.7566895365 3505348534 2843588881 0 D-17 /
  91. DATA AI0CS( 24) / +.2150380106 8761198878 1205128784 5 D-17 /
  92. DATA AI0CS( 25) / -.3754858341 8308744291 5158445260 8 D-18 /
  93. DATA AI0CS( 26) / +.2354065842 2269925769 0075710532 2 D-19 /
  94. DATA AI0CS( 27) / +.1114667612 0479285302 2637335511 0 D-19 /
  95. DATA AI0CS( 28) / -.5398891884 3969903786 9677932270 9 D-20 /
  96. DATA AI0CS( 29) / +.1439598792 2407526770 4285840452 2 D-20 /
  97. DATA AI0CS( 30) / -.2591916360 1110934064 6081840196 2 D-21 /
  98. DATA AI0CS( 31) / +.2238133183 9985839074 3409229824 0 D-22 /
  99. DATA AI0CS( 32) / +.5250672575 3647711727 7221683199 9 D-23 /
  100. DATA AI0CS( 33) / -.3249904138 5332307841 7343228586 6 D-23 /
  101. DATA AI0CS( 34) / +.9924214103 2050379278 5728471040 0 D-24 /
  102. DATA AI0CS( 35) / -.2164992254 2446695231 4655429973 3 D-24 /
  103. DATA AI0CS( 36) / +.3233609471 9435940839 7333299199 9 D-25 /
  104. DATA AI0CS( 37) / -.1184620207 3967424898 2473386666 6 D-26 /
  105. DATA AI0CS( 38) / -.1281671853 9504986505 4833868799 9 D-26 /
  106. DATA AI0CS( 39) / +.5827015182 2793905116 0556885333 3 D-27 /
  107. DATA AI0CS( 40) / -.1668222326 0261097193 6450150399 9 D-27 /
  108. DATA AI0CS( 41) / +.3625309510 5415699757 0068480000 0 D-28 /
  109. DATA AI0CS( 42) / -.5733627999 0557135899 4595839999 9 D-29 /
  110. DATA AI0CS( 43) / +.3736796722 0630982296 4258133333 3 D-30 /
  111. DATA AI0CS( 44) / +.1602073983 1568519633 6551253333 3 D-30 /
  112. DATA AI0CS( 45) / -.8700424864 0572298845 2249599999 9 D-31 /
  113. DATA AI0CS( 46) / +.2741320937 9374811456 0341333333 3 D-31 /
  114. DATA AI02CS( 1) / +.5449041101 4108831607 8960962268 0 D-1 /
  115. DATA AI02CS( 2) / +.3369116478 2556940898 9785662979 9 D-2 /
  116. DATA AI02CS( 3) / +.6889758346 9168239842 6263914301 1 D-4 /
  117. DATA AI02CS( 4) / +.2891370520 8347564829 6692402323 2 D-5 /
  118. DATA AI02CS( 5) / +.2048918589 4690637418 2760534093 1 D-6 /
  119. DATA AI02CS( 6) / +.2266668990 4981780645 9327743136 1 D-7 /
  120. DATA AI02CS( 7) / +.3396232025 7083863451 5084396952 3 D-8 /
  121. DATA AI02CS( 8) / +.4940602388 2249695891 0482449783 5 D-9 /
  122. DATA AI02CS( 9) / +.1188914710 7846438342 4084525196 3 D-10 /
  123. DATA AI02CS( 10) / -.3149916527 9632413645 3864862961 9 D-10 /
  124. DATA AI02CS( 11) / -.1321581184 0447713118 7540739926 7 D-10 /
  125. DATA AI02CS( 12) / -.1794178531 5068061177 7943574026 9 D-11 /
  126. DATA AI02CS( 13) / +.7180124451 3836662336 7106429346 9 D-12 /
  127. DATA AI02CS( 14) / +.3852778382 7421427011 4089801777 6 D-12 /
  128. DATA AI02CS( 15) / +.1540086217 5214098269 1325823339 7 D-13 /
  129. DATA AI02CS( 16) / -.4150569347 2872220866 2689972015 6 D-13 /
  130. DATA AI02CS( 17) / -.9554846698 8283076487 0214494312 5 D-14 /
  131. DATA AI02CS( 18) / +.3811680669 3526224207 4605535511 8 D-14 /
  132. DATA AI02CS( 19) / +.1772560133 0565263836 0493266675 8 D-14 /
  133. DATA AI02CS( 20) / -.3425485619 6772191346 1924790328 2 D-15 /
  134. DATA AI02CS( 21) / -.2827623980 5165834849 4205593759 4 D-15 /
  135. DATA AI02CS( 22) / +.3461222867 6974610930 9706250813 4 D-16 /
  136. DATA AI02CS( 23) / +.4465621420 2967599990 1042054284 3 D-16 /
  137. DATA AI02CS( 24) / -.4830504485 9441820712 5525403795 4 D-17 /
  138. DATA AI02CS( 25) / -.7233180487 8747539545 6227240924 5 D-17 /
  139. DATA AI02CS( 26) / +.9921475412 1736985988 8046093981 0 D-18 /
  140. DATA AI02CS( 27) / +.1193650890 8459820855 0439949924 2 D-17 /
  141. DATA AI02CS( 28) / -.2488709837 1508072357 2054491660 2 D-18 /
  142. DATA AI02CS( 29) / -.1938426454 1609059289 8469781132 6 D-18 /
  143. DATA AI02CS( 30) / +.6444656697 3734438687 8301949394 9 D-19 /
  144. DATA AI02CS( 31) / +.2886051596 2892243264 8171383073 4 D-19 /
  145. DATA AI02CS( 32) / -.1601954907 1749718070 6167156200 7 D-19 /
  146. DATA AI02CS( 33) / -.3270815010 5923147208 9193567485 9 D-20 /
  147. DATA AI02CS( 34) / +.3686932283 8264091811 4600723939 3 D-20 /
  148. DATA AI02CS( 35) / +.1268297648 0309501530 1359529710 9 D-22 /
  149. DATA AI02CS( 36) / -.7549825019 3772739076 9636664410 1 D-21 /
  150. DATA AI02CS( 37) / +.1502133571 3778353496 3712789053 4 D-21 /
  151. DATA AI02CS( 38) / +.1265195883 5096485349 3208799248 3 D-21 /
  152. DATA AI02CS( 39) / -.6100998370 0836807086 2940891600 2 D-22 /
  153. DATA AI02CS( 40) / -.1268809629 2601282643 6872095924 2 D-22 /
  154. DATA AI02CS( 41) / +.1661016099 8907414578 4038487490 5 D-22 /
  155. DATA AI02CS( 42) / -.1585194335 7658855793 7970504881 4 D-23 /
  156. DATA AI02CS( 43) / -.3302645405 9682178009 5381766755 6 D-23 /
  157. DATA AI02CS( 44) / +.1313580902 8392397817 4039623117 4 D-23 /
  158. DATA AI02CS( 45) / +.3689040246 6711567933 1425637280 4 D-24 /
  159. DATA AI02CS( 46) / -.4210141910 4616891492 1978247249 9 D-24 /
  160. DATA AI02CS( 47) / +.4791954591 0828657806 3171401373 0 D-25 /
  161. DATA AI02CS( 48) / +.8459470390 2218217952 9971707412 4 D-25 /
  162. DATA AI02CS( 49) / -.4039800940 8728324931 4607937181 0 D-25 /
  163. DATA AI02CS( 50) / -.6434714653 6504313473 0100850469 5 D-26 /
  164. DATA AI02CS( 51) / +.1225743398 8756659903 4464736990 5 D-25 /
  165. DATA AI02CS( 52) / -.2934391316 0257089231 9879821175 4 D-26 /
  166. DATA AI02CS( 53) / -.1961311309 1949829262 0371205728 9 D-26 /
  167. DATA AI02CS( 54) / +.1503520374 8221934241 6229900309 8 D-26 /
  168. DATA AI02CS( 55) / -.9588720515 7448265520 3386388206 9 D-28 /
  169. DATA AI02CS( 56) / -.3483339380 8170454863 9441108511 4 D-27 /
  170. DATA AI02CS( 57) / +.1690903610 2630436730 6244960725 6 D-27 /
  171. DATA AI02CS( 58) / +.1982866538 7356030438 9400115718 8 D-28 /
  172. DATA AI02CS( 59) / -.5317498081 4918162145 7583002528 4 D-28 /
  173. DATA AI02CS( 60) / +.1803306629 8883929462 3501450390 1 D-28 /
  174. DATA AI02CS( 61) / +.6213093341 4548931758 8405311242 2 D-29 /
  175. DATA AI02CS( 62) / -.7692189292 7721618632 0072806673 0 D-29 /
  176. DATA AI02CS( 63) / +.1858252826 1117025426 2556016596 3 D-29 /
  177. DATA AI02CS( 64) / +.1237585142 2813957248 9927154554 1 D-29 /
  178. DATA AI02CS( 65) / -.1102259120 4092238032 1779478779 2 D-29 /
  179. DATA AI02CS( 66) / +.1886287118 0397044900 7787447943 1 D-30 /
  180. DATA AI02CS( 67) / +.2160196872 2436589131 4903141406 0 D-30 /
  181. DATA AI02CS( 68) / -.1605454124 9197432005 8446594965 5 D-30 /
  182. DATA AI02CS( 69) / +.1965352984 5942906039 3884807331 8 D-31 /
  183. DATA FIRST /.TRUE./
  184. C***FIRST EXECUTABLE STATEMENT DBSI0E
  185. IF (FIRST) THEN
  186. ETA = 0.1*REAL(D1MACH(3))
  187. NTI0 = INITDS (BI0CS, 18, ETA)
  188. NTAI0 = INITDS (AI0CS, 46, ETA)
  189. NTAI02 = INITDS (AI02CS, 69, ETA)
  190. XSML = SQRT(4.5D0*D1MACH(3))
  191. ENDIF
  192. FIRST = .FALSE.
  193. C
  194. Y = ABS(X)
  195. IF (Y.GT.3.0D0) GO TO 20
  196. C
  197. DBSI0E = 1.0D0 - X
  198. IF (Y.GT.XSML) DBSI0E = EXP(-Y) * (2.75D0 +
  199. 1 DCSEVL (Y*Y/4.5D0-1.D0, BI0CS, NTI0) )
  200. RETURN
  201. C
  202. 20 IF (Y.LE.8.D0) DBSI0E = (0.375D0 + DCSEVL ((48.D0/Y-11.D0)/5.D0,
  203. 1 AI0CS, NTAI0))/SQRT(Y)
  204. IF (Y.GT.8.D0) DBSI0E = (0.375D0 + DCSEVL (16.D0/Y-1.D0, AI02CS,
  205. 1 NTAI02))/SQRT(Y)
  206. C
  207. RETURN
  208. END