pub enum DeclaredHessianForm {
Dense,
Operator {
materialization: OuterHessianMaterialization,
estimated_materialization_cost: Option<f64>,
},
Either,
Unavailable,
}Expand description
Capability-time declaration of what shape the outer Hessian takes.
Replaces the binary Derivative for the Hessian field on
OuterCapability: callers that know the shape upfront declare
it here, and the planner routes between dense ARC and matrix-free
trust-region before seed evaluation rather than dynamically
branching on seed_eval.hessian at runtime.
Variants:
Dense: the family always returnsHessianResult::Analytic(_). The planner picks dense ARC; matrix-free TR is never engaged.Operator { materialization, estimated_materialization_cost }: the family always returnsHessianResult::Operator(_). The planner picks matrix-free TR unlessmaterializationadvertisesExplicit/BatchedHvpcheaply enough that materializing once per outer iter (opt 0.4.2with_materialize_when_cheap) wins.estimated_materialization_costis reserved for a future cost model; today it is purely informational.Either: the family may return either shape; the runner inspects the seed eval and locks the route then. This is the historical default for code paths whereDerivative::Analyticmade the declaration and the seed loop branched onseed_eval.hessian.Unavailable: no analytic Hessian. The planner picks BFGS / EFS per the gradient declaration and the rest of the capability.
Variants§
Implementations§
Source§impl DeclaredHessianForm
impl DeclaredHessianForm
Sourcepub const fn is_analytic(self) -> bool
pub const fn is_analytic(self) -> bool
Coarse “is an analytic Hessian declared?” projection. true
for Dense / Operator / Either; false for Unavailable.
Used by plan to keep the existing Derivative-based match
arms while richer routing decisions consult the form directly.
Sourcepub const fn is_operator_only(self) -> bool
pub const fn is_operator_only(self) -> bool
True when the declaration commits to a matrix-free path.
Sourcepub const fn is_dense_only(self) -> bool
pub const fn is_dense_only(self) -> bool
True when the declaration commits to a dense path.
Trait Implementations§
Source§impl Clone for DeclaredHessianForm
impl Clone for DeclaredHessianForm
Source§fn clone(&self) -> DeclaredHessianForm
fn clone(&self) -> DeclaredHessianForm
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 Copy for DeclaredHessianForm
Source§impl Debug for DeclaredHessianForm
impl Debug for DeclaredHessianForm
Source§impl PartialEq for DeclaredHessianForm
impl PartialEq for DeclaredHessianForm
Source§fn eq(&self, other: &DeclaredHessianForm) -> bool
fn eq(&self, other: &DeclaredHessianForm) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for DeclaredHessianForm
Auto Trait Implementations§
impl Freeze for DeclaredHessianForm
impl RefUnwindSafe for DeclaredHessianForm
impl Send for DeclaredHessianForm
impl Sync for DeclaredHessianForm
impl Unpin for DeclaredHessianForm
impl UnsafeUnpin for DeclaredHessianForm
impl UnwindSafe for DeclaredHessianForm
Blanket Implementations§
impl<T> Boilerplate for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
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>
Converts
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>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
impl<T> Scalar for T
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.