ManifoldGeometry.retract#

t3toolbox.manifold.ManifoldGeometry.retract(p)#
def retract(
        self,
        p:  T3Tangent,  # step (a tangent at the current point's frame)
) -> t3.TuckerTensorTrain:  # retracted point on M, at p's frame ranks

Retract the step p to the manifold: shifted doubled-rank embedding, truncated to frame ranks.

Forms base point + p and truncates back to p’s frame ranks via the implicit T3-SVD (Algorithm 10). The current point is carried by p.frame (its orthonormal frame), so no separate point argument is needed.

Safe mode requires p’s frame to be orthogonal (raises otherwise); skipped under safety.unsafe() / a jax trace. ORTH only – retract is gauge-invariant. Minimal rank is a documented caveat, not a precondition: on a non-minimal frame retract stays a valid first-order retraction but drops the numerically-redundant rank rather than preserving it strictly (docs/numerical_contracts.md).

Parameters:

p (T3Tangent)

Return type:

TuckerTensorTrain