pub trait TypedTensorEinsumExt<T: TensorScalar> {
// Required methods
fn einsum<B: TensorBackend>(
&self,
subscripts: &str,
backend: &mut B,
) -> Result<TypedTensor<T>>;
fn einsum_subscripts<B: TensorBackend>(
&self,
subscripts: &EinsumSubscripts,
backend: &mut B,
) -> Result<TypedTensor<T>>;
}Expand description
Backend-explicit einsum methods for typed concrete tensors.
The result keeps the same scalar type as the inputs. Mixed dtypes should use
TensorEinsumExt on dtype-erased Tensor values instead.
§Examples
use tenferro_cpu::CpuBackend;
use tenferro_einsum::TypedTensorEinsumExt;
use tenferro_tensor::TypedTensor;
let lhs = TypedTensor::<f64>::from_vec_col_major(vec![2, 3], vec![1.0; 6]).unwrap();
let rhs = TypedTensor::<f64>::from_vec_col_major(vec![3, 4], vec![1.0; 12]).unwrap();
let mut backend = CpuBackend::new();
let out = [&lhs, &rhs].einsum("ij,jk->ik", &mut backend)?;
assert_eq!(out.shape(), &[2, 4]);Required Methods§
Sourcefn einsum<B: TensorBackend>(
&self,
subscripts: &str,
backend: &mut B,
) -> Result<TypedTensor<T>>
fn einsum<B: TensorBackend>( &self, subscripts: &str, backend: &mut B, ) -> Result<TypedTensor<T>>
Execute an einsum from string notation.
Sourcefn einsum_subscripts<B: TensorBackend>(
&self,
subscripts: &EinsumSubscripts,
backend: &mut B,
) -> Result<TypedTensor<T>>
fn einsum_subscripts<B: TensorBackend>( &self, subscripts: &EinsumSubscripts, backend: &mut B, ) -> Result<TypedTensor<T>>
Execute an einsum from parsed integer-label subscripts.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.