aie.f 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. *DECK AIE
  2. FUNCTION AIE (X)
  3. C***BEGIN PROLOGUE AIE
  4. C***PURPOSE Calculate the Airy function for a negative argument and an
  5. C exponentially scaled Airy function for a non-negative
  6. C argument.
  7. C***LIBRARY SLATEC (FNLIB)
  8. C***CATEGORY C10D
  9. C***TYPE SINGLE PRECISION (AIE-S, DAIE-D)
  10. C***KEYWORDS EXPONENTIALLY SCALED AIRY FUNCTION, FNLIB,
  11. C SPECIAL FUNCTIONS
  12. C***AUTHOR Fullerton, W., (LANL)
  13. C***DESCRIPTION
  14. C
  15. C AIE(X) computes the exponentially scaled Airy function for
  16. C non-negative X. It evaluates AI(X) for X .LE. 0.0 and
  17. C EXP(ZETA)*AI(X) for X .GE. 0.0 where ZETA = (2.0/3.0)*(X**1.5).
  18. C
  19. C Series for AIF on the interval -1.00000D+00 to 1.00000D+00
  20. C with weighted error 1.09E-19
  21. C log weighted error 18.96
  22. C significant figures required 17.76
  23. C decimal places required 19.44
  24. C
  25. C Series for AIG on the interval -1.00000D+00 to 1.00000D+00
  26. C with weighted error 1.51E-17
  27. C log weighted error 16.82
  28. C significant figures required 15.19
  29. C decimal places required 17.27
  30. C
  31. C Series for AIP on the interval 0. to 1.00000D+00
  32. C with weighted error 5.10E-17
  33. C log weighted error 16.29
  34. C significant figures required 14.41
  35. C decimal places required 17.06
  36. C
  37. C***REFERENCES (NONE)
  38. C***ROUTINES CALLED CSEVL, INITS, R1MACH, R9AIMP
  39. C***REVISION HISTORY (YYMMDD)
  40. C 770701 DATE WRITTEN
  41. C 890206 REVISION DATE from Version 3.2
  42. C 891214 Prologue converted to Version 4.0 format. (BAB)
  43. C 920618 Removed space from variable names. (RWC, WRB)
  44. C***END PROLOGUE AIE
  45. DIMENSION AIFCS(9), AIGCS(8), AIPCS(34)
  46. LOGICAL FIRST
  47. SAVE AIFCS, AIGCS, AIPCS, NAIF, NAIG,
  48. 1 NAIP, X3SML, X32SML, XBIG, FIRST
  49. DATA AIFCS( 1) / -.0379713584 9666999750E0 /
  50. DATA AIFCS( 2) / .0591918885 3726363857E0 /
  51. DATA AIFCS( 3) / .0009862928 0577279975E0 /
  52. DATA AIFCS( 4) / .0000068488 4381907656E0 /
  53. DATA AIFCS( 5) / .0000000259 4202596219E0 /
  54. DATA AIFCS( 6) / .0000000000 6176612774E0 /
  55. DATA AIFCS( 7) / .0000000000 0010092454E0 /
  56. DATA AIFCS( 8) / .0000000000 0000012014E0 /
  57. DATA AIFCS( 9) / .0000000000 0000000010E0 /
  58. DATA AIGCS( 1) / .0181523655 8116127E0 /
  59. DATA AIGCS( 2) / .0215725631 6601076E0 /
  60. DATA AIGCS( 3) / .0002567835 6987483E0 /
  61. DATA AIGCS( 4) / .0000014265 2141197E0 /
  62. DATA AIGCS( 5) / .0000000045 7211492E0 /
  63. DATA AIGCS( 6) / .0000000000 0952517E0 /
  64. DATA AIGCS( 7) / .0000000000 0001392E0 /
  65. DATA AIGCS( 8) / .0000000000 0000001E0 /
  66. DATA AIPCS( 1) / -.0187519297 793868E0 /
  67. DATA AIPCS( 2) / -.0091443848 250055E0 /
  68. DATA AIPCS( 3) / .0009010457 337825E0 /
  69. DATA AIPCS( 4) / -.0001394184 127221E0 /
  70. DATA AIPCS( 5) / .0000273815 815785E0 /
  71. DATA AIPCS( 6) / -.0000062750 421119E0 /
  72. DATA AIPCS( 7) / .0000016064 844184E0 /
  73. DATA AIPCS( 8) / -.0000004476 392158E0 /
  74. DATA AIPCS( 9) / .0000001334 635874E0 /
  75. DATA AIPCS(10) / -.0000000420 735334E0 /
  76. DATA AIPCS(11) / .0000000139 021990E0 /
  77. DATA AIPCS(12) / -.0000000047 831848E0 /
  78. DATA AIPCS(13) / .0000000017 047897E0 /
  79. DATA AIPCS(14) / -.0000000006 268389E0 /
  80. DATA AIPCS(15) / .0000000002 369824E0 /
  81. DATA AIPCS(16) / -.0000000000 918641E0 /
  82. DATA AIPCS(17) / .0000000000 364278E0 /
  83. DATA AIPCS(18) / -.0000000000 147475E0 /
  84. DATA AIPCS(19) / .0000000000 060851E0 /
  85. DATA AIPCS(20) / -.0000000000 025552E0 /
  86. DATA AIPCS(21) / .0000000000 010906E0 /
  87. DATA AIPCS(22) / -.0000000000 004725E0 /
  88. DATA AIPCS(23) / .0000000000 002076E0 /
  89. DATA AIPCS(24) / -.0000000000 000924E0 /
  90. DATA AIPCS(25) / .0000000000 000417E0 /
  91. DATA AIPCS(26) / -.0000000000 000190E0 /
  92. DATA AIPCS(27) / .0000000000 000087E0 /
  93. DATA AIPCS(28) / -.0000000000 000040E0 /
  94. DATA AIPCS(29) / .0000000000 000019E0 /
  95. DATA AIPCS(30) / -.0000000000 000009E0 /
  96. DATA AIPCS(31) / .0000000000 000004E0 /
  97. DATA AIPCS(32) / -.0000000000 000002E0 /
  98. DATA AIPCS(33) / .0000000000 000001E0 /
  99. DATA AIPCS(34) / -.0000000000 000000E0 /
  100. DATA FIRST /.TRUE./
  101. C***FIRST EXECUTABLE STATEMENT AIE
  102. IF (FIRST) THEN
  103. ETA = 0.1*R1MACH(3)
  104. NAIF = INITS (AIFCS, 9, ETA)
  105. NAIG = INITS (AIGCS, 8, ETA)
  106. NAIP = INITS (AIPCS, 34, ETA)
  107. C
  108. X3SML = ETA**0.3333
  109. X32SML = 1.3104*X3SML**2
  110. XBIG = R1MACH(2)**0.6666
  111. ENDIF
  112. FIRST = .FALSE.
  113. C
  114. IF (X.GE.(-1.0)) GO TO 20
  115. CALL R9AIMP (X, XM, THETA)
  116. AIE = XM * COS(THETA)
  117. RETURN
  118. C
  119. 20 IF (X.GT.1.0) GO TO 30
  120. Z = 0.0
  121. IF (ABS(X).GT.X3SML) Z = X**3
  122. AIE = 0.375 + (CSEVL (Z, AIFCS, NAIF) - X*(0.25 +
  123. 1 CSEVL (Z, AIGCS, NAIG)) )
  124. IF (X.GT.X32SML) AIE = AIE * EXP(2.0*X*SQRT(X)/3.0)
  125. RETURN
  126. C
  127. 30 SQRTX = SQRT(X)
  128. Z = -1.0
  129. IF (X.LT.XBIG) Z = 2.0/(X*SQRTX) - 1.0
  130. AIE = (.28125 + CSEVL (Z, AIPCS, NAIP))/SQRT(SQRTX)
  131. RETURN
  132. C
  133. END