pub fn einsum<B: TensorBackend>(
engine: &mut Engine<B>,
inputs: &[&TracedTensor],
subscripts: &str,
) -> Result<TracedTensor>Expand description
N-ary einsum with default FLOPS-first optimization.
Builds a lazy computation graph. Call .eval(&mut engine) on the
result to trigger execution.
§Examples
ⓘ
use tenferro::einsum::einsum;
use tenferro::engine::Engine;
use tenferro::traced::TracedTensor;
// Matrix multiply
let c = einsum(&mut engine, &[&a, &b], "ij,jk->ik");
// 3-tensor chain multiply
let d = einsum(&mut engine, &[&a, &b, &c], "ij,jk,kl->il");
// Inner product
let s = einsum(&mut engine, &[&x, &y], "i,i->");
// Row sum (unary)
let r = einsum(&mut engine, &[&a], "ij->i");
// Hadamard product
let h = einsum(&mut engine, &[&a, &b], "ij,ij->ij");
// Outer product
let o = einsum(&mut engine, &[&x, &y], "i,j->ij");