bi.f 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. *DECK BI
  2. FUNCTION BI (X)
  3. C***BEGIN PROLOGUE BI
  4. C***PURPOSE Evaluate the Bairy function (the Airy function of the
  5. C second kind).
  6. C***LIBRARY SLATEC (FNLIB)
  7. C***CATEGORY C10D
  8. C***TYPE SINGLE PRECISION (BI-S, DBI-D)
  9. C***KEYWORDS BAIRY FUNCTION, FNLIB, SPECIAL FUNCTIONS
  10. C***AUTHOR Fullerton, W., (LANL)
  11. C***DESCRIPTION
  12. C
  13. C BI(X) calculates the Airy function of the second kind for real
  14. C argument X.
  15. C
  16. C Series for BIF on the interval -1.00000D+00 to 1.00000D+00
  17. C with weighted error 1.88E-19
  18. C log weighted error 18.72
  19. C significant figures required 17.74
  20. C decimal places required 19.20
  21. C
  22. C Series for BIG on the interval -1.00000D+00 to 1.00000D+00
  23. C with weighted error 2.61E-17
  24. C log weighted error 16.58
  25. C significant figures required 15.17
  26. C decimal places required 17.03
  27. C
  28. C Series for BIF2 on the interval 1.00000D+00 to 8.00000D+00
  29. C with weighted error 1.11E-17
  30. C log weighted error 16.95
  31. C approx significant figures required 16.5
  32. C decimal places required 17.45
  33. C
  34. C Series for BIG2 on the interval 1.00000D+00 to 8.00000D+00
  35. C with weighted error 1.19E-18
  36. C log weighted error 17.92
  37. C approx significant figures required 17.2
  38. C decimal places required 18.42
  39. C
  40. C***REFERENCES (NONE)
  41. C***ROUTINES CALLED BIE, CSEVL, INITS, R1MACH, R9AIMP, XERMSG
  42. C***REVISION HISTORY (YYMMDD)
  43. C 770701 DATE WRITTEN
  44. C 890531 Changed all specific intrinsics to generic. (WRB)
  45. C 890531 REVISION DATE from Version 3.2
  46. C 891214 Prologue converted to Version 4.0 format. (BAB)
  47. C 900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ)
  48. C 900326 Removed duplicate information from DESCRIPTION section.
  49. C (WRB)
  50. C***END PROLOGUE BI
  51. DIMENSION BIFCS(9), BIGCS(8), BIF2CS(10), BIG2CS(10)
  52. LOGICAL FIRST
  53. SAVE BIFCS, BIGCS, BIF2CS, BIG2CS, NBIF, NBIG, NBIF2,
  54. 1 NBIG2, X3SML, XMAX, FIRST
  55. DATA BIFCS( 1) / -.0167302164 7198664948E0 /
  56. DATA BIFCS( 2) / .1025233583 424944561E0 /
  57. DATA BIFCS( 3) / .0017083092 5073815165E0 /
  58. DATA BIFCS( 4) / .0000118625 4546774468E0 /
  59. DATA BIFCS( 5) / .0000000449 3290701779E0 /
  60. DATA BIFCS( 6) / .0000000001 0698207143E0 /
  61. DATA BIFCS( 7) / .0000000000 0017480643E0 /
  62. DATA BIFCS( 8) / .0000000000 0000020810E0 /
  63. DATA BIFCS( 9) / .0000000000 0000000018E0 /
  64. DATA BIGCS( 1) / .0224662232 4857452E0 /
  65. DATA BIGCS( 2) / .0373647754 5301955E0 /
  66. DATA BIGCS( 3) / .0004447621 8957212E0 /
  67. DATA BIGCS( 4) / .0000024708 0756363E0 /
  68. DATA BIGCS( 5) / .0000000079 1913533E0 /
  69. DATA BIGCS( 6) / .0000000000 1649807E0 /
  70. DATA BIGCS( 7) / .0000000000 0002411E0 /
  71. DATA BIGCS( 8) / .0000000000 0000002E0 /
  72. DATA BIF2CS( 1) / 0.0998457269 3816041E0 /
  73. DATA BIF2CS( 2) / .4786249778 63005538E0 /
  74. DATA BIF2CS( 3) / .0251552119 604330118E0 /
  75. DATA BIF2CS( 4) / .0005820693 885232645E0 /
  76. DATA BIF2CS( 5) / .0000074997 659644377E0 /
  77. DATA BIF2CS( 6) / .0000000613 460287034E0 /
  78. DATA BIF2CS( 7) / .0000000003 462753885E0 /
  79. DATA BIF2CS( 8) / .0000000000 014288910E0 /
  80. DATA BIF2CS( 9) / .0000000000 000044962E0 /
  81. DATA BIF2CS(10) / .0000000000 000000111E0 /
  82. DATA BIG2CS( 1) / .0333056621 45514340E0 /
  83. DATA BIG2CS( 2) / .1613092151 23197068E0 /
  84. DATA BIG2CS( 3) / .0063190073 096134286E0 /
  85. DATA BIG2CS( 4) / .0001187904 568162517E0 /
  86. DATA BIG2CS( 5) / .0000013045 345886200E0 /
  87. DATA BIG2CS( 6) / .0000000093 741259955E0 /
  88. DATA BIG2CS( 7) / .0000000000 474580188E0 /
  89. DATA BIG2CS( 8) / .0000000000 001783107E0 /
  90. DATA BIG2CS( 9) / .0000000000 000005167E0 /
  91. DATA BIG2CS(10) / .0000000000 000000011E0 /
  92. DATA FIRST /.TRUE./
  93. C***FIRST EXECUTABLE STATEMENT BI
  94. IF (FIRST) THEN
  95. ETA = 0.1*R1MACH(3)
  96. NBIF = INITS (BIFCS , 9, ETA)
  97. NBIG = INITS (BIGCS , 8, ETA)
  98. NBIF2 = INITS (BIF2CS, 10, ETA)
  99. NBIG2 = INITS (BIG2CS, 10, ETA)
  100. C
  101. X3SML = ETA**0.3333
  102. XMAX = (1.5*LOG(R1MACH(2)))**0.6666
  103. ENDIF
  104. FIRST = .FALSE.
  105. C
  106. IF (X.GE.(-1.0)) GO TO 20
  107. CALL R9AIMP (X, XM, THETA)
  108. BI = XM * SIN(THETA)
  109. RETURN
  110. C
  111. 20 IF (X.GT.1.0) GO TO 30
  112. Z = 0.0
  113. IF (ABS(X).GT.X3SML) Z = X**3
  114. BI = 0.625 + CSEVL (Z, BIFCS, NBIF) + X*(0.4375 +
  115. 1 CSEVL (Z, BIGCS, NBIG))
  116. RETURN
  117. C
  118. 30 IF (X.GT.2.0) GO TO 40
  119. Z = (2.0*X**3 - 9.0) / 7.0
  120. BI = 1.125 + CSEVL (Z, BIF2CS, NBIF2) + X*(0.625 +
  121. 1 CSEVL (Z, BIG2CS, NBIG2))
  122. RETURN
  123. C
  124. 40 IF (X .GT. XMAX) CALL XERMSG ('SLATEC', 'BI',
  125. + 'X SO BIG THAT BI OVERFLOWS', 1, 2)
  126. C
  127. BI = BIE(X) * EXP(2.0*X*SQRT(X)/3.0)
  128. RETURN
  129. C
  130. END