Blame view

fvn_fnlib/besj0.f 4.88 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
        function besj0 (x)
  c april 1977 version.  w. fullerton, c3, los alamos scientific lab.
        dimension bj0cs(13), bm0cs(21), bth0cs(24)
        external  csevl, inits, r1mach
  c
  c series for bj0        on the interval  0.          to  1.60000d+01
  c                                        with weighted error   7.47e-18
  c                                         log weighted error  17.13
  c                               significant figures required  16.98
  c                                    decimal places required  17.68
  c
        data bj0 cs( 1) /    .1002541619 68939137e0 /
        data bj0 cs( 2) /   -.6652230077 64405132e0 /
        data bj0 cs( 3) /    .2489837034 98281314e0 /
        data bj0 cs( 4) /   -.0332527231 700357697e0 /
        data bj0 cs( 5) /    .0023114179 304694015e0 /
        data bj0 cs( 6) /   -.0000991127 741995080e0 /
        data bj0 cs( 7) /    .0000028916 708643998e0 /
        data bj0 cs( 8) /   -.0000000612 108586630e0 /
        data bj0 cs( 9) /    .0000000009 838650793e0 /
        data bj0 cs(10) /   -.0000000000 124235515e0 /
        data bj0 cs(11) /    .0000000000 001265433e0 /
        data bj0 cs(12) /   -.0000000000 000010619e0 /
        data bj0 cs(13) /    .0000000000 000000074e0 /
  c
  c series for bm0        on the interval  0.          to  6.25000d-02
  c                                        with weighted error   4.98e-17
  c                                         log weighted error  16.30
  c                               significant figures required  14.97
  c                                    decimal places required  16.96
  c
        data bm0 cs( 1) /    .0928496163 7381644e0 /
        data bm0 cs( 2) /   -.0014298770 7403484e0 /
        data bm0 cs( 3) /    .0000283057 9271257e0 /
        data bm0 cs( 4) /   -.0000014330 0611424e0 /
        data bm0 cs( 5) /    .0000001202 8628046e0 /
        data bm0 cs( 6) /   -.0000000139 7113013e0 /
        data bm0 cs( 7) /    .0000000020 4076188e0 /
        data bm0 cs( 8) /   -.0000000003 5399669e0 /
        data bm0 cs( 9) /    .0000000000 7024759e0 /
        data bm0 cs(10) /   -.0000000000 1554107e0 /
        data bm0 cs(11) /    .0000000000 0376226e0 /
        data bm0 cs(12) /   -.0000000000 0098282e0 /
        data bm0 cs(13) /    .0000000000 0027408e0 /
        data bm0 cs(14) /   -.0000000000 0008091e0 /
        data bm0 cs(15) /    .0000000000 0002511e0 /
        data bm0 cs(16) /   -.0000000000 0000814e0 /
        data bm0 cs(17) /    .0000000000 0000275e0 /
        data bm0 cs(18) /   -.0000000000 0000096e0 /
        data bm0 cs(19) /    .0000000000 0000034e0 /
        data bm0 cs(20) /   -.0000000000 0000012e0 /
        data bm0 cs(21) /    .0000000000 0000004e0 /
  c
  c series for bth0       on the interval  0.          to  6.25000d-02
  c                                        with weighted error   3.67e-17
  c                                         log weighted error  16.44
  c                               significant figures required  15.53
  c                                    decimal places required  17.13
  c
        data bth0cs( 1) /   -.2463916377 4300119e0 /
        data bth0cs( 2) /    .0017370983 07508963e0 /
        data bth0cs( 3) /   -.0000621836 33402968e0 /
        data bth0cs( 4) /    .0000043680 50165742e0 /
        data bth0cs( 5) /   -.0000004560 93019869e0 /
        data bth0cs( 6) /    .0000000621 97400101e0 /
        data bth0cs( 7) /   -.0000000103 00442889e0 /
        data bth0cs( 8) /    .0000000019 79526776e0 /
        data bth0cs( 9) /   -.0000000004 28198396e0 /
        data bth0cs(10) /    .0000000001 02035840e0 /
        data bth0cs(11) /   -.0000000000 26363898e0 /
        data bth0cs(12) /    .0000000000 07297935e0 /
        data bth0cs(13) /   -.0000000000 02144188e0 /
        data bth0cs(14) /    .0000000000 00663693e0 /
        data bth0cs(15) /   -.0000000000 00215126e0 /
        data bth0cs(16) /    .0000000000 00072659e0 /
        data bth0cs(17) /   -.0000000000 00025465e0 /
        data bth0cs(18) /    .0000000000 00009229e0 /
        data bth0cs(19) /   -.0000000000 00003448e0 /
        data bth0cs(20) /    .0000000000 00001325e0 /
        data bth0cs(21) /   -.0000000000 00000522e0 /
        data bth0cs(22) /    .0000000000 00000210e0 /
        data bth0cs(23) /   -.0000000000 00000087e0 /
        data bth0cs(24) /    .0000000000 00000036e0 /
  c
        data pi4 / 0.7853981633 9744831e0 /
        data ntj0, ntm0, ntth0, xsml, xmax / 3*0, 2*0./
  c
        if (ntj0.ne.0) go to 10
        ntj0 = inits (bj0cs, 13, 0.1*r1mach(3))
        ntm0 = inits (bm0cs, 21, 0.1*r1mach(3))
        ntth0 = inits (bth0cs, 24, 0.1*r1mach(3))
  c
        xsml = sqrt (4.0*r1mach(3))
        xmax = 1.0/r1mach(4)
  c
   10   y = abs(x)
        if (y.gt.4.0) go to 20
  c
        besj0 = 1.0
        if (y.gt.xsml) besj0 = csevl (.125*y*y-1., bj0cs, ntj0)
        return
  c
   20   if (y.gt.xmax) call seteru (
       1  42hbesj0   no precision because abs(x) is big, 42, 1, 2)
  c
        z = 32.0/y**2 - 1.0
        ampl = (0.75 + csevl (z, bm0cs, ntm0)) / sqrt(y)
        theta = y - pi4 + csevl (z, bth0cs, ntth0) / y
        besj0 = ampl * cos (theta)
  c
        return
        end