|
|
1.1 root 1: /*
2: * Evaluate the Bessel function of the first kind for the
3: * n'th order.
4: */
5: #include <math.h>
6:
7: double
8: jn(n, x)
9: register int n;
10: double x;
11: {
12: double r, ja, jb;
13: register int m, i;
14:
15: if (x == 0.0)
16: return (0.0);
17: m = 0;
18: if (x < 0.0) {
19: x = -x;
20: m = 1;
21: }
22: if (n < 0) {
23: n = -n;
24: if (n&1)
25: m ^= 1;
26: }
27: switch (n) {
28: case 0:
29: r = j0(x);
30: break;
31: case 1:
32: r = j1(x);
33: break;
34: default:
35: jb = j0(x);
36: ja = j1(x);
37: for (i=1; i<n; i++) {
38: r = (2.0*i/x)*ja - jb;
39: jb = ja;
40: ja = r;
41: }
42: break;
43: }
44: if (m)
45: r = -r;
46: return (r);
47: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.