pub struct TensorTrain {
pub cores: Vec<Array3<f64>>,
pub shape: Vec<usize>,
pub ranks: Vec<usize>,
}Expand description
Tensor-train representation of a d-dimensional array.
A[i1,...,id] ≈ G1[i1] * G2[i2] * ... * Gd[id]
where each core Gk has shape [r_{k-1}, n_k, r_k] and the boundary ranks
satisfy r_0 = r_d = 1.
Fields§
§cores: Vec<Array3<f64>>Cores: cores[k] has shape [r_{k-1}, n_k, r_k].
shape: Vec<usize>Mode sizes n_1, ..., n_d.
ranks: Vec<usize>Ranks r_0=1, r_1, ..., r_{d-1}, r_d=1.
Implementations§
Source§impl TensorTrain
impl TensorTrain
Sourcepub fn new(cores: Vec<Array3<f64>>) -> Result<Self, InterpolateError>
pub fn new(cores: Vec<Array3<f64>>) -> Result<Self, InterpolateError>
Create a TT from pre-built cores.
Validates that shapes are consistent.
Sourcepub fn eval(&self, idx: &[usize]) -> Result<f64, InterpolateError>
pub fn eval(&self, idx: &[usize]) -> Result<f64, InterpolateError>
Evaluate the TT at a multi-index idx = [i1, ..., id].
Returns the scalar G1[:,i1,:] * G2[:,i2,:] * ... * Gd[:,id,:] contracted
to a single f64.
Sourcepub fn to_dense(&self) -> Result<ArrayD<f64>, InterpolateError>
pub fn to_dense(&self) -> Result<ArrayD<f64>, InterpolateError>
Reconstruct the full dense tensor.
Warning: exponential cost in d — only practical for small tensors.
Sourcepub fn norm(&self) -> f64
pub fn norm(&self) -> f64
Compute the Frobenius norm of the TT tensor via a transfer-matrix approach.
Sourcepub fn from_dense(
tensor: &ArrayD<f64>,
max_rank: usize,
tol: f64,
) -> Result<Self, InterpolateError>
pub fn from_dense( tensor: &ArrayD<f64>, max_rank: usize, tol: f64, ) -> Result<Self, InterpolateError>
Convenience: build from a dense tensor with TT-SVD.
Trait Implementations§
Source§impl Clone for TensorTrain
impl Clone for TensorTrain
Source§fn clone(&self) -> TensorTrain
fn clone(&self) -> TensorTrain
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 moreAuto Trait Implementations§
impl Freeze for TensorTrain
impl RefUnwindSafe for TensorTrain
impl Send for TensorTrain
impl Sync for TensorTrain
impl Unpin for TensorTrain
impl UnsafeUnpin for TensorTrain
impl UnwindSafe for TensorTrain
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
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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,
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.