jairy.f 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. *DECK JAIRY
  2. SUBROUTINE JAIRY (X, RX, C, AI, DAI)
  3. C***BEGIN PROLOGUE JAIRY
  4. C***SUBSIDIARY
  5. C***PURPOSE Subsidiary to BESJ and BESY
  6. C***LIBRARY SLATEC
  7. C***TYPE SINGLE PRECISION (JAIRY-S, DJAIRY-D)
  8. C***AUTHOR Amos, D. E., (SNLA)
  9. C Daniel, S. L., (SNLA)
  10. C Weston, M. K., (SNLA)
  11. C***DESCRIPTION
  12. C
  13. C JAIRY computes the Airy function AI(X)
  14. C and its derivative DAI(X) for ASYJY
  15. C
  16. C INPUT
  17. C
  18. C X - Argument, computed by ASYJY, X unrestricted
  19. C RX - RX=SQRT(ABS(X)), computed by ASYJY
  20. C C - C=2.*(ABS(X)**1.5)/3., computed by ASYJY
  21. C
  22. C OUTPUT
  23. C
  24. C AI - Value of function AI(X)
  25. C DAI - Value of the derivative DAI(X)
  26. C
  27. C***SEE ALSO BESJ, BESY
  28. C***ROUTINES CALLED (NONE)
  29. C***REVISION HISTORY (YYMMDD)
  30. C 750101 DATE WRITTEN
  31. C 891009 Removed unreferenced variable. (WRB)
  32. C 891214 Prologue converted to Version 4.0 format. (BAB)
  33. C 900328 Added TYPE section. (WRB)
  34. C 910408 Updated the AUTHOR section. (WRB)
  35. C***END PROLOGUE JAIRY
  36. C
  37. INTEGER I, J, M1, M1D, M2, M2D, M3, M3D, M4, M4D, N1, N1D, N2,
  38. 1 N2D, N3, N3D, N4, N4D
  39. REAL A, AI, AJN, AJP, AK1, AK2, AK3, B, C, CCV, CON2, CON3,
  40. 1 CON4, CON5, CV, DA, DAI, DAJN, DAJP, DAK1, DAK2, DAK3, DB, EC,
  41. 2 E1, E2, FPI12, F1, F2, RTRX, RX, SCV, T, TEMP1, TEMP2, TT, X
  42. DIMENSION AJP(19), AJN(19), A(15), B(15)
  43. DIMENSION AK1(14), AK2(23), AK3(14)
  44. DIMENSION DAJP(19), DAJN(19), DA(15), DB(15)
  45. DIMENSION DAK1(14), DAK2(24), DAK3(14)
  46. SAVE N1, N2, N3, N4, M1, M2, M3, M4, FPI12, CON2,
  47. 1 CON3, CON4, CON5,AK1, AK2, AK3, AJP, AJN, A, B,
  48. 2 N1D, N2D, N3D, N4D, M1D, M2D, M3D, M4D,
  49. 3 DAK1, DAK2, DAK3, DAJP, DAJN, DA, DB
  50. DATA N1,N2,N3,N4/14,23,19,15/
  51. DATA M1,M2,M3,M4/12,21,17,13/
  52. DATA FPI12,CON2,CON3,CON4,CON5/
  53. 1 1.30899693899575E+00, 5.03154716196777E+00, 3.80004589867293E-01,
  54. 2 8.33333333333333E-01, 8.66025403784439E-01/
  55. DATA AK1(1), AK1(2), AK1(3), AK1(4), AK1(5), AK1(6), AK1(7),
  56. 1 AK1(8), AK1(9), AK1(10),AK1(11),AK1(12),AK1(13),
  57. 2 AK1(14) / 2.20423090987793E-01,-1.25290242787700E-01,
  58. 3 1.03881163359194E-02, 8.22844152006343E-04,-2.34614345891226E-04,
  59. 4 1.63824280172116E-05, 3.06902589573189E-07,-1.29621999359332E-07,
  60. 5 8.22908158823668E-09, 1.53963968623298E-11,-3.39165465615682E-11,
  61. 6 2.03253257423626E-12,-1.10679546097884E-14,-5.16169497785080E-15/
  62. DATA AK2(1), AK2(2), AK2(3), AK2(4), AK2(5), AK2(6), AK2(7),
  63. 1 AK2(8), AK2(9), AK2(10),AK2(11),AK2(12),AK2(13),AK2(14),
  64. 2 AK2(15),AK2(16),AK2(17),AK2(18),AK2(19),AK2(20),AK2(21),
  65. 3 AK2(22),AK2(23) / 2.74366150869598E-01, 5.39790969736903E-03,
  66. 4-1.57339220621190E-03, 4.27427528248750E-04,-1.12124917399925E-04,
  67. 5 2.88763171318904E-05,-7.36804225370554E-06, 1.87290209741024E-06,
  68. 6-4.75892793962291E-07, 1.21130416955909E-07,-3.09245374270614E-08,
  69. 7 7.92454705282654E-09,-2.03902447167914E-09, 5.26863056595742E-10,
  70. 8-1.36704767639569E-10, 3.56141039013708E-11,-9.31388296548430E-12,
  71. 9 2.44464450473635E-12,-6.43840261990955E-13, 1.70106030559349E-13,
  72. 1-4.50760104503281E-14, 1.19774799164811E-14,-3.19077040865066E-15/
  73. DATA AK3(1), AK3(2), AK3(3), AK3(4), AK3(5), AK3(6), AK3(7),
  74. 1 AK3(8), AK3(9), AK3(10),AK3(11),AK3(12),AK3(13),
  75. 2 AK3(14) / 2.80271447340791E-01,-1.78127042844379E-03,
  76. 3 4.03422579628999E-05,-1.63249965269003E-06, 9.21181482476768E-08,
  77. 4-6.52294330229155E-09, 5.47138404576546E-10,-5.24408251800260E-11,
  78. 5 5.60477904117209E-12,-6.56375244639313E-13, 8.31285761966247E-14,
  79. 6-1.12705134691063E-14, 1.62267976598129E-15,-2.46480324312426E-16/
  80. DATA AJP(1), AJP(2), AJP(3), AJP(4), AJP(5), AJP(6), AJP(7),
  81. 1 AJP(8), AJP(9), AJP(10),AJP(11),AJP(12),AJP(13),AJP(14),
  82. 2 AJP(15),AJP(16),AJP(17),AJP(18),
  83. 3 AJP(19) / 7.78952966437581E-02,-1.84356363456801E-01,
  84. 4 3.01412605216174E-02, 3.05342724277608E-02,-4.95424702513079E-03,
  85. 5-1.72749552563952E-03, 2.43137637839190E-04, 5.04564777517082E-05,
  86. 6-6.16316582695208E-06,-9.03986745510768E-07, 9.70243778355884E-08,
  87. 7 1.09639453305205E-08,-1.04716330588766E-09,-9.60359441344646E-11,
  88. 8 8.25358789454134E-12, 6.36123439018768E-13,-4.96629614116015E-14,
  89. 9-3.29810288929615E-15, 2.35798252031104E-16/
  90. DATA AJN(1), AJN(2), AJN(3), AJN(4), AJN(5), AJN(6), AJN(7),
  91. 1 AJN(8), AJN(9), AJN(10),AJN(11),AJN(12),AJN(13),AJN(14),
  92. 2 AJN(15),AJN(16),AJN(17),AJN(18),
  93. 3 AJN(19) / 3.80497887617242E-02,-2.45319541845546E-01,
  94. 4 1.65820623702696E-01, 7.49330045818789E-02,-2.63476288106641E-02,
  95. 5-5.92535597304981E-03, 1.44744409589804E-03, 2.18311831322215E-04,
  96. 6-4.10662077680304E-05,-4.66874994171766E-06, 7.15218807277160E-07,
  97. 7 6.52964770854633E-08,-8.44284027565946E-09,-6.44186158976978E-10,
  98. 8 7.20802286505285E-11, 4.72465431717846E-12,-4.66022632547045E-13,
  99. 9-2.67762710389189E-14, 2.36161316570019E-15/
  100. DATA A(1), A(2), A(3), A(4), A(5), A(6), A(7),
  101. 1 A(8), A(9), A(10), A(11), A(12), A(13), A(14),
  102. 2 A(15) / 4.90275424742791E-01, 1.57647277946204E-03,
  103. 3-9.66195963140306E-05, 1.35916080268815E-07, 2.98157342654859E-07,
  104. 4-1.86824767559979E-08,-1.03685737667141E-09, 3.28660818434328E-10,
  105. 5-2.57091410632780E-11,-2.32357655300677E-12, 9.57523279048255E-13,
  106. 6-1.20340828049719E-13,-2.90907716770715E-15, 4.55656454580149E-15,
  107. 7-9.99003874810259E-16/
  108. DATA B(1), B(2), B(3), B(4), B(5), B(6), B(7),
  109. 1 B(8), B(9), B(10), B(11), B(12), B(13), B(14),
  110. 2 B(15) / 2.78593552803079E-01,-3.52915691882584E-03,
  111. 3-2.31149677384994E-05, 4.71317842263560E-06,-1.12415907931333E-07,
  112. 4-2.00100301184339E-08, 2.60948075302193E-09,-3.55098136101216E-11,
  113. 5-3.50849978423875E-11, 5.83007187954202E-12,-2.04644828753326E-13,
  114. 6-1.10529179476742E-13, 2.87724778038775E-14,-2.88205111009939E-15,
  115. 7-3.32656311696166E-16/
  116. DATA N1D,N2D,N3D,N4D/14,24,19,15/
  117. DATA M1D,M2D,M3D,M4D/12,22,17,13/
  118. DATA DAK1(1), DAK1(2), DAK1(3), DAK1(4), DAK1(5), DAK1(6),
  119. 1 DAK1(7), DAK1(8), DAK1(9), DAK1(10),DAK1(11),DAK1(12),
  120. 2 DAK1(13),DAK1(14)/ 2.04567842307887E-01,-6.61322739905664E-02,
  121. 3-8.49845800989287E-03, 3.12183491556289E-03,-2.70016489829432E-04,
  122. 4-6.35636298679387E-06, 3.02397712409509E-06,-2.18311195330088E-07,
  123. 5-5.36194289332826E-10, 1.13098035622310E-09,-7.43023834629073E-11,
  124. 6 4.28804170826891E-13, 2.23810925754539E-13,-1.39140135641182E-14/
  125. DATA DAK2(1), DAK2(2), DAK2(3), DAK2(4), DAK2(5), DAK2(6),
  126. 1 DAK2(7), DAK2(8), DAK2(9), DAK2(10),DAK2(11),DAK2(12),
  127. 2 DAK2(13),DAK2(14),DAK2(15),DAK2(16),DAK2(17),DAK2(18),
  128. 3 DAK2(19),DAK2(20),DAK2(21),DAK2(22),DAK2(23),
  129. 4 DAK2(24) / 2.93332343883230E-01,-8.06196784743112E-03,
  130. 5 2.42540172333140E-03,-6.82297548850235E-04, 1.85786427751181E-04,
  131. 6-4.97457447684059E-05, 1.32090681239497E-05,-3.49528240444943E-06,
  132. 7 9.24362451078835E-07,-2.44732671521867E-07, 6.49307837648910E-08,
  133. 8-1.72717621501538E-08, 4.60725763604656E-09,-1.23249055291550E-09,
  134. 9 3.30620409488102E-10,-8.89252099772401E-11, 2.39773319878298E-11,
  135. 1-6.48013921153450E-12, 1.75510132023731E-12,-4.76303829833637E-13,
  136. 2 1.29498241100810E-13,-3.52679622210430E-14, 9.62005151585923E-15,
  137. 3-2.62786914342292E-15/
  138. DATA DAK3(1), DAK3(2), DAK3(3), DAK3(4), DAK3(5), DAK3(6),
  139. 1 DAK3(7), DAK3(8), DAK3(9), DAK3(10),DAK3(11),DAK3(12),
  140. 2 DAK3(13),DAK3(14)/ 2.84675828811349E-01, 2.53073072619080E-03,
  141. 3-4.83481130337976E-05, 1.84907283946343E-06,-1.01418491178576E-07,
  142. 4 7.05925634457153E-09,-5.85325291400382E-10, 5.56357688831339E-11,
  143. 5-5.90889094779500E-12, 6.88574353784436E-13,-8.68588256452194E-14,
  144. 6 1.17374762617213E-14,-1.68523146510923E-15, 2.55374773097056E-16/
  145. DATA DAJP(1), DAJP(2), DAJP(3), DAJP(4), DAJP(5), DAJP(6),
  146. 1 DAJP(7), DAJP(8), DAJP(9), DAJP(10),DAJP(11),DAJP(12),
  147. 2 DAJP(13),DAJP(14),DAJP(15),DAJP(16),DAJP(17),DAJP(18),
  148. 3 DAJP(19) / 6.53219131311457E-02,-1.20262933688823E-01,
  149. 4 9.78010236263823E-03, 1.67948429230505E-02,-1.97146140182132E-03,
  150. 5-8.45560295098867E-04, 9.42889620701976E-05, 2.25827860945475E-05,
  151. 6-2.29067870915987E-06,-3.76343991136919E-07, 3.45663933559565E-08,
  152. 7 4.29611332003007E-09,-3.58673691214989E-10,-3.57245881361895E-11,
  153. 8 2.72696091066336E-12, 2.26120653095771E-13,-1.58763205238303E-14,
  154. 9-1.12604374485125E-15, 7.31327529515367E-17/
  155. DATA DAJN(1), DAJN(2), DAJN(3), DAJN(4), DAJN(5), DAJN(6),
  156. 1 DAJN(7), DAJN(8), DAJN(9), DAJN(10),DAJN(11),DAJN(12),
  157. 2 DAJN(13),DAJN(14),DAJN(15),DAJN(16),DAJN(17),DAJN(18),
  158. 3 DAJN(19) / 1.08594539632967E-02, 8.53313194857091E-02,
  159. 4-3.15277068113058E-01,-8.78420725294257E-02, 5.53251906976048E-02,
  160. 5 9.41674060503241E-03,-3.32187026018996E-03,-4.11157343156826E-04,
  161. 6 1.01297326891346E-04, 9.87633682208396E-06,-1.87312969812393E-06,
  162. 7-1.50798500131468E-07, 2.32687669525394E-08, 1.59599917419225E-09,
  163. 8-2.07665922668385E-10,-1.24103350500302E-11, 1.39631765331043E-12,
  164. 9 7.39400971155740E-14,-7.32887475627500E-15/
  165. DATA DA(1), DA(2), DA(3), DA(4), DA(5), DA(6), DA(7),
  166. 1 DA(8), DA(9), DA(10), DA(11), DA(12), DA(13), DA(14),
  167. 2 DA(15) / 4.91627321104601E-01, 3.11164930427489E-03,
  168. 3 8.23140762854081E-05,-4.61769776172142E-06,-6.13158880534626E-08,
  169. 4 2.87295804656520E-08,-1.81959715372117E-09,-1.44752826642035E-10,
  170. 5 4.53724043420422E-11,-3.99655065847223E-12,-3.24089119830323E-13,
  171. 6 1.62098952568741E-13,-2.40765247974057E-14, 1.69384811284491E-16,
  172. 7 8.17900786477396E-16/
  173. DATA DB(1), DB(2), DB(3), DB(4), DB(5), DB(6), DB(7),
  174. 1 DB(8), DB(9), DB(10), DB(11), DB(12), DB(13), DB(14),
  175. 2 DB(15) /-2.77571356944231E-01, 4.44212833419920E-03,
  176. 3-8.42328522190089E-05,-2.58040318418710E-06, 3.42389720217621E-07,
  177. 4-6.24286894709776E-09,-2.36377836844577E-09, 3.16991042656673E-10,
  178. 5-4.40995691658191E-12,-5.18674221093575E-12, 9.64874015137022E-13,
  179. 6-4.90190576608710E-14,-1.77253430678112E-14, 5.55950610442662E-15,
  180. 7-7.11793337579530E-16/
  181. C***FIRST EXECUTABLE STATEMENT JAIRY
  182. IF (X.LT.0.0E0) GO TO 90
  183. IF (C.GT.5.0E0) GO TO 60
  184. IF (X.GT.1.20E0) GO TO 30
  185. T = (X+X-1.2E0)*CON4
  186. TT = T + T
  187. J = N1
  188. F1 = AK1(J)
  189. F2 = 0.0E0
  190. DO 10 I=1,M1
  191. J = J - 1
  192. TEMP1 = F1
  193. F1 = TT*F1 - F2 + AK1(J)
  194. F2 = TEMP1
  195. 10 CONTINUE
  196. AI = T*F1 - F2 + AK1(1)
  197. C
  198. J = N1D
  199. F1 = DAK1(J)
  200. F2 = 0.0E0
  201. DO 20 I=1,M1D
  202. J = J - 1
  203. TEMP1 = F1
  204. F1 = TT*F1 - F2 + DAK1(J)
  205. F2 = TEMP1
  206. 20 CONTINUE
  207. DAI = -(T*F1-F2+DAK1(1))
  208. RETURN
  209. C
  210. 30 CONTINUE
  211. T = (X+X-CON2)*CON3
  212. TT = T + T
  213. J = N2
  214. F1 = AK2(J)
  215. F2 = 0.0E0
  216. DO 40 I=1,M2
  217. J = J - 1
  218. TEMP1 = F1
  219. F1 = TT*F1 - F2 + AK2(J)
  220. F2 = TEMP1
  221. 40 CONTINUE
  222. RTRX = SQRT(RX)
  223. EC = EXP(-C)
  224. AI = EC*(T*F1-F2+AK2(1))/RTRX
  225. J = N2D
  226. F1 = DAK2(J)
  227. F2 = 0.0E0
  228. DO 50 I=1,M2D
  229. J = J - 1
  230. TEMP1 = F1
  231. F1 = TT*F1 - F2 + DAK2(J)
  232. F2 = TEMP1
  233. 50 CONTINUE
  234. DAI = -EC*(T*F1-F2+DAK2(1))*RTRX
  235. RETURN
  236. C
  237. 60 CONTINUE
  238. T = 10.0E0/C - 1.0E0
  239. TT = T + T
  240. J = N1
  241. F1 = AK3(J)
  242. F2 = 0.0E0
  243. DO 70 I=1,M1
  244. J = J - 1
  245. TEMP1 = F1
  246. F1 = TT*F1 - F2 + AK3(J)
  247. F2 = TEMP1
  248. 70 CONTINUE
  249. RTRX = SQRT(RX)
  250. EC = EXP(-C)
  251. AI = EC*(T*F1-F2+AK3(1))/RTRX
  252. J = N1D
  253. F1 = DAK3(J)
  254. F2 = 0.0E0
  255. DO 80 I=1,M1D
  256. J = J - 1
  257. TEMP1 = F1
  258. F1 = TT*F1 - F2 + DAK3(J)
  259. F2 = TEMP1
  260. 80 CONTINUE
  261. DAI = -RTRX*EC*(T*F1-F2+DAK3(1))
  262. RETURN
  263. C
  264. 90 CONTINUE
  265. IF (C.GT.5.0E0) GO TO 120
  266. T = 0.4E0*C - 1.0E0
  267. TT = T + T
  268. J = N3
  269. F1 = AJP(J)
  270. E1 = AJN(J)
  271. F2 = 0.0E0
  272. E2 = 0.0E0
  273. DO 100 I=1,M3
  274. J = J - 1
  275. TEMP1 = F1
  276. TEMP2 = E1
  277. F1 = TT*F1 - F2 + AJP(J)
  278. E1 = TT*E1 - E2 + AJN(J)
  279. F2 = TEMP1
  280. E2 = TEMP2
  281. 100 CONTINUE
  282. AI = (T*E1-E2+AJN(1)) - X*(T*F1-F2+AJP(1))
  283. J = N3D
  284. F1 = DAJP(J)
  285. E1 = DAJN(J)
  286. F2 = 0.0E0
  287. E2 = 0.0E0
  288. DO 110 I=1,M3D
  289. J = J - 1
  290. TEMP1 = F1
  291. TEMP2 = E1
  292. F1 = TT*F1 - F2 + DAJP(J)
  293. E1 = TT*E1 - E2 + DAJN(J)
  294. F2 = TEMP1
  295. E2 = TEMP2
  296. 110 CONTINUE
  297. DAI = X*X*(T*F1-F2+DAJP(1)) + (T*E1-E2+DAJN(1))
  298. RETURN
  299. C
  300. 120 CONTINUE
  301. T = 10.0E0/C - 1.0E0
  302. TT = T + T
  303. J = N4
  304. F1 = A(J)
  305. E1 = B(J)
  306. F2 = 0.0E0
  307. E2 = 0.0E0
  308. DO 130 I=1,M4
  309. J = J - 1
  310. TEMP1 = F1
  311. TEMP2 = E1
  312. F1 = TT*F1 - F2 + A(J)
  313. E1 = TT*E1 - E2 + B(J)
  314. F2 = TEMP1
  315. E2 = TEMP2
  316. 130 CONTINUE
  317. TEMP1 = T*F1 - F2 + A(1)
  318. TEMP2 = T*E1 - E2 + B(1)
  319. RTRX = SQRT(RX)
  320. CV = C - FPI12
  321. CCV = COS(CV)
  322. SCV = SIN(CV)
  323. AI = (TEMP1*CCV-TEMP2*SCV)/RTRX
  324. J = N4D
  325. F1 = DA(J)
  326. E1 = DB(J)
  327. F2 = 0.0E0
  328. E2 = 0.0E0
  329. DO 140 I=1,M4D
  330. J = J - 1
  331. TEMP1 = F1
  332. TEMP2 = E1
  333. F1 = TT*F1 - F2 + DA(J)
  334. E1 = TT*E1 - E2 + DB(J)
  335. F2 = TEMP1
  336. E2 = TEMP2
  337. 140 CONTINUE
  338. TEMP1 = T*F1 - F2 + DA(1)
  339. TEMP2 = T*E1 - E2 + DB(1)
  340. E1 = CCV*CON5 + 0.5E0*SCV
  341. E2 = SCV*CON5 - 0.5E0*CCV
  342. DAI = (TEMP1*E1-TEMP2*E2)*RTRX
  343. RETURN
  344. END