|
|
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.