Blame view

fvn_fnlib/bid.f 4.64 KB
38581db0c   daniau   git-svn-id: https...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
        function bid (x)
  c july 1980 edition.  w. fullerton, bell labs.
  c
  c evaluate the derivative of the airy function bi(x).
  c
        dimension bifcs(8), bigcs(9), bif2cs(10), big2cs(10)
        external  bide, csevl, inits, r1mach
  c
  c series for bif on the interval -1.00000e+00 to  1.00000e+00
  c                                        with weighted error   9.05e-18
  c                                         log weighted error  17.04
  c                               significant figures required  15.83
  c                                    decimal places required  17.49
  c
        data bifcs(  1) /     0.1153536790 828570243 e0/
        data bifcs(  2) /     0.0205007894 049192875 e0/
        data bifcs(  3) /     0.0002135290 278902876 e0/
        data bifcs(  4) /     0.0000010783 960614677 e0/
        data bifcs(  5) /     0.0000000032 094708833 e0/
        data bifcs(  6) /     0.0000000000 062930407 e0/
        data bifcs(  7) /     0.0000000000 000087403 e0/
        data bifcs(  8) /     0.0000000000 000000090 e0/
  c
  c series for big on the interval -1.00000e+00 to  1.00000e+00
  c                                        with weighted error   5.44e-19
  c                                         log weighted error  18.26
  c                               significant figures required  17.46
  c                                    decimal places required  18.74
  c
        data bigcs(  1) /    -0.0971964404 1644353739 0e0/
        data bigcs(  2) /     0.1495035768 4316706657 1e0/
        data bigcs(  3) /     0.0031135253 8712132604 2e0/
        data bigcs(  4) /     0.0000247085 7057982129 7e0/
        data bigcs(  5) /     0.0000001029 4962773137 9e0/
        data bigcs(  6) /     0.0000000002 6397037398 7e0/
        data bigcs(  7) /     0.0000000000 0045827927 1e0/
        data bigcs(  8) /     0.0000000000 0000057428 3e0/
        data bigcs(  9) /     0.0000000000 0000000054 4e0/
  c
  c series for bif2 on the interval  1.00000e+00 to  8.00000e+00
  c                                        with weighted error   3.82e-19
  c                                         log weighted error  18.42
  c                               significant figures required  17.68
  c                                    decimal places required  18.92
  c
        data bif2cs(  1) /     0.3234939876 0352203352 1e0/
        data bif2cs(  2) /     0.0862978715 3556355913 9e0/
        data bif2cs(  3) /     0.0029940255 5265539742 6e0/
        data bif2cs(  4) /     0.0000514305 2836466163 7e0/
        data bif2cs(  5) /     0.0000005258 4025003681 1e0/
        data bif2cs(  6) /     0.0000000035 6175137395 8e0/
        data bif2cs(  7) /     0.0000000000 1714686400 7e0/
        data bif2cs(  8) /     0.0000000000 0006166352 0e0/
        data bif2cs(  9) /     0.0000000000 0000017191 1e0/
        data bif2cs( 10) /     0.0000000000 0000000038 2e0/
  c
  c series for big2 on the interval  1.00000e+00 to  8.00000e+00
  c                                        with weighted error   3.35e-17
  c                                         log weighted error  16.48
  c                               significant figures required  16.52
  c                                    decimal places required  16.98
  c
        data big2cs(  1) /     1.6062999463 621294578 e0/
        data big2cs(  2) /     0.7449088819 876088652 e0/
        data big2cs(  3) /     0.0470138738 610277380 e0/
        data big2cs(  4) /     0.0012284422 062548239 e0/
        data big2cs(  5) /     0.0000173222 412256624 e0/
        data big2cs(  6) /     0.0000001521 901652368 e0/
        data big2cs(  7) /     0.0000000009 113560249 e0/
        data big2cs(  8) /     0.0000000000 039547918 e0/
        data big2cs(  9) /     0.0000000000 000130017 e0/
        data big2cs( 10) /     0.0000000000 000000335 e0/
  c
        data nbif, nbig, nbif2, nbig2 / 4*0 /
        data x2sml, x3sml, xmax / 3*0.0 /
  c
        if (nbif.ne.0) go to 10
        eta = 0.1*r1mach(3)
        nbif = inits (bifcs, 8, eta)
        nbig = inits (bigcs, 9, eta)
        nbif2 = inits (bif2cs, 10, eta)
        nbig2 = inits (big2cs, 10, eta)
  c
        x2sml = sqrt (eta)
        x3sml = eta**0.3333
        xmax = (1.5*alog(r1mach(2)))**0.6666
  c
   10   if (x.ge.(-1.0)) go to 20
        call r9admp (x, xn, phi)
        bid = xn * sin (phi)
        return
  c
   20   if (x.gt.1.0) go to 30
        x3 = 0.0
        if (abs(x).gt.x3sml) x3 = x**3
        x2 = 0.0
        if (abs(x).gt.x2sml) x2 = x*x
        bid = x2*(csevl (x3, bifcs, nbif) + 0.25) +
       1  csevl (x3, bigcs, nbig) + 0.5
        return
  c
   30   if (x.gt.2.0) go to 40
        z = (2.0*x**3 - 9.0) / 7.0
        bid = x*x*(csevl (z, bif2cs, nbif2) + 0.25) +
       1  csevl (z, big2cs, nbig2) + 0.5
        return
  c
   40   if (x.gt.xmax) call seteru (
       1  35hbid     x so big that bid overflows, 35, 1, 2)
  c
        bid = bide(x) * exp (2.0*x*sqrt(x)/3.0)
  c
        return
        end