t3svd#
- t3toolbox.backend.t3_svd.t3svd(x, max_tt_ranks=None, max_tucker_ranks=None, rtol=None, atol=None, assume_orthogonal=False)#
def t3svd( x: typ.Tuple[ typ.Tuple[NDArray,...], # tucker_cores typ.Tuple[NDArray,...], # tt_cores ], max_tt_ranks: typ.Sequence[int] = None, # len=d+1 max_tucker_ranks: typ.Sequence[int] = None, # len=d rtol: float = None, atol: float = None, assume_orthogonal: bool = False, ) -> typ.Tuple[ typ.Tuple[ typ.Tuple[NDArray, ...], # new_tucker_cores typ.Tuple[NDArray, ...], # new_tt_cores ], typ.Tuple[NDArray,...], # Tucker singular values, len=d typ.Tuple[NDArray,...], # TT singular values, len=d+1 ]:
Compute (truncated) T3-SVD of TuckerTensorTrain.
Implicit T3-SVD (Algorithm 10), Appendix A.2, of Alger et al. (2026), “Tucker Tensor Train Taylor Series” (arXiv:2603.21141) – the basic algorithm, analogous to Oseledets’ TT-SVD.
Orthogonalize, then a single left-to-right truncating sweep. The result is always left-orthogonal. It is not re-tuned to minimal ranks: a hard rank cap can leave a Tucker rank / bond above its structural minimum (non-minimal), exactly as the paper’s algorithm does. To reduce to minimal ranks, follow with
t3_rank_adjustment_sweep()– the output is left-orthogonal, sot3_rank_adjustment_sweep(x, 'right_to_left')minimizes it; check withTuckerTensorTrain.has_minimal_ranks. Seedocs/t3svd_minimal_ranks.md.assume_orthogonal=Trueskips the initial orthogonalization, asserting the input is already right-orthogonal (Tucker down-orthogonal + TT right-orthogonal – the form the L->R sweep needs). Not enforced (verify withTuckerTensorTrain.is_right_orthogonal). A left-orthogonal input must be reversed by the caller (a left-orthogonal T3 reversed is right-orthogonal).- Parameters:
x (t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[NDArray, Ellipsis], t3toolbox.backend.common.typ.Tuple[NDArray, Ellipsis]])
max_tt_ranks (t3toolbox.backend.common.typ.Sequence[int])
max_tucker_ranks (t3toolbox.backend.common.typ.Sequence[int])
rtol (float)
atol (float)
assume_orthogonal (bool)
- Return type:
t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[NDArray, Ellipsis], t3toolbox.backend.common.typ.Tuple[NDArray, Ellipsis]], t3toolbox.backend.common.typ.Tuple[NDArray, Ellipsis], t3toolbox.backend.common.typ.Tuple[NDArray, Ellipsis]]