utv_weighted_inner#

t3toolbox.backend.utv_operations.utv_weighted_inner(variations_a, variations_b, weights, n_stack)#
def utv_weighted_inner(
        variations_a: typ.Tuple,  # UT3Variations .data of A, stack = K + C
        variations_b: typ.Tuple,  # UT3Variations .data of B, stack = K + C (same frame as A)
        weights:      typ.Tuple,  # ONE metric: UT3FrameWeights .data, stack = C
        n_stack:      int,        # leading K+C stack axes to keep; 0 -> a single scalar
) -> NDArray:                     # weighted coordinate inner product, shape = stack_shape[:n_stack]

Weighted coordinate inner product <absorb(W, A), absorb(W, B)> w.r.t. one metric – absorb into both tangents’ variations and dot. Uniform twin of fv_weighted_inner. The caller checks same-frame; the frontend also checks the metric against the frame.

Parameters:
  • variations_a (t3toolbox.backend.common.typ.Tuple)

  • variations_b (t3toolbox.backend.common.typ.Tuple)

  • weights (t3toolbox.backend.common.typ.Tuple)

  • n_stack (int)

Return type:

NDArray