-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
Here is an example of erroneous output when nu isa Int
but correct output when nu isa Float64
of the same value:
julia> besselj_deriv_zero(37, 1)
0.0
julia> besselj_deriv_zero(37.0, 1)
39.71488992674072
The problem can be traced to integer overflow when computing the numerator of variable t4
in function bessel_deriv_zero_asymptotic
. A similar problem with overflow occurs when computing the numerator of variable t4 in function bessel_zero_asymptotic
, though it doesn't manifest until larger values of nu
are used:
julia> FunctionZeros.besselj_zero_asymptotic(87, 1)
103.5246288334123
julia> FunctionZeros.besselj_zero_asymptotic(87.0, 1)
100.99682928339313
This error doesn't propagate out of besselj_zero
because the erroneous asymptotic value is still close enough to the true zero for the latter to be found by the rootfinder.
I think that the solution is to promote nu
to float(abs(nu_in))
whenever nu_in
is an Integer
. I'll work on a PR that implements this.
Metadata
Metadata
Assignees
Labels
No labels