e1.f 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. *DECK E1
  2. FUNCTION E1 (X)
  3. C***BEGIN PROLOGUE E1
  4. C***PURPOSE Compute the exponential integral E1(X).
  5. C***LIBRARY SLATEC (FNLIB)
  6. C***CATEGORY C5
  7. C***TYPE SINGLE PRECISION (E1-S, DE1-D)
  8. C***KEYWORDS E1 FUNCTION, EXPONENTIAL INTEGRAL, FNLIB,
  9. C SPECIAL FUNCTIONS
  10. C***AUTHOR Fullerton, W., (LANL)
  11. C***DESCRIPTION
  12. C
  13. C E1 calculates the single precision exponential integral, E1(X), for
  14. C positive single precision argument X and the Cauchy principal value
  15. C for negative X. If principal values are used everywhere, then, for
  16. C all X,
  17. C
  18. C E1(X) = -Ei(-X)
  19. C or
  20. C Ei(X) = -E1(-X).
  21. C
  22. C
  23. C Series for AE11 on the interval -1.00000D-01 to 0.
  24. C with weighted error 1.76E-17
  25. C log weighted error 16.75
  26. C significant figures required 15.70
  27. C decimal places required 17.55
  28. C
  29. C
  30. C Series for AE12 on the interval -2.50000D-01 to -1.00000D-01
  31. C with weighted error 5.83E-17
  32. C log weighted error 16.23
  33. C significant figures required 15.76
  34. C decimal places required 16.93
  35. C
  36. C
  37. C Series for E11 on the interval -4.00000D+00 to -1.00000D+00
  38. C with weighted error 1.08E-18
  39. C log weighted error 17.97
  40. C significant figures required 19.02
  41. C decimal places required 18.61
  42. C
  43. C
  44. C Series for E12 on the interval -1.00000D+00 to 1.00000D+00
  45. C with weighted error 3.15E-18
  46. C log weighted error 17.50
  47. C approx significant figures required 15.8
  48. C decimal places required 18.10
  49. C
  50. C
  51. C Series for AE13 on the interval 2.50000D-01 to 1.00000D+00
  52. C with weighted error 2.34E-17
  53. C log weighted error 16.63
  54. C significant figures required 16.14
  55. C decimal places required 17.33
  56. C
  57. C
  58. C Series for AE14 on the interval 0. to 2.50000D-01
  59. C with weighted error 5.41E-17
  60. C log weighted error 16.27
  61. C significant figures required 15.38
  62. C decimal places required 16.97
  63. C
  64. C***REFERENCES (NONE)
  65. C***ROUTINES CALLED CSEVL, INITS, R1MACH, XERMSG
  66. C***REVISION HISTORY (YYMMDD)
  67. C 770701 DATE WRITTEN
  68. C 890531 Changed all specific intrinsics to generic. (WRB)
  69. C 891115 Modified prologue description. (WRB)
  70. C 891115 REVISION DATE from Version 3.2
  71. C 891214 Prologue converted to Version 4.0 format. (BAB)
  72. C 900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ)
  73. C 920618 Removed space from variable names. (RWC, WRB)
  74. C***END PROLOGUE E1
  75. DIMENSION AE11CS(39), AE12CS(25), E11CS(19), E12CS(16),
  76. 1 AE13CS(25), AE14CS(26)
  77. LOGICAL FIRST
  78. SAVE AE11CS, AE12CS, E11CS, E12CS, AE13CS, AE14CS,
  79. 1 NTAE11, NTAE12, NTE11, NTE12, NTAE13, NTAE14, XMAX, FIRST
  80. DATA AE11CS( 1) / .1215032397 1606579E0 /
  81. DATA AE11CS( 2) / -.0650887785 13550150E0 /
  82. DATA AE11CS( 3) / .0048976513 57459670E0 /
  83. DATA AE11CS( 4) / -.0006492378 43027216E0 /
  84. DATA AE11CS( 5) / .0000938404 34587471E0 /
  85. DATA AE11CS( 6) / .0000004202 36380882E0 /
  86. DATA AE11CS( 7) / -.0000081133 74735904E0 /
  87. DATA AE11CS( 8) / .0000028042 47688663E0 /
  88. DATA AE11CS( 9) / .0000000564 87164441E0 /
  89. DATA AE11CS(10) / -.0000003448 09174450E0 /
  90. DATA AE11CS(11) / .0000000582 09273578E0 /
  91. DATA AE11CS(12) / .0000000387 11426349E0 /
  92. DATA AE11CS(13) / -.0000000124 53235014E0 /
  93. DATA AE11CS(14) / -.0000000051 18504888E0 /
  94. DATA AE11CS(15) / .0000000021 48771527E0 /
  95. DATA AE11CS(16) / .0000000008 68459898E0 /
  96. DATA AE11CS(17) / -.0000000003 43650105E0 /
  97. DATA AE11CS(18) / -.0000000001 79796603E0 /
  98. DATA AE11CS(19) / .0000000000 47442060E0 /
  99. DATA AE11CS(20) / .0000000000 40423282E0 /
  100. DATA AE11CS(21) / -.0000000000 03543928E0 /
  101. DATA AE11CS(22) / -.0000000000 08853444E0 /
  102. DATA AE11CS(23) / -.0000000000 00960151E0 /
  103. DATA AE11CS(24) / .0000000000 01692921E0 /
  104. DATA AE11CS(25) / .0000000000 00607990E0 /
  105. DATA AE11CS(26) / -.0000000000 00224338E0 /
  106. DATA AE11CS(27) / -.0000000000 00200327E0 /
  107. DATA AE11CS(28) / -.0000000000 00006246E0 /
  108. DATA AE11CS(29) / .0000000000 00045571E0 /
  109. DATA AE11CS(30) / .0000000000 00016383E0 /
  110. DATA AE11CS(31) / -.0000000000 00005561E0 /
  111. DATA AE11CS(32) / -.0000000000 00006074E0 /
  112. DATA AE11CS(33) / -.0000000000 00000862E0 /
  113. DATA AE11CS(34) / .0000000000 00001223E0 /
  114. DATA AE11CS(35) / .0000000000 00000716E0 /
  115. DATA AE11CS(36) / -.0000000000 00000024E0 /
  116. DATA AE11CS(37) / -.0000000000 00000201E0 /
  117. DATA AE11CS(38) / -.0000000000 00000082E0 /
  118. DATA AE11CS(39) / .0000000000 00000017E0 /
  119. DATA AE12CS( 1) / .5824174951 3472674E0 /
  120. DATA AE12CS( 2) / -.1583488509 0578275E0 /
  121. DATA AE12CS( 3) / -.0067642755 90323141E0 /
  122. DATA AE12CS( 4) / .0051258439 50185725E0 /
  123. DATA AE12CS( 5) / .0004352324 92169391E0 /
  124. DATA AE12CS( 6) / -.0001436133 66305483E0 /
  125. DATA AE12CS( 7) / -.0000418013 20556301E0 /
  126. DATA AE12CS( 8) / -.0000027133 95758640E0 /
  127. DATA AE12CS( 9) / .0000011513 81913647E0 /
  128. DATA AE12CS(10) / .0000004206 50022012E0 /
  129. DATA AE12CS(11) / .0000000665 81901391E0 /
  130. DATA AE12CS(12) / .0000000006 62143777E0 /
  131. DATA AE12CS(13) / -.0000000028 44104870E0 /
  132. DATA AE12CS(14) / -.0000000009 40724197E0 /
  133. DATA AE12CS(15) / -.0000000001 77476602E0 /
  134. DATA AE12CS(16) / -.0000000000 15830222E0 /
  135. DATA AE12CS(17) / .0000000000 02905732E0 /
  136. DATA AE12CS(18) / .0000000000 01769356E0 /
  137. DATA AE12CS(19) / .0000000000 00492735E0 /
  138. DATA AE12CS(20) / .0000000000 00093709E0 /
  139. DATA AE12CS(21) / .0000000000 00010707E0 /
  140. DATA AE12CS(22) / -.0000000000 00000537E0 /
  141. DATA AE12CS(23) / -.0000000000 00000716E0 /
  142. DATA AE12CS(24) / -.0000000000 00000244E0 /
  143. DATA AE12CS(25) / -.0000000000 00000058E0 /
  144. DATA E11CS( 1) / -16.1134616555 71494026E0 /
  145. DATA E11CS( 2) / 7.7940727787 426802769E0 /
  146. DATA E11CS( 3) / -1.9554058188 631419507E0 /
  147. DATA E11CS( 4) / .3733729386 6277945612E0 /
  148. DATA E11CS( 5) / -.0569250319 1092901938E0 /
  149. DATA E11CS( 6) / .0072110777 6966009185E0 /
  150. DATA E11CS( 7) / -.0007810490 1449841593E0 /
  151. DATA E11CS( 8) / .0000738809 3356262168E0 /
  152. DATA E11CS( 9) / -.0000062028 6187580820E0 /
  153. DATA E11CS(10) / .0000004681 6002303176E0 /
  154. DATA E11CS(11) / -.0000000320 9288853329E0 /
  155. DATA E11CS(12) / .0000000020 1519974874E0 /
  156. DATA E11CS(13) / -.0000000001 1673686816E0 /
  157. DATA E11CS(14) / .0000000000 0627627066E0 /
  158. DATA E11CS(15) / -.0000000000 0031481541E0 /
  159. DATA E11CS(16) / .0000000000 0001479904E0 /
  160. DATA E11CS(17) / -.0000000000 0000065457E0 /
  161. DATA E11CS(18) / .0000000000 0000002733E0 /
  162. DATA E11CS(19) / -.0000000000 0000000108E0 /
  163. DATA E12CS( 1) / -0.0373902147 92202795E0 /
  164. DATA E12CS( 2) / 0.0427239860 62209577E0 /
  165. DATA E12CS( 3) / -.1303182079 849700544E0 /
  166. DATA E12CS( 4) / .0144191240 2469889073E0 /
  167. DATA E12CS( 5) / -.0013461707 8051068022E0 /
  168. DATA E12CS( 6) / .0001073102 9253063780E0 /
  169. DATA E12CS( 7) / -.0000074299 9951611943E0 /
  170. DATA E12CS( 8) / .0000004537 7325690753E0 /
  171. DATA E12CS( 9) / -.0000000247 6417211390E0 /
  172. DATA E12CS(10) / .0000000012 2076581374E0 /
  173. DATA E12CS(11) / -.0000000000 5485141480E0 /
  174. DATA E12CS(12) / .0000000000 0226362142E0 /
  175. DATA E12CS(13) / -.0000000000 0008635897E0 /
  176. DATA E12CS(14) / .0000000000 0000306291E0 /
  177. DATA E12CS(15) / -.0000000000 0000010148E0 /
  178. DATA E12CS(16) / .0000000000 0000000315E0 /
  179. DATA AE13CS( 1) / -.6057732466 4060346E0 /
  180. DATA AE13CS( 2) / -.1125352434 8366090E0 /
  181. DATA AE13CS( 3) / .0134322662 47902779E0 /
  182. DATA AE13CS( 4) / -.0019268451 87381145E0 /
  183. DATA AE13CS( 5) / .0003091183 37720603E0 /
  184. DATA AE13CS( 6) / -.0000535641 32129618E0 /
  185. DATA AE13CS( 7) / .0000098278 12880247E0 /
  186. DATA AE13CS( 8) / -.0000018853 68984916E0 /
  187. DATA AE13CS( 9) / .0000003749 43193568E0 /
  188. DATA AE13CS(10) / -.0000000768 23455870E0 /
  189. DATA AE13CS(11) / .0000000161 43270567E0 /
  190. DATA AE13CS(12) / -.0000000034 66802211E0 /
  191. DATA AE13CS(13) / .0000000007 58754209E0 /
  192. DATA AE13CS(14) / -.0000000001 68864333E0 /
  193. DATA AE13CS(15) / .0000000000 38145706E0 /
  194. DATA AE13CS(16) / -.0000000000 08733026E0 /
  195. DATA AE13CS(17) / .0000000000 02023672E0 /
  196. DATA AE13CS(18) / -.0000000000 00474132E0 /
  197. DATA AE13CS(19) / .0000000000 00112211E0 /
  198. DATA AE13CS(20) / -.0000000000 00026804E0 /
  199. DATA AE13CS(21) / .0000000000 00006457E0 /
  200. DATA AE13CS(22) / -.0000000000 00001568E0 /
  201. DATA AE13CS(23) / .0000000000 00000383E0 /
  202. DATA AE13CS(24) / -.0000000000 00000094E0 /
  203. DATA AE13CS(25) / .0000000000 00000023E0 /
  204. DATA AE14CS( 1) / -.1892918000 753017E0 /
  205. DATA AE14CS( 2) / -.0864811785 5259871E0 /
  206. DATA AE14CS( 3) / .0072241015 4374659E0 /
  207. DATA AE14CS( 4) / -.0008097559 4575573E0 /
  208. DATA AE14CS( 5) / .0001099913 4432661E0 /
  209. DATA AE14CS( 6) / -.0000171733 2998937E0 /
  210. DATA AE14CS( 7) / .0000029856 2751447E0 /
  211. DATA AE14CS( 8) / -.0000005659 6491457E0 /
  212. DATA AE14CS( 9) / .0000001152 6808397E0 /
  213. DATA AE14CS(10) / -.0000000249 5030440E0 /
  214. DATA AE14CS(11) / .0000000056 9232420E0 /
  215. DATA AE14CS(12) / -.0000000013 5995766E0 /
  216. DATA AE14CS(13) / .0000000003 3846628E0 /
  217. DATA AE14CS(14) / -.0000000000 8737853E0 /
  218. DATA AE14CS(15) / .0000000000 2331588E0 /
  219. DATA AE14CS(16) / -.0000000000 0641148E0 /
  220. DATA AE14CS(17) / .0000000000 0181224E0 /
  221. DATA AE14CS(18) / -.0000000000 0052538E0 /
  222. DATA AE14CS(19) / .0000000000 0015592E0 /
  223. DATA AE14CS(20) / -.0000000000 0004729E0 /
  224. DATA AE14CS(21) / .0000000000 0001463E0 /
  225. DATA AE14CS(22) / -.0000000000 0000461E0 /
  226. DATA AE14CS(23) / .0000000000 0000148E0 /
  227. DATA AE14CS(24) / -.0000000000 0000048E0 /
  228. DATA AE14CS(25) / .0000000000 0000016E0 /
  229. DATA AE14CS(26) / -.0000000000 0000005E0 /
  230. DATA FIRST /.TRUE./
  231. C***FIRST EXECUTABLE STATEMENT E1
  232. IF (FIRST) THEN
  233. ETA = 0.1*R1MACH(3)
  234. NTAE11 = INITS (AE11CS, 39, ETA)
  235. NTAE12 = INITS (AE12CS, 25, ETA)
  236. NTE11 = INITS (E11CS, 19, ETA)
  237. NTE12 = INITS (E12CS, 16, ETA)
  238. NTAE13 = INITS (AE13CS, 25, ETA)
  239. NTAE14 = INITS (AE14CS, 26, ETA)
  240. C
  241. XMAXT = -LOG (R1MACH(1))
  242. XMAX = XMAXT - LOG(XMAXT)
  243. ENDIF
  244. FIRST = .FALSE.
  245. C
  246. IF (X.GT.(-10.)) GO TO 20
  247. C
  248. C E1(X) = -EI(-X) FOR X .LE. -10.
  249. C
  250. E1 = EXP(-X)/X * (1.+CSEVL (20./X+1., AE11CS, NTAE11))
  251. RETURN
  252. C
  253. 20 IF (X.GT.(-4.0)) GO TO 30
  254. C
  255. C E1(X) = -EI(-X) FOR -10. .LT. X .LE. -4.
  256. C
  257. E1 = EXP(-X)/X * (1.+CSEVL ((40./X+7.)/3., AE12CS, NTAE12))
  258. RETURN
  259. C
  260. 30 IF (X.GT.(-1.0)) GO TO 40
  261. C
  262. C E1(X) = -EI(-X) FOR -4. .LT. X .LE. -1.
  263. C
  264. E1 = -LOG(ABS(X)) + CSEVL ((2.*X+5.)/3., E11CS, NTE11)
  265. RETURN
  266. C
  267. 40 IF (X.GT.1.) GO TO 50
  268. IF (X .EQ. 0.) CALL XERMSG ('SLATEC', 'E1', 'X IS 0', 2, 2)
  269. C
  270. C E1(X) = -EI(-X) FOR -1. .LT. X .LE. 1., X .NE. 0.
  271. C
  272. E1 = (-LOG(ABS(X)) - 0.6875 + X) + CSEVL (X, E12CS, NTE12)
  273. RETURN
  274. C
  275. 50 IF (X.GT.4.) GO TO 60
  276. C
  277. C E1(X) = -EI(-X) FOR 1. .LT. X .LE. 4.
  278. C
  279. E1 = EXP(-X)/X * (1.+CSEVL ((8./X-5.)/3., AE13CS, NTAE13))
  280. RETURN
  281. C
  282. 60 IF (X.GT.XMAX) GO TO 70
  283. C
  284. C E1(X) = -EI(-X) FOR 4. .LT. X .LE. XMAX
  285. C
  286. E1 = EXP(-X)/X * (1. + CSEVL (8./X-1., AE14CS, NTAE14))
  287. RETURN
  288. C
  289. C E1(X) = -EI(-X) FOR X .GT. XMAX
  290. C
  291. 70 CALL XERMSG ('SLATEC', 'E1', 'X SO BIG E1 UNDERFLOWS', 1, 1)
  292. E1 = 0.
  293. RETURN
  294. C
  295. END