Back to Eqiora docs Skip to main content

HermitianEigenproblem

Struct HermitianEigenproblem 

pub struct HermitianEigenproblem<'a> { /* private fields */ }
Description

A finite Hermitian matrix pencil with an explicitly positive-definite metric.

Types retain exact basis identities and physical dimensions. Matrices describe the already constrained space; this owner never removes nullspace coordinates or regularizes a singular metric. The caller retains the constraint lineage. A standard problem supplies an explicit dimensionless identity metric.

Implementations§

§

impl HermitianEigenproblem<'_>

pub fn excluded_metric_projector( operator: &ValueLiteral, metric: &ValueLiteral, embedding: &ValueLiteral, tolerance: f64, ) -> Result<ValueLiteral, Diagnostic>

Dimensionless complementary metric projector E = I - P (Pᴴ B P)⁻¹ Pᴴ B of an explicitly declared embedding.

The full original metric may be singular or indefinite; its pullback must be positive definite. E describes directions excluded by P and has rank full_extent - admitted_extent. It is generally an oblique projector in coefficient coordinates. This does not assert that A or B vanishes on those directions, or that they are physical gauge freedoms. Cholesky triangular solves avoid explicitly forming an inverse. tolerance checks the B-orthonormality of the lifted coordinate basis.

§

impl HermitianEigenproblem<'_>

pub fn pullback( operator: &ValueLiteral, metric: &ValueLiteral, embedding: &ValueLiteral, ) -> Result<(ValueLiteral, ValueLiteral), Diagnostic>

Pull back complete Hermitian matrices along an explicit map u=Pq.

Returns (Pᴴ A P, Pᴴ B P) in P’s exact source basis. The restricted metric must have positive finite Cholesky pivots; the original metric may be singular or indefinite only outside this admitted space. No coordinates are chosen, deleted, shifted or regularized implicitly. This does not prove that reduced eigenvectors satisfy the original equation: lifted candidates still require original-pencil verification.

§

impl HermitianEigenproblem<'_>

pub fn metric_projector( &self, modes: &[ValueLiteral], tolerance: f64, ) -> Result<ValueLiteral, Diagnostic>

Construct the dimensionless metric projector P=U Uᴴ B of supplied modes.

Checks the exact mode types, nonzero vectors and B-orthonormality, using ||UᴴBU-I||_F <= tolerance. Tolerance is an explicit dimensionless numerical control in (0,1). A mode permutation, independent phases, or a unitary rotation within this subspace leaves the projector unchanged. This does not establish that the subspace is invariant under A; eigenpair residuals must be verified separately by the owning Plan.

§

impl<'a> HermitianEigenproblem<'a>

pub fn check_operator(operator: &ValueLiteral) -> Result<(), Diagnostic>

Check one complete Hermitian endomorphism on its exact finite basis.

This checks the bound coefficients before any evolution scaling or solve. Both triangles and imaginary diagonal parts participate; no tolerance, dimension cap, or discarded triangle weakens this mathematical contract.

§Errors

Rejects non-endomorphism types or any unequal conjugate coefficients.

pub fn new( operator: &'a ValueLiteral, metric: &'a ValueLiteral, ) -> Result<HermitianEigenproblem<'a>, Diagnostic>

Check exact type correspondence, both full Hermitian matrices, and every Cholesky pivot of the metric. No dimension-specific formula or size cap is used. Numerically nonpositive/nonfinite pivots reject explicitly.

pub fn original_eigenpair_defects( operator: &'a ValueLiteral, metric: &'a ValueLiteral, eigenvalue: &ValueLiteral, mode: &ValueLiteral, ) -> Result<(f64, f64), Diagnostic>

Verify a lifted mode against a complete original Hermitian pencil.

The original metric need not be positive definite outside the admitted space. This evaluates residual and normalization only; it does not admit a singular/indefinite pencil for execution or prove subspace membership.

pub fn original_metric_projector( operator: &'a ValueLiteral, metric: &'a ValueLiteral, modes: &[ValueLiteral], tolerance: f64, ) -> Result<ValueLiteral, Diagnostic>

Verify B-orthonormal lifted modes and construct their original-space metric projector. Positivity outside their span is not established.

pub const fn operator(&self) -> &ValueLiteral

Complete typed operator, in row-major component order.

pub const fn metric(&self) -> &ValueLiteral

Complete typed metric, in row-major component order.

pub const fn dimension(&self) -> usize

Number of coordinates of the exact admitted finite space.

pub const fn eigenvalue_type(&self) -> &ValueType

Real eigenvalue type, including the quotient dimension A/B.

pub const fn mode_type(&self) -> &ValueType

Mode type, including the metric normalization dimension B^-1/2.

pub fn eigenpair_defects( &self, eigenvalue: &ValueLiteral, mode: &ValueLiteral, ) -> Result<(f64, f64), Diagnostic>

Independently measure a typed candidate against the original pencil.

Returns (relative residual, normalization defect) where the residual is ||Au-lambda Bu|| / (||Au|| + |lambda| ||Bu||) and the defect is |uᴴBu - 1|. A zero residual with zero denominator has relative residual zero. Both quantities are dimensionless; no acceptance tolerance is hidden here. Zero modes, wrong types and nonfinite arithmetic reject.

Trait Implementations§

§

impl<'a> Clone for HermitianEigenproblem<'a>

§

fn clone(&self) -> HermitianEigenproblem<'a>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl<'a> Debug for HermitianEigenproblem<'a>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<Src, Scheme> ApproxFrom<Src, Scheme> for Src
where Scheme: ApproxScheme,

§

type Err = NoError

The error type produced by a failed conversion.
§

fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>

Convert the given value into an approximately equivalent representation.
§

impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Src
where Dst: ApproxFrom<Src, Scheme>, Scheme: ApproxScheme,

§

type Err = <Dst as ApproxFrom<Src, Scheme>>::Err

The error type produced by a failed conversion.
§

fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>

Convert the subject into an approximately equivalent representation.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> ByRef<T> for T

§

fn by_ref(&self) -> &T

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T, Dst> ConvAsUtil<Dst> for T

§

fn approx(self) -> Result<Dst, Self::Err>
where Self: Sized + ApproxInto<Dst>,

Approximate the subject with the default scheme.
§

fn approx_by<Scheme>(self) -> Result<Dst, Self::Err>
where Self: Sized + ApproxInto<Dst, Scheme>, Scheme: ApproxScheme,

Approximate the subject with a specific scheme.
§

impl<T> ConvUtil for T

§

fn approx_as<Dst>(self) -> Result<Dst, Self::Err>
where Self: Sized + ApproxInto<Dst>,

Approximate the subject to a given type with the default scheme.
§

fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>
where Self: Sized + ApproxInto<Dst, Scheme>, Scheme: ApproxScheme,

Approximate the subject to a given type with a specific scheme.
§

fn into_as<Dst>(self) -> Dst
where Self: Sized + Into<Dst>,

Convert the subject to a given type.
§

fn try_as<Dst>(self) -> Result<Dst, Self::Err>
where Self: Sized + TryInto<Dst>,

Attempt to convert the subject to a given type.
§

fn value_as<Dst>(self) -> Result<Dst, Self::Err>
where Self: Sized + ValueInto<Dst>,

Attempt a value conversion of the subject to a given type.
§

impl<T> DistributionExt for T
where T: ?Sized,

§

fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> T
where Self: Distribution<T>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<Src> TryFrom<Src> for Src

§

type Err = NoError

The error type produced by a failed conversion.
§

fn try_from(src: Src) -> Result<Src, <Src as TryFrom<Src>>::Err>

Convert the given value into the subject type.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<Src, Dst> TryInto<Dst> for Src
where Dst: TryFrom<Src>,

§

type Err = <Dst as TryFrom<Src>>::Err

The error type produced by a failed conversion.
§

fn try_into(self) -> Result<Dst, <Src as TryInto<Dst>>::Err>

Convert the subject into the destination type.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<Src> ValueFrom<Src> for Src

§

type Err = NoError

The error type produced by a failed conversion.
§

fn value_from(src: Src) -> Result<Src, <Src as ValueFrom<Src>>::Err>

Convert the given value into an exactly equivalent representation.
§

impl<Src, Dst> ValueInto<Dst> for Src
where Dst: ValueFrom<Src>,

§

type Err = <Dst as ValueFrom<Src>>::Err

The error type produced by a failed conversion.
§

fn value_into(self) -> Result<Dst, <Src as ValueInto<Dst>>::Err>

Convert the subject into an exactly equivalent representation.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T, U> Imply<T> for U
where T: ?Sized, U: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,