Skip to main content

bessel_iv_impl

Function bessel_iv_impl 

Source
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>,
) -> V
Expand 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.

Last built: 2026-09-08 21:35:55 UTC