Struct JetK
pub struct JetK<T: Passive, const K: usize> {
pub value: T,
pub tangents: [T; K],
}Fields§
§value: T§tangents: [T; K]Implementations§
Trait Implementations§
§impl<T: Passive, const K: usize> AddAssign for JetK<T, K>
impl<T: Passive, const K: usize> AddAssign for JetK<T, K>
§fn add_assign(&mut self, rhs: Self)
fn add_assign(&mut self, rhs: Self)
+= operation. Read more§impl<T: Passive, const K: usize> AddAssign<T> for JetK<T, K>
impl<T: Passive, const K: usize> AddAssign<T> for JetK<T, K>
§fn add_assign(&mut self, rhs: T)
fn add_assign(&mut self, rhs: T)
+= operation. Read moreimpl<T: Copy + Passive, const K: usize> Copy for JetK<T, K>
§impl<T: Passive, const K: usize> DivAssign for JetK<T, K>
impl<T: Passive, const K: usize> DivAssign for JetK<T, K>
§fn div_assign(&mut self, rhs: Self)
fn div_assign(&mut self, rhs: Self)
/= operation. Read more§impl<T: Passive, const K: usize> DivAssign<T> for JetK<T, K>
impl<T: Passive, const K: usize> DivAssign<T> for JetK<T, K>
§fn div_assign(&mut self, rhs: T)
fn div_assign(&mut self, rhs: T)
/= operation. Read more§impl<T: Passive, const K: usize> Float for JetK<T, K>
impl<T: Passive, const K: usize> Float for JetK<T, K>
§fn neg_infinity() -> Self
fn neg_infinity() -> Self
§fn min_positive_value() -> Self
fn min_positive_value() -> Self
§fn is_infinite(self) -> bool
fn is_infinite(self) -> bool
true if this value is positive infinity or negative infinity and
false otherwise. Read more§fn is_sign_positive(self) -> bool
fn is_sign_positive(self) -> bool
§fn is_sign_negative(self) -> bool
fn is_sign_negative(self) -> bool
true if self is negative, including -0.0,
Float::neg_infinity(), and -Float::nan(). Read more§fn classify(self) -> FpCategory
fn classify(self) -> FpCategory
§fn integer_decode(self) -> (u64, i16, i8)
fn integer_decode(self) -> (u64, i16, i8)
sign * mantissa * 2 ^ exponent. Read more§fn round(self) -> Self
fn round(self) -> Self
0.0. Read more§fn to_degrees(self) -> Self
fn to_degrees(self) -> Self
§fn to_radians(self) -> Self
fn to_radians(self) -> Self
§fn mul_add(self, a: Self, b: Self) -> Self
fn mul_add(self, a: Self, b: Self) -> Self
(self * a) + b with only one rounding
error, yielding a more accurate result than an unfused multiply-add. Read more§fn hypot(self, other: Self) -> Self
fn hypot(self, other: Self) -> Self
x and y. Read more§fn log(self, base: Self) -> Self
fn log(self, base: Self) -> Self
§fn exp_m1(self) -> Self
fn exp_m1(self) -> Self
e^(self) - 1 in a way that is accurate even if the
number is close to zero. Read more§fn ln_1p(self) -> Self
fn ln_1p(self) -> Self
ln(1+n) (natural logarithm) more accurately than if
the operations were performed separately. Read more§fn asin(self) -> Self
fn asin(self) -> Self
§fn acos(self) -> Self
fn acos(self) -> Self
§impl<T: Passive, const K: usize> FromPrimitive for JetK<T, K>
impl<T: Passive, const K: usize> FromPrimitive for JetK<T, K>
§fn from_i64(n: i64) -> Option<Self>
fn from_i64(n: i64) -> Option<Self>
i64 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.§fn from_u64(n: u64) -> Option<Self>
fn from_u64(n: u64) -> Option<Self>
u64 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.§fn from_f64(n: f64) -> Option<Self>
fn from_f64(n: f64) -> Option<Self>
f64 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read moreSource§fn from_isize(n: isize) -> Option<Self>
fn from_isize(n: isize) -> Option<Self>
isize to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_i8(n: i8) -> Option<Self>
fn from_i8(n: i8) -> Option<Self>
i8 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_i16(n: i16) -> Option<Self>
fn from_i16(n: i16) -> Option<Self>
i16 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_i32(n: i32) -> Option<Self>
fn from_i32(n: i32) -> Option<Self>
i32 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_i128(n: i128) -> Option<Self>
fn from_i128(n: i128) -> Option<Self>
i128 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read moreSource§fn from_usize(n: usize) -> Option<Self>
fn from_usize(n: usize) -> Option<Self>
usize to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_u8(n: u8) -> Option<Self>
fn from_u8(n: u8) -> Option<Self>
u8 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_u16(n: u16) -> Option<Self>
fn from_u16(n: u16) -> Option<Self>
u16 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_u32(n: u32) -> Option<Self>
fn from_u32(n: u32) -> Option<Self>
u32 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.§impl<const K: usize> LiftParams for JetK<f64, K>
The K-lane forward dual, admitted to the scalar set and consumed by two
entry points.
impl<const K: usize> LiftParams for JetK<f64, K>
The K-lane forward dual, admitted to the scalar set and consumed by two entry points.
The macro above stamps concrete types; this mode is generic in its lane
count, so it is written out. What it does is identical — convert through
From<f64>, which gives every lane a zero tangent.
Admission means a generic pricing body can be instantiated at it, and that
the cross-mode value-identity harness sweeps it. Consumption is separate,
and is a decision per entry point: the K-lane mode serves a full gradient
over n inputs in ⌈n/K⌉ tape-free passes, and exactly two entry points
present that shape — the calibration Jacobian in calibration.rs and the
bond-curve fit in curves/fit.rs, each of which wants every quote against
every parameter as a whole matrix in a module that records no tape. Risk
stays many-to-one in reverse mode and the pillar solve stays one-to-one in
Jet1.
The distinction is a requirement rather than a convention; see the
numeric-scalar-modes capability, whose routing test holds the manifest of
consumers. What is measured, and what the decision rests on, is
benches/mode_crossover.rs.
There is no trait seam for lane seeding.
Seedable carries one direction, which
is the solve’s shape; each K-lane consumer seeds its own block of K
parameters with a unit tangent per lane in a loop it owns, because what is
seeded (pillars or coefficients) is the consumer’s business.
§impl<T: Passive, const K: usize> MulAssign for JetK<T, K>
impl<T: Passive, const K: usize> MulAssign for JetK<T, K>
§fn mul_assign(&mut self, rhs: Self)
fn mul_assign(&mut self, rhs: Self)
*= operation. Read more§impl<T: Passive, const K: usize> MulAssign<T> for JetK<T, K>
impl<T: Passive, const K: usize> MulAssign<T> for JetK<T, K>
§fn mul_assign(&mut self, rhs: T)
fn mul_assign(&mut self, rhs: T)
*= operation. Read more§impl<T: Passive, const K: usize> Num for JetK<T, K>
impl<T: Passive, const K: usize> Num for JetK<T, K>
type FromStrRadixErr = <T as Num>::FromStrRadixErr
§fn from_str_radix(s: &str, radix: u32) -> Result<Self, Self::FromStrRadixErr>
fn from_str_radix(s: &str, radix: u32) -> Result<Self, Self::FromStrRadixErr>
2..=36). Read more§impl<T: Passive, const K: usize> NumCast for JetK<T, K>
impl<T: Passive, const K: usize> NumCast for JetK<T, K>
§fn from<N: ToPrimitive>(n: N) -> Option<Self>
fn from<N: ToPrimitive>(n: N) -> Option<Self>
ToPrimitive trait. If the source value cannot be
represented by the target type, then None is returned. Read more§impl<T: Passive, const K: usize> PartialOrd for JetK<T, K>
impl<T: Passive, const K: usize> PartialOrd for JetK<T, K>
§impl<T: Passive, const K: usize> Passive for JetK<T, K>
impl<T: Passive, const K: usize> Passive for JetK<T, K>
fn erf_value(self) -> Self
fn inv_norm_cdf_value(self) -> Self
§impl<const K: usize> Real for JetK<f64, K>
impl<const K: usize> Real for JetK<f64, K>
type Passive = f64
fn value(&self) -> f64
fn zero() -> Self
fn one() -> Self
fn powf(&self, exponent: Self) -> Self
fn powi(&self, exponent: i32) -> Self
fn sum(xs: &[Self]) -> Self
fn dot(xs: &[Self], ys: &[Self]) -> Self
fn weighted_sum(ws: &[Self::Passive], xs: &[Self]) -> Self
fn weighted_dot(ws: &[Self::Passive], xs: &[Self], ys: &[Self]) -> Self
fn max(&self, other: &Self) -> Self
fn min(&self, other: &Self) -> Self
§fn abs(&self) -> Self
fn abs(&self) -> Self
f' = sign(x), f'' = 0 (away from 0). At x = 0 the derivative is not defined; every surface takes the sub-gradient f'(0) = +1 (the x >= 0 branch), matching the winning-branch convention max/min use for payoffs.§fn inv_norm_cdf(&self) -> Self
fn inv_norm_cdf(&self) -> Self
Φ⁻¹(p). f' = 1/φ(f), f'' = f·f'².§impl<T: Passive, const K: usize> RemAssign for JetK<T, K>
impl<T: Passive, const K: usize> RemAssign for JetK<T, K>
§fn rem_assign(&mut self, rhs: Self)
fn rem_assign(&mut self, rhs: Self)
%= operation. Read more§impl<T: Passive, const K: usize> SubAssign for JetK<T, K>
impl<T: Passive, const K: usize> SubAssign for JetK<T, K>
§fn sub_assign(&mut self, rhs: Self)
fn sub_assign(&mut self, rhs: Self)
-= operation. Read more§impl<T: Passive, const K: usize> SubAssign<T> for JetK<T, K>
impl<T: Passive, const K: usize> SubAssign<T> for JetK<T, K>
§fn sub_assign(&mut self, rhs: T)
fn sub_assign(&mut self, rhs: T)
-= operation. Read more§impl TapeStorage for JetK<f64, 2>
impl TapeStorage for JetK<f64, 2>
§impl TapeStorage for JetK<f64, 4>
impl TapeStorage for JetK<f64, 4>
§impl TapeStorage for JetK<f64, 8>
impl TapeStorage for JetK<f64, 8>
§impl<T: Passive, const K: usize> ToPrimitive for JetK<T, K>
impl<T: Passive, const K: usize> ToPrimitive for JetK<T, K>
§fn to_i64(&self) -> Option<i64>
fn to_i64(&self) -> Option<i64>
self to an i64. If the value cannot be
represented by an i64, then None is returned.§fn to_u64(&self) -> Option<u64>
fn to_u64(&self) -> Option<u64>
self to a u64. If the value cannot be
represented by a u64, then None is returned.§fn to_f64(&self) -> Option<f64>
fn to_f64(&self) -> Option<f64>
self to an f64. Overflows may map to positive
or negative inifinity, otherwise None is returned if the value cannot
be represented by an f64. Read moreSource§fn to_isize(&self) -> Option<isize>
fn to_isize(&self) -> Option<isize>
self to an isize. If the value cannot be
represented by an isize, then None is returned.Source§fn to_i8(&self) -> Option<i8>
fn to_i8(&self) -> Option<i8>
self to an i8. If the value cannot be
represented by an i8, then None is returned.Source§fn to_i16(&self) -> Option<i16>
fn to_i16(&self) -> Option<i16>
self to an i16. If the value cannot be
represented by an i16, then None is returned.Source§fn to_i32(&self) -> Option<i32>
fn to_i32(&self) -> Option<i32>
self to an i32. If the value cannot be
represented by an i32, then None is returned.Source§fn to_i128(&self) -> Option<i128>
fn to_i128(&self) -> Option<i128>
self to an i128. If the value cannot be
represented by an i128 (i64 under the default implementation), then
None is returned. Read moreSource§fn to_usize(&self) -> Option<usize>
fn to_usize(&self) -> Option<usize>
self to a usize. If the value cannot be
represented by a usize, then None is returned.Source§fn to_u8(&self) -> Option<u8>
fn to_u8(&self) -> Option<u8>
self to a u8. If the value cannot be
represented by a u8, then None is returned.Source§fn to_u16(&self) -> Option<u16>
fn to_u16(&self) -> Option<u16>
self to a u16. If the value cannot be
represented by a u16, then None is returned.Source§fn to_u32(&self) -> Option<u32>
fn to_u32(&self) -> Option<u32>
self to a u32. If the value cannot be
represented by a u32, then None is returned.Auto Trait Implementations§
impl<T, const K: usize> Freeze for JetK<T, K>where
T: Freeze,
impl<T, const K: usize> RefUnwindSafe for JetK<T, K>where
T: RefUnwindSafe,
impl<T, const K: usize> Send for JetK<T, K>
impl<T, const K: usize> Sync for JetK<T, K>
impl<T, const K: usize> Unpin for JetK<T, K>where
T: Unpin,
impl<T, const K: usize> UnsafeUnpin for JetK<T, K>where
T: UnsafeUnpin,
impl<T, const K: usize> UnwindSafe for JetK<T, K>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<R> CopyableReal for R
impl<T> NumAssign for Twhere
T: Num + NumAssignOps,
impl<T, Rhs> NumAssignOps<Rhs> for T
impl<T, Rhs, Output> NumOps<Rhs, Output> for T
Source§impl<T> Real for Twhere
T: Float,
impl<T> Real for Twhere
T: Float,
Source§fn min_positive_value() -> T
fn min_positive_value() -> T
Source§fn round(self) -> T
fn round(self) -> T
0.0. Read moreSource§fn is_sign_positive(self) -> bool
fn is_sign_positive(self) -> bool
true if self is positive, including +0.0,
Float::infinity(), and with newer versions of Rust f64::NAN. Read moreSource§fn is_sign_negative(self) -> bool
fn is_sign_negative(self) -> bool
true if self is negative, including -0.0,
Float::neg_infinity(), and with newer versions of Rust -f64::NAN. Read moreSource§fn mul_add(self, a: T, b: T) -> T
fn mul_add(self, a: T, b: T) -> T
(self * a) + b with only one rounding
error, yielding a more accurate result than an unfused multiply-add. Read moreSource§fn log(self, base: T) -> T
fn log(self, base: T) -> T
Source§fn to_degrees(self) -> T
fn to_degrees(self) -> T
Source§fn to_radians(self) -> T
fn to_radians(self) -> T
Source§fn hypot(self, other: T) -> T
fn hypot(self, other: T) -> T
x and y. Read moreSource§fn asin(self) -> T
fn asin(self) -> T
Source§fn acos(self) -> T
fn acos(self) -> T
Source§fn atan(self) -> T
fn atan(self) -> T
Source§fn exp_m1(self) -> T
fn exp_m1(self) -> T
e^(self) - 1 in a way that is accurate even if the
number is close to zero. Read more