Skip to main content

TensorReadEinsumExt

Trait TensorReadEinsumExt 

Source
pub trait TensorReadEinsumExt {
    // Required methods
    fn einsum_read<B: TensorBackend>(
        &self,
        subscripts: &str,
        backend: &mut B,
    ) -> Result<Tensor>;
    fn einsum_read_subscripts<B: TensorBackend>(
        &self,
        subscripts: &EinsumSubscripts,
        backend: &mut B,
    ) -> Result<Tensor>;
}
Expand description

Backend-explicit einsum methods for TensorRead inputs.

Use this surface when an input is a borrowed tensor view rather than an owned compact Tensor. The _read suffix follows the repository-wide convention for APIs that explicitly accept read-oriented borrowed inputs.

§Examples

use tenferro_cpu::CpuBackend;
use tenferro_einsum::TensorReadEinsumExt;
use tenferro_tensor::{Tensor, TensorRead, TensorView};

let shape = [2, 3];
let data = [1.0_f64; 6];
let rhs = Tensor::from_vec_col_major(vec![3], vec![1.0_f64; 3]).unwrap();
let inputs = [
    TensorRead::from_view(TensorView::f64(&shape, &data)?),
    TensorRead::from_tensor(&rhs),
];
let mut backend = CpuBackend::new();

let out = inputs.einsum_read("ij,j->i", &mut backend)?;
assert_eq!(out.shape(), &[2]);

Required Methods§

Source

fn einsum_read<B: TensorBackend>( &self, subscripts: &str, backend: &mut B, ) -> Result<Tensor>

Execute an einsum from string notation over read-only tensor inputs.

Source

fn einsum_read_subscripts<B: TensorBackend>( &self, subscripts: &EinsumSubscripts, backend: &mut B, ) -> Result<Tensor>

Execute an einsum from parsed integer-label subscripts over read-only tensor inputs.

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.

Implementations on Foreign Types§

Source§

impl<'a> TensorReadEinsumExt for [TensorRead<'a>]

Source§

fn einsum_read<B: TensorBackend>( &self, subscripts: &str, backend: &mut B, ) -> Result<Tensor>

Source§

fn einsum_read_subscripts<B: TensorBackend>( &self, subscripts: &EinsumSubscripts, backend: &mut B, ) -> Result<Tensor>

Source§

impl<'a, const N: usize> TensorReadEinsumExt for [TensorRead<'a>; N]

Source§

fn einsum_read<B: TensorBackend>( &self, subscripts: &str, backend: &mut B, ) -> Result<Tensor>

Source§

fn einsum_read_subscripts<B: TensorBackend>( &self, subscripts: &EinsumSubscripts, backend: &mut B, ) -> Result<Tensor>

Implementors§