single_tensor_einsum

Function single_tensor_einsum 

Source
pub fn single_tensor_einsum<T>(
    src: &StridedView<'_, T>,
    input_ids: &[char],
    output_ids: &[char],
    size_dict: Option<&HashMap<char, usize>>,
) -> Result<StridedArray<T>>
where T: Copy + ElementOpApply + Send + Sync + Add<Output = T> + Zero + Default,
Expand description

Execute a single-tensor einsum operation (5-step pipeline).

Given input with axis IDs input_ids and desired output_ids:

  1. Identify repeated input indices -> diagonal_view (stride trick, zero-copy)
  2. Identify indices to sum out -> reduce_axis
  3. Permute to output order -> copy_into
  4. Repeat: broadcast to NEW dimensions (output labels not in input, via size_dict)
  5. Duplicate: repeated output indices (e.g. “i->ii”, diagonal write)

Pass size_dict to specify sizes for output indices not present in the input.