pub trait TensorEinsumExt {
// Required methods
fn einsum(
&self,
subscripts: &str,
session: &mut dyn BackendSession,
) -> Result<Tensor>;
fn einsum_notation(
&self,
notation: &EinsumNotation,
session: &mut dyn BackendSession,
) -> Result<Tensor>;
fn einsum_subscripts(
&self,
subscripts: &EinsumSubscripts,
session: &mut dyn BackendSession,
) -> Result<Tensor>;
}Expand description
Backend-explicit einsum methods for dtype-erased concrete tensors.
Implementations are provided for slices and fixed-size arrays of
Tensor references, so both inputs.as_slice().einsum(...) and
[&lhs, &rhs].einsum(...) work.
§Examples
use tenferro_cpu::CpuBackend;
use tenferro_einsum::TensorEinsumExt;
use tenferro_tensor::{BackendSessionHost, Tensor};
let lhs = Tensor::from_vec_col_major(vec![2, 3], vec![1.0_f64; 6]).unwrap();
let rhs = Tensor::from_vec_col_major(vec![3, 4], vec![1.0_f64; 12]).unwrap();
let mut backend = CpuBackend::new();
let out = backend.with_backend_session(|session| {
[&lhs, &rhs].einsum("ij,jk->ik", session)
})?;
assert_eq!(out.shape(), &[2, 4]);Required Methods§
Sourcefn einsum(
&self,
subscripts: &str,
session: &mut dyn BackendSession,
) -> Result<Tensor>
fn einsum( &self, subscripts: &str, session: &mut dyn BackendSession, ) -> Result<Tensor>
Execute an einsum from string notation.
§Errors
Returns Error::InvalidSubscripts for malformed notation,
Error::Validation with shape, rank, or dtype payloads for an invalid
contraction, or Error::Tensor for a typed backend failure.
Sourcefn einsum_notation(
&self,
notation: &EinsumNotation,
session: &mut dyn BackendSession,
) -> Result<Tensor>
fn einsum_notation( &self, notation: &EinsumNotation, session: &mut dyn BackendSession, ) -> Result<Tensor>
Execute an einsum from rank-unresolved string/programmatic notation.
§Examples
use tenferro_einsum::{EinsumAxis, EinsumNotation};
let notation = EinsumNotation::new(&[&[EinsumAxis::Ellipsis]], &[]);
assert_eq!(notation.input_count(), 1);§Errors
Returns a typed validation or backend error when notation, shapes, or execution are invalid.
Sourcefn einsum_subscripts(
&self,
subscripts: &EinsumSubscripts,
session: &mut dyn BackendSession,
) -> Result<Tensor>
fn einsum_subscripts( &self, subscripts: &EinsumSubscripts, session: &mut dyn BackendSession, ) -> Result<Tensor>
Execute an einsum from parsed integer-label subscripts.
§Errors
Returns Error::Validation with shape, rank, or dtype payloads for an
invalid contraction, or Error::Tensor for a typed backend failure.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".