pub fn bessel_iv_impl<P, E, V, const NS: usize, const NL: usize, const NF: usize, const SCALED: bool>(
x: V,
n: V,
t: &BesselI<E, NS, NL, NF>,
) -> VExpand description
I_n(x) with a per-lane order, or e^{-|x|} I_n(x) when SCALED.
The const-generic form is the one to reach for when the order is known. This exists for the
case hermitev exists for: an order that arrives as data. Every lane may ask for a
different one.
§What changes, and what does not
Almost nothing. The ratio recurrence already accumulates its product under a mask
(k <= N), so making N a vector rather than a splat is a one-word change. The trip-count
start N + 24 + c*x was already per-lane in x and simply becomes per-lane in n too.
The loop still ends when the last lane reaches k = 1, so the packet pays for its widest
(order, argument) pair, the standing trade.
The asymptotic arm generalises too, via [asymptotic_series_v]: 4 nu^2 no longer folds,
which costs one vector subtract and one multiply per term. Without the arm the lower tiers
reached 698 to 2634 ULP on bessel_i_scaled past x ~ 40, because the recurrence’s trip
count is the tier and its low rungs are far too short there.