Skip to content

Commit 7a41ad8

Browse files
authored
Merge pull request #1181 from fsb4000/fix_warnings
Fix warning C4701: "potentially uninitialized local variable used"
2 parents 1290be6 + 59db0fc commit 7a41ad8

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

include/boost/math/special_functions/detail/bessel_ik.hpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,11 @@ BOOST_MATH_GPU_ENABLED int bessel_ik(T v, T x, T* result_I, T* result_K, int kin
330330
T scale = 1;
331331
T scale_sign = 1;
332332

333+
n = iround(v, pol);
334+
u = v - n; // -1/2 <= u < 1/2
335+
BOOST_MATH_INSTRUMENT_VARIABLE(n);
336+
BOOST_MATH_INSTRUMENT_VARIABLE(u);
337+
333338
if (((kind & need_i) == 0) && (fabs(4 * v * v - 25) / (8 * x) < tools::forth_root_epsilon<T>()))
334339
{
335340
// A&S 9.7.2
@@ -341,11 +346,6 @@ BOOST_MATH_GPU_ENABLED int bessel_ik(T v, T x, T* result_I, T* result_K, int kin
341346
}
342347
else
343348
{
344-
n = iround(v, pol);
345-
u = v - n; // -1/2 <= u < 1/2
346-
BOOST_MATH_INSTRUMENT_VARIABLE(n);
347-
BOOST_MATH_INSTRUMENT_VARIABLE(u);
348-
349349
BOOST_MATH_ASSERT(x > 0); // Error handling for x <= 0 handled in cyl_bessel_i and cyl_bessel_k
350350

351351
// x is positive until reflection
@@ -418,6 +418,7 @@ BOOST_MATH_GPU_ENABLED int bessel_ik(T v, T x, T* result_I, T* result_K, int kin
418418
}
419419
if (reflect)
420420
{
421+
BOOST_MATH_ASSERT(fabs(v - n - u) < tools::forth_root_epsilon<T>());
421422
T z = (u + n % 2);
422423
T fact = (2 / pi<T>()) * (boost::math::sin_pi(z, pol) * Kv);
423424
if(fact == 0)

test/test_bessel_j.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,7 @@ void test_bessel(T, const char* name)
291291
BOOST_CHECK_EQUAL(boost::math::cyl_bessel_j(T(0), std::numeric_limits<T>::infinity()), T(0));
292292
BOOST_CHECK_EQUAL(boost::math::cyl_bessel_j(T(2), std::numeric_limits<T>::infinity()), T(0));
293293
BOOST_CHECK_EQUAL(boost::math::cyl_bessel_j(T(1.25), std::numeric_limits<T>::infinity()), T(0));
294+
BOOST_CHECK_EQUAL(boost::math::cyl_bessel_j(T(-1.25), std::numeric_limits<T>::infinity()), T(0));
294295
BOOST_CHECK_EQUAL(boost::math::sph_bessel(0, std::numeric_limits<T>::infinity()), T(0));
295296
BOOST_CHECK_EQUAL(boost::math::sph_bessel(1, std::numeric_limits<T>::infinity()), T(0));
296297
BOOST_CHECK_EQUAL(boost::math::sph_bessel(2, std::numeric_limits<T>::infinity()), T(0));

0 commit comments

Comments
 (0)