t3_broadcast_to_common_stack#

t3toolbox.backend.t3_operations.t3_broadcast_to_common_stack(tucker_cores, tt_cores)#
def t3_broadcast_to_common_stack(
        tucker_cores: typ.Sequence[NDArray],  # each shape = stack_i + (n, N)
        tt_cores:     typ.Sequence[NDArray],  # each shape = stack_i + (rL, n, rR)
) -> typ.Tuple[
    typ.Tuple[NDArray, ...],  # tucker_cores, each shape = stack + (n, N)
    typ.Tuple[NDArray, ...],  # tt_cores,     each shape = stack + (rL, n, rR)
]:

Broadcast every core of a T3 up to the common (broadcast) stack of all its cores.

Cores may carry different but broadcastable leading stack axes – e.g. a single-core-replacement term (fv_to_t3) or a tangent term mixes a V+G-stacked variation core with G-stacked frame cores (the shared base point replicated over the tangent stack V). Returns the cores all stacked at the common np.broadcast_shapes stack, so the result is a valid uniform-stack T3. A no-op when every core already shares one stack.

Parameters:
  • tucker_cores (t3toolbox.backend.common.typ.Sequence[NDArray])

  • tt_cores (t3toolbox.backend.common.typ.Sequence[NDArray])

Return type:

t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[NDArray, Ellipsis], t3toolbox.backend.common.typ.Tuple[NDArray, Ellipsis]]