2
0
mirror of https://github.com/boostorg/math.git synced 2026-01-29 19:52:08 +00:00

operator()() is deleted.

modified:   boost/math/special_functions/detail/bessel_jy_derivatives_series.hpp
This commit is contained in:
AntonBikineev
2014-01-06 08:34:04 +04:00
parent e87a281307
commit 943b411bc6

View File

@@ -18,26 +18,30 @@ struct bessel_j_derivative_small_z_series_term
typedef T result_type;
bessel_j_derivative_small_z_series_term(T v_, T x)
: N(0), v(v_)
: N(0), v(v_), term(1), mult(x / 2)
{
BOOST_MATH_STD_USING
mult = x / 2;
mult *= -mult;
term = 1;
// iterate if v == 0; otherwise result of
// first term is 0 and tools::sum_series stops
if (v == 0)
iterate();
}
T operator()()
{
BOOST_MATH_STD_USING
T r = term * (v + 2 * N);
++N;
term *= mult / (N * (N + v));
return r == 0 ? operator()() : r;
iterate();
return r;
}
private:
void iterate()
{
++N;
term *= mult / (N * (N + v));
}
unsigned N;
T v;
T mult;
T term;
T mult;
};
//
// Series evaluation for BesselJ'(v, z) as z -> 0.
@@ -51,11 +55,11 @@ inline T bessel_j_derivative_small_z_series(T v, T x, const Policy& pol)
T prefix;
if (v < boost::math::max_factorial<T>::value)
{
prefix = pow(x / 2, v-1) / 2 / boost::math::tgamma(v+1, pol);
prefix = pow(x / 2, v - 1) / 2 / boost::math::tgamma(v + 1, pol);
}
else
{
prefix = (v - 1) * log(x / 2) - constants::ln_two<T>() - boost::math::lgamma(v+1, pol);
prefix = (v - 1) * log(x / 2) - constants::ln_two<T>() - boost::math::lgamma(v + 1, pol);
prefix = exp(prefix);
}
if (0 == prefix)
@@ -81,18 +85,16 @@ struct bessel_y_derivative_small_z_series_term_a
bessel_y_derivative_small_z_series_term_a(T v_, T x)
: N(0), v(v_)
{
BOOST_MATH_STD_USING
mult = x / 2;
mult *= -mult;
term = 1;
}
T operator()()
{
BOOST_MATH_STD_USING
T r = term * (-v + 2 * N);
++N;
term *= mult / (N * (N - v));
return r == 0 ? operator()() : r;
return r;
}
private:
unsigned N;
@@ -109,18 +111,16 @@ struct bessel_y_derivative_small_z_series_term_b
bessel_y_derivative_small_z_series_term_b(T v_, T x)
: N(0), v(v_)
{
BOOST_MATH_STD_USING
mult = x / 2;
mult *= -mult;
term = 1;
}
T operator()()
{
BOOST_MATH_STD_USING
T r = term * (v + 2 * N);
++N;
term *= mult / (N * (N + v));
return r == 0 ? operator()() : r;
return r;
}
private:
unsigned N;