Struct ComponentScalarRow
pub struct ComponentScalarRow { /* private fields */ }Description
One deterministic scalar residual row lowered from a shaped root.
Implementations§
§impl ComponentScalarRow
impl ComponentScalarRow
pub const fn is_imaginary(&self) -> bool
pub const fn is_imaginary(&self) -> bool
Whether this is the imaginary residual coordinate of the original root.
pub const fn component_index(&self) -> &[u32]
pub const fn component_index(&self) -> &[u32]
Row-major component multi-index within the original shaped root.
pub fn symbols(&self) -> &[ScalarSymbolCoordinate]
pub fn symbols(&self) -> &[ScalarSymbolCoordinate]
Dense shaped-symbol coordinates expected by Self::evaluate.
pub fn input_slots(&self) -> &[ScalarInputSlot]
pub fn input_slots(&self) -> &[ScalarInputSlot]
Typed IR-local reads corresponding one-for-one with Self::symbols.
These dense slots are evaluator plumbing. Their source coordinates retain real Semantic identities, but the slots are not Parameters or any other Semantic symbol kind.
pub fn constant_coordinate_jacobian(
&self,
selected: &[ScalarSymbolCoordinate],
) -> Result<ConstantSymbolJacobian, Diagnostic>
pub fn constant_coordinate_jacobian( &self, selected: &[ScalarSymbolCoordinate], ) -> Result<ConstantSymbolJacobian, Diagnostic>
Prove a row Jacobian constant with respect to every other source coordinate. This uses the scalar SSA proof, retaining real/imaginary component identity. Unselected inputs remain symbolic, so state-dependent mass cannot be frozen accidentally by evaluation at a particular point.
§Errors
Rejects duplicate selections, nonlinear dependence, variable coefficients, unsupported instructions, and nonfinite coefficient arithmetic.
pub fn bind_affine(
&self,
selected: &[ScalarSymbolCoordinate],
bindings: &[(ScalarSymbolCoordinate, f64)],
) -> Result<BoundAffineScalarIr<ScalarSymbolCoordinate>, Diagnostic>
pub fn bind_affine( &self, selected: &[ScalarSymbolCoordinate], bindings: &[(ScalarSymbolCoordinate, f64)], ) -> Result<BoundAffineScalarIr<ScalarSymbolCoordinate>, Diagnostic>
Structurally bind a real affine row in exact symbol/channel/part coordinates. This uses the ordinary scalar SSA affine proof, without numerical probing.
§Errors
Rejects nonlinear dependence, duplicate coordinates, missing or nonfinite bindings, selected coordinates bound as constants, and invalid arithmetic.
pub fn bind_polynomial_pencil(
&self,
selected: &[ScalarSymbolCoordinate],
spectral: &[ScalarSymbolCoordinate],
maximum_degree: u32,
term_budget: usize,
bindings: &[(ScalarSymbolCoordinate, f64)],
) -> Result<BTreeMap<Vec<u32>, BoundAffineScalarIr<ScalarSymbolCoordinate>>, Diagnostic>
pub fn bind_polynomial_pencil( &self, selected: &[ScalarSymbolCoordinate], spectral: &[ScalarSymbolCoordinate], maximum_degree: u32, term_budget: usize, bindings: &[(ScalarSymbolCoordinate, f64)], ) -> Result<BTreeMap<Vec<u32>, BoundAffineScalarIr<ScalarSymbolCoordinate>>, Diagnostic>
Prove and bind a homogeneous polynomial pencil in real spectral coordinates.
Each key lists spectral powers in the supplied coordinate order; each
value is the corresponding homogeneous mode map. Missing keys are zero.
Structural degree admission precedes coefficient evaluation. Coefficients
are propagated algebraically, never inferred from sampled values. Complex
analyticity, physical dimensions and eigenproblem classes remain with the
mathematical owner. term_budget limits retained coefficient resources,
not the dimension or mathematical degree of admitted finite spaces.
pub fn linearize(
&self,
inputs: &[f64],
roles: &[DifferentiationRole],
) -> Result<ScalarLinearization<'_>, Diagnostic>
pub fn linearize( &self, inputs: &[f64], roles: &[DifferentiationRole], ) -> Result<ScalarLinearization<'_>, Diagnostic>
Bind first-order products in the exact real component-coordinate order.
Complex symbols retain two coordinates per component. The derivative is
real-linear: conj, real, imag, and abs2 do not require holomorphy.
The VJP uses the Euclidean pairing on these real coordinates, equivalent
to Re(sum(conj(a) * b)) on complex components and the ordinary product
on real components. An abs2(z) cotangent therefore includes the factor
two from its real differential; it is not a Wirtinger partial.
Numerical regularity checks are replayed by the shared primal/JVP/VJP evaluator.
§Errors
Rejects wrong cardinality, non-finite points and unsupported numerical instructions.
pub fn evaluate(&self, inputs: &[f64]) -> Result<f64, Diagnostic>
pub fn evaluate(&self, inputs: &[f64]) -> Result<f64, Diagnostic>
Evaluate this scalar row using dense inputs matching Self::symbols.
§Errors
Returns the ordinary scalar Operator IR diagnostics for invalid input cardinality or non-finite arithmetic.
Trait Implementations§
§impl Clone for ComponentScalarRow
impl Clone for ComponentScalarRow
§impl Debug for ComponentScalarRow
impl Debug for ComponentScalarRow
§impl PartialEq for ComponentScalarRow
impl PartialEq for ComponentScalarRow
§fn eq(&self, other: &ComponentScalarRow) -> bool
fn eq(&self, other: &ComponentScalarRow) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for ComponentScalarRow
Auto Trait Implementations§
impl Freeze for ComponentScalarRow
impl RefUnwindSafe for ComponentScalarRow
impl Send for ComponentScalarRow
impl Sync for ComponentScalarRow
impl Unpin for ComponentScalarRow
impl UnsafeUnpin for ComponentScalarRow
impl UnwindSafe for ComponentScalarRow
Blanket Implementations§
Source§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
§fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
§impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
§type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
§fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
Source§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
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<T, Dst> ConvAsUtil<Dst> for T
impl<T, Dst> ConvAsUtil<Dst> for T
§fn approx(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
§impl<T> ConvUtil for T
impl<T> ConvUtil for T
§fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
§fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
§fn into_as<Dst>(self) -> Dstwhere
Self: Sized + Into<Dst>,
fn into_as<Dst>(self) -> Dstwhere
Self: Sized + Into<Dst>,
§fn try_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + TryInto<Dst>,
fn try_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + TryInto<Dst>,
§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> Twhere
Self: Distribution<T>,
Source§impl<T> From<T> for T
impl<T> From<T> for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T, U> Into<U> for Twhere
U: From<T>,
impl<T, U> Into<U> for Twhere
U: From<T>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>where
F: FnOnce(&Self) -> bool,
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>where
F: FnOnce(&Self) -> bool,
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Same for T
impl<T> Same for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.