pub fn hankel_jy_nu<P, E, V, const N: usize>(nu: V, x: V, x_lo: V) -> (V, V)Expand description
$J_\nu(x)$ by the Hankel expansion, at arbitrary real order, for x past
hankel_usable_from.
N is the term count. See the module documentation for the measured table. The
caller is responsible for the gate. This does not check it, and below the gate the answer
is simply the best a divergent series can do, which is not enough.
§The phase is never formed directly
$\omega = x - (\nu/2 + 1/4)\pi$ cannot be computed that way: subtracting an irrational
from a large $x$ destroys exactly the low-order bits that set the phase. The addition
formulae are used instead, with $\sin$ and $\cos$ of the $\nu$-dependent part taken
once through sincos_pi so $\pi$ never multiplies
anything large. Boost’s own comment says the same thing about the
same expansion.
§x_lo: a second word of the argument, for the phase alone
Past the gate the error of this arm is the phase: sin x and cos x are as accurate
as x itself, and a caller whose x was computed (Airy’s zeta = (2/3)|z|^{3/2})
has already lost x eps / 2 of it to rounding. x_lo is that rounding, when the caller
has it, and enters here through the addition formulae to first order:
sin(x + lo) = sin x + lo cos x, cos(x + lo) = cos x - lo sin x. Two FMAs. The
amplitude series does not need it: its sensitivity to x is O(1/x). Callers without a
second word pass zero, which is exact.