r9aimp.f 9.45 KB
subroutine r9aimp (x, ampl, theta)
c july 1977 edition.  w. fullerton, c3, los alamos scientific lab.
c
c evaluate the airy modulus and phase for x .le. -1.0
c
      dimension am21cs(40), ath1cs(36), am22cs(33), ath2cs(32)
      external csevl, inits, r1mach
c
c series for am21       on the interval -1.25000d-01 to  0.
c                                        with weighted error   2.89e-17
c                                         log weighted error  16.54
c                               significant figures required  14.15
c                                    decimal places required  17.34
c
      data am21cs( 1) /    .0065809191 761485e0 /
      data am21cs( 2) /    .0023675984 685722e0 /
      data am21cs( 3) /    .0001324741 670371e0 /
      data am21cs( 4) /    .0000157600 904043e0 /
      data am21cs( 5) /    .0000027529 702663e0 /
      data am21cs( 6) /    .0000006102 679017e0 /
      data am21cs( 7) /    .0000001595 088468e0 /
      data am21cs( 8) /    .0000000471 033947e0 /
      data am21cs( 9) /    .0000000152 933871e0 /
      data am21cs(10) /    .0000000053 590722e0 /
      data am21cs(11) /    .0000000020 000910e0 /
      data am21cs(12) /    .0000000007 872292e0 /
      data am21cs(13) /    .0000000003 243103e0 /
      data am21cs(14) /    .0000000001 390106e0 /
      data am21cs(15) /    .0000000000 617011e0 /
      data am21cs(16) /    .0000000000 282491e0 /
      data am21cs(17) /    .0000000000 132979e0 /
      data am21cs(18) /    .0000000000 064188e0 /
      data am21cs(19) /    .0000000000 031697e0 /
      data am21cs(20) /    .0000000000 015981e0 /
      data am21cs(21) /    .0000000000 008213e0 /
      data am21cs(22) /    .0000000000 004296e0 /
      data am21cs(23) /    .0000000000 002284e0 /
      data am21cs(24) /    .0000000000 001232e0 /
      data am21cs(25) /    .0000000000 000675e0 /
      data am21cs(26) /    .0000000000 000374e0 /
      data am21cs(27) /    .0000000000 000210e0 /
      data am21cs(28) /    .0000000000 000119e0 /
      data am21cs(29) /    .0000000000 000068e0 /
      data am21cs(30) /    .0000000000 000039e0 /
      data am21cs(31) /    .0000000000 000023e0 /
      data am21cs(32) /    .0000000000 000013e0 /
      data am21cs(33) /    .0000000000 000008e0 /
      data am21cs(34) /    .0000000000 000005e0 /
      data am21cs(35) /    .0000000000 000003e0 /
      data am21cs(36) /    .0000000000 000001e0 /
      data am21cs(37) /    .0000000000 000001e0 /
      data am21cs(38) /    .0000000000 000000e0 /
      data am21cs(39) /    .0000000000 000000e0 /
      data am21cs(40) /    .0000000000 000000e0 /
c
c series for ath1       on the interval -1.25000d-01 to  0.
c                                        with weighted error   2.53e-17
c                                         log weighted error  16.60
c                               significant figures required  15.15
c                                    decimal places required  17.38
c
      data ath1cs( 1) /   -.0712583781 5669365e0 /
      data ath1cs( 2) /   -.0059047197 9831451e0 /
      data ath1cs( 3) /   -.0001211454 4069499e0 /
      data ath1cs( 4) /   -.0000098860 8542270e0 /
      data ath1cs( 5) /   -.0000013808 4097352e0 /
      data ath1cs( 6) /   -.0000002614 2640172e0 /
      data ath1cs( 7) /   -.0000000605 0432589e0 /
      data ath1cs( 8) /   -.0000000161 8436223e0 /
      data ath1cs( 9) /   -.0000000048 3464911e0 /
      data ath1cs(10) /   -.0000000015 7655272e0 /
      data ath1cs(11) /   -.0000000005 5231518e0 /
      data ath1cs(12) /   -.0000000002 0545441e0 /
      data ath1cs(13) /   -.0000000000 8043412e0 /
      data ath1cs(14) /   -.0000000000 3291252e0 /
      data ath1cs(15) /   -.0000000000 1399875e0 /
      data ath1cs(16) /   -.0000000000 0616151e0 /
      data ath1cs(17) /   -.0000000000 0279614e0 /
      data ath1cs(18) /   -.0000000000 0130428e0 /
      data ath1cs(19) /   -.0000000000 0062373e0 /
      data ath1cs(20) /   -.0000000000 0030512e0 /
      data ath1cs(21) /   -.0000000000 0015239e0 /
      data ath1cs(22) /   -.0000000000 0007758e0 /
      data ath1cs(23) /   -.0000000000 0004020e0 /
      data ath1cs(24) /   -.0000000000 0002117e0 /
      data ath1cs(25) /   -.0000000000 0001132e0 /
      data ath1cs(26) /   -.0000000000 0000614e0 /
      data ath1cs(27) /   -.0000000000 0000337e0 /
      data ath1cs(28) /   -.0000000000 0000188e0 /
      data ath1cs(29) /   -.0000000000 0000105e0 /
      data ath1cs(30) /   -.0000000000 0000060e0 /
      data ath1cs(31) /   -.0000000000 0000034e0 /
      data ath1cs(32) /   -.0000000000 0000020e0 /
      data ath1cs(33) /   -.0000000000 0000011e0 /
      data ath1cs(34) /   -.0000000000 0000007e0 /
      data ath1cs(35) /   -.0000000000 0000004e0 /
      data ath1cs(36) /   -.0000000000 0000002e0 /
c
c series for am22       on the interval -1.00000d+00 to -1.25000d-01
c                                        with weighted error   2.99e-17
c                                         log weighted error  16.52
c                               significant figures required  14.57
c                                    decimal places required  17.28
c
      data am22cs( 1) /   -.0156284448 0625341e0 /
      data am22cs( 2) /    .0077833644 5239681e0 /
      data am22cs( 3) /    .0008670577 7047718e0 /
      data am22cs( 4) /    .0001569662 7315611e0 /
      data am22cs( 5) /    .0000356396 2571432e0 /
      data am22cs( 6) /    .0000092459 8335425e0 /
      data am22cs( 7) /    .0000026211 0161850e0 /
      data am22cs( 8) /    .0000007918 8221651e0 /
      data am22cs( 9) /    .0000002510 4152792e0 /
      data am22cs(10) /    .0000000826 5223206e0 /
      data am22cs(11) /    .0000000280 5711662e0 /
      data am22cs(12) /    .0000000097 6821090e0 /
      data am22cs(13) /    .0000000034 7407923e0 /
      data am22cs(14) /    .0000000012 5828132e0 /
      data am22cs(15) /    .0000000004 6298826e0 /
      data am22cs(16) /    .0000000001 7272825e0 /
      data am22cs(17) /    .0000000000 6523192e0 /
      data am22cs(18) /    .0000000000 2490471e0 /
      data am22cs(19) /    .0000000000 0960156e0 /
      data am22cs(20) /    .0000000000 0373448e0 /
      data am22cs(21) /    .0000000000 0146417e0 /
      data am22cs(22) /    .0000000000 0057826e0 /
      data am22cs(23) /    .0000000000 0022991e0 /
      data am22cs(24) /    .0000000000 0009197e0 /
      data am22cs(25) /    .0000000000 0003700e0 /
      data am22cs(26) /    .0000000000 0001496e0 /
      data am22cs(27) /    .0000000000 0000608e0 /
      data am22cs(28) /    .0000000000 0000248e0 /
      data am22cs(29) /    .0000000000 0000101e0 /
      data am22cs(30) /    .0000000000 0000041e0 /
      data am22cs(31) /    .0000000000 0000017e0 /
      data am22cs(32) /    .0000000000 0000007e0 /
      data am22cs(33) /    .0000000000 0000002e0 /
c
c series for ath2       on the interval -1.00000d+00 to -1.25000d-01
c                                        with weighted error   2.57e-17
c                                         log weighted error  16.59
c                               significant figures required  15.07
c                                    decimal places required  17.34
c
      data ath2cs( 1) /    .0044052734 5871877e0 /
      data ath2cs( 2) /   -.0304291945 2318455e0 /
      data ath2cs( 3) /   -.0013856532 8377179e0 /
      data ath2cs( 4) /   -.0001804443 9089549e0 /
      data ath2cs( 5) /   -.0000338084 7108327e0 /
      data ath2cs( 6) /   -.0000076781 8353522e0 /
      data ath2cs( 7) /   -.0000019678 3944371e0 /
      data ath2cs( 8) /   -.0000005483 7271158e0 /
      data ath2cs( 9) /   -.0000001625 4615505e0 /
      data ath2cs(10) /   -.0000000505 3049981e0 /
      data ath2cs(11) /   -.0000000163 1580701e0 /
      data ath2cs(12) /   -.0000000054 3420411e0 /
      data ath2cs(13) /   -.0000000018 5739855e0 /
      data ath2cs(14) /   -.0000000006 4895120e0 /
      data ath2cs(15) /   -.0000000002 3105948e0 /
      data ath2cs(16) /   -.0000000000 8363282e0 /
      data ath2cs(17) /   -.0000000000 3071196e0 /
      data ath2cs(18) /   -.0000000000 1142367e0 /
      data ath2cs(19) /   -.0000000000 0429811e0 /
      data ath2cs(20) /   -.0000000000 0163389e0 /
      data ath2cs(21) /   -.0000000000 0062693e0 /
      data ath2cs(22) /   -.0000000000 0024260e0 /
      data ath2cs(23) /   -.0000000000 0009461e0 /
      data ath2cs(24) /   -.0000000000 0003716e0 /
      data ath2cs(25) /   -.0000000000 0001469e0 /
      data ath2cs(26) /   -.0000000000 0000584e0 /
      data ath2cs(27) /   -.0000000000 0000233e0 /
      data ath2cs(28) /   -.0000000000 0000093e0 /
      data ath2cs(29) /   -.0000000000 0000037e0 /
      data ath2cs(30) /   -.0000000000 0000015e0 /
      data ath2cs(31) /   -.0000000000 0000006e0 /
      data ath2cs(32) /   -.0000000000 0000002e0 /
c
      data pi4 / 0.7853981633 9744831 e0 /
      data nam21, nath1, nam22, nath2, xsml / 4*0, 0.0 /
c
      if (nam21.ne.0) go to 10
      eta = 0.1*r1mach(3)
      nam21 = inits (am21cs, 40, eta)
      nath1 = inits (ath1cs, 36, eta)
      nam22 = inits (am22cs, 33, eta)
      nath2 = inits (ath2cs, 32, eta)
c
      xsml = -(16.0/r1mach(3))**0.3333
c
 10   if (x.ge.(-2.0)) go to 20
      z = 1.0
      if (x.gt.xsml) z = 16.0/x**3 + 1.0
      ampl = 0.3125 + csevl(z, am21cs, nam21)
      theta = -0.625 + csevl (z, ath1cs, nath1)
      go to 30
c
 20   if (x.gt.(-1.0)) call seteru (25hr9aimp  x must be le -1.0, 25, 1,
     1  2)
c
      z = (16.0/x**3 + 9.0)/7.0
      ampl = 0.3125 + csevl (z, am22cs, nam22)
      theta = -0.625 + csevl (z, ath2cs, nath2)
c
 30   sqrtx = sqrt(-x)
      ampl = sqrt (ampl/sqrtx)
      theta = pi4 - x*sqrtx * theta
c
      return
      end