ut3_norm ======== .. py:function:: t3toolbox.backend.ut3_linalg.ut3_norm(x, use_orthogonalization = True) .. code-block:: python def ut3_norm( x: UT3Data, # (tucker_supercore, tt_supercore, shape, masks) use_orthogonalization: bool = True, # True (default): orthogonalize first -- the stable path ) -> NDArray: # HS norm ‖T(x)‖, shape=stack_shape Hilbert-Schmidt norm of a uniform Tucker tensor train -- the twin of the ragged ``t3_norm``. ``use_orthogonalization=True`` (default) left-orthogonalizes first and reads the last core's norm (numerically stable; the zipper alternative accumulates roundoff along the chain); its jax derivative is the exact multilinear rule above, so ``jax.grad`` through it is finite on any padded train. ``False`` is the raw zipper ``sqrt()`` (cheaper, less stable; differentiable by plain autodiff).