pub struct Order2Graph<'arena, const K: usize> { /* private fields */ }Expand description
Const-primary scalar handle into an Order2GraphWorkspace.
The handle is two machine words. Clone/copy duplicates only the graph node index; all derivative storage remains in the reusable workspace.
Implementations§
Source§impl<'arena, const K: usize> Order2Graph<'arena, K>
impl<'arena, const K: usize> Order2Graph<'arena, K>
Sourcepub fn into_order2(self) -> Order2<K>
pub fn into_order2(self) -> Order2<K>
Lower this scalar output to the ordinary packed order-2 channels.
Sourcepub fn lower_into(
self,
gradient: &mut [f64],
hessian_row_major: &mut [f64],
) -> f64
pub fn lower_into( self, gradient: &mut [f64], hessian_row_major: &mut [f64], ) -> f64
Lower into caller-owned gradient and row-major Hessian storage.
Both slices are completely overwritten, including structurally-zero channels. Reusing them therefore requires no caller-side clearing.
Trait Implementations§
Source§impl<'arena, const K: usize> Clone for Order2Graph<'arena, K>
impl<'arena, const K: usize> Clone for Order2Graph<'arena, K>
Source§fn clone(&self) -> Order2Graph<'arena, K>
fn clone(&self) -> Order2Graph<'arena, K>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl<'arena, const K: usize> Copy for Order2Graph<'arena, K>
Source§impl<'arena, const K: usize> Debug for Order2Graph<'arena, K>
impl<'arena, const K: usize> Debug for Order2Graph<'arena, K>
Source§impl<'arena, const K: usize> RuntimeJetScalar<'arena> for Order2Graph<'arena, K>
impl<'arena, const K: usize> RuntimeJetScalar<'arena> for Order2Graph<'arena, K>
Source§type Workspace = Order2GraphWorkspace
type Workspace = Order2GraphWorkspace
Storage arena used by runtime-backed scalars. Fixed derivative oracles
use the unit type because their storage is inline.
Source§fn constant(
c: f64,
dimension: usize,
workspace: &'arena Self::Workspace,
) -> Self
fn constant( c: f64, dimension: usize, workspace: &'arena Self::Workspace, ) -> Self
A constant in a
dimension-primary algebra.Source§fn variable(
x: f64,
axis: usize,
dimension: usize,
workspace: &'arena Self::Workspace,
) -> Self
fn variable( x: f64, axis: usize, dimension: usize, workspace: &'arena Self::Workspace, ) -> Self
A seeded variable in a
dimension-primary algebra.Source§fn constant_like(&self, c: f64) -> Self
fn constant_like(&self, c: f64) -> Self
A constant in the same runtime algebra as
self. Read moreSource§fn with_value(&self, value: f64) -> Self
fn with_value(&self, value: f64) -> Self
Replace only the primal value, preserving every derivative channel.
Source§fn symmetric_quadratic_form<C: SymmetricQuadraticCoefficients>(
inputs: &[Self],
coefficients: &C,
dimension: usize,
workspace: &'arena Self::Workspace,
) -> Self
fn symmetric_quadratic_form<C: SymmetricQuadraticCoefficients>( inputs: &[Self], coefficients: &C, dimension: usize, workspace: &'arena Self::Workspace, ) -> Self
Evaluate
inputs' A inputs from the same universal semantic primitive
as JetScalar::symmetric_quadratic_form.Source§fn linear_combination(
inputs: &[Self],
weights: &[f64],
dimension: usize,
workspace: &'arena Self::Workspace,
) -> Self
fn linear_combination( inputs: &[Self], weights: &[f64], dimension: usize, workspace: &'arena Self::Workspace, ) -> Self
Evaluate
sum_i weights[i] * inputs[i] in one semantic primitive.Source§fn multiply_add(&self, right: &Self, addend: &Self) -> Self
fn multiply_add(&self, right: &Self, addend: &Self) -> Self
Evaluate
self * right + addend in one semantic primitive.Source§fn composed_sum(
inputs: &[Self],
derivative_stacks: &[[f64; 5]],
dimension: usize,
workspace: &'arena Self::Workspace,
) -> Self
fn composed_sum( inputs: &[Self], derivative_stacks: &[[f64; 5]], dimension: usize, workspace: &'arena Self::Workspace, ) -> Self
Sum unary compositions directly from certified derivative stacks.
Source§fn affine_compose(
&self,
input_scale: f64,
input_shift: f64,
derivative_stack: [f64; 5],
) -> Self
fn affine_compose( &self, input_scale: f64, input_shift: f64, derivative_stack: [f64; 5], ) -> Self
Compose a certified outer stack after an affine input map.
Source§fn affine_composed_sum(
inputs: &[Self],
input_scales: &[f64],
derivative_stacks: &[[f64; 5]],
dimension: usize,
workspace: &'arena Self::Workspace,
) -> Self
fn affine_composed_sum( inputs: &[Self], input_scales: &[f64], derivative_stacks: &[[f64; 5]], dimension: usize, workspace: &'arena Self::Workspace, ) -> Self
Sum unary compositions whose inputs each carry an affine scale.
Runtime-dimension lowering of
Σ_i f_i(input_scale_i · (left_i · right + addend_scale_i · addend))
from certified derivative stacks. Const expression arity replaces an
implementation-specific term cap, while shared operands expose universal
common-subexpression elimination. If every addend scale is exact zero
(including -0.0), the addend has no dimension, workspace, or
derivative-channel obligations.Source§fn compose_unary(&self, derivatives: [f64; 5]) -> Self
fn compose_unary(&self, derivatives: [f64; 5]) -> Self
Exact unary composition from the certified derivative stack.
Source§fn add_constant(&self, constant: f64) -> Self
fn add_constant(&self, constant: f64) -> Self
Add a primal constant without changing derivative channels.
Source§fn weighted_compose_sum(
lefts: &[Self],
right: &Self,
derivative_stacks: &[[f64; 5]],
addend: &Self,
) -> Self
fn weighted_compose_sum( lefts: &[Self], right: &Self, derivative_stacks: &[[f64; 5]], addend: &Self, ) -> Self
addend + Sum_i lefts[i] * f_i(right) from certified derivative stacks,
with ONE shared composition point. Read moreSource§fn ln(&self) -> Self
fn ln(&self) -> Self
ln(self). Caller guarantees positivity. This is the runtime-width
counterpart of JetScalar::ln and uses the identical certified
derivative stack.Auto Trait Implementations§
impl<'arena, const K: usize> !RefUnwindSafe for Order2Graph<'arena, K>
impl<'arena, const K: usize> !Send for Order2Graph<'arena, K>
impl<'arena, const K: usize> !Sync for Order2Graph<'arena, K>
impl<'arena, const K: usize> !UnwindSafe for Order2Graph<'arena, K>
impl<'arena, const K: usize> Freeze for Order2Graph<'arena, K>
impl<'arena, const K: usize> Unpin for Order2Graph<'arena, K>
impl<'arena, const K: usize> UnsafeUnpin for Order2Graph<'arena, K>
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.