26 int nhi = 2*((
std::max(
int(n_max),
int(x))+15)/2+1);
30 for (
int m=nhi-2;
m>=0; --
m)
31 j[
m]=2*(
m+1)*j[
m+1]/x - j[
m+2];
35 for (
int m=2;
m<=nhi;
m+=2) sum+=2*j[
m];
38 for (
unsigned int m=0;
m<=n_max; ++
m) J[
m]=j[
m]/sum;
48 int nhi = 2*((int(x)+15)/2);
53 for (
int i=nhi;i>=0;i-=2)
62 return j0/(2*even_sum-j0);
77 int nhi = 2*((
std::max(
int(n),
int(x))+15)/2+1);
83 for (
int i=nhi; i>=0; i-=2)
91 if ((
unsigned int)i==n) jn=j0;
92 else if ((
unsigned int)i+1==n) jn=j1;
94 return jn/(2*even_sum-j0);
bool set_size(size_t n)
Resize to n elements.
void vnl_bessel(unsigned n_max, double x, vnl_vector< double > &J)
Compute Bessel functions of first kind up to order n_max.
vnl_vector & fill(T const &v)
Set all values to v.
double vnl_bessel0(double x)
Returns J_0(x), the value of the Bessel function of order 0 at x.
vnl_decnum max(vnl_decnum const &x, vnl_decnum const &y)
Bessel functions of the first kind.