Skip to main content

TensorReadEinsumExt

Trait TensorReadEinsumExt 

Source
pub trait TensorReadEinsumExt {
    // Required methods
    fn einsum_read(
        &self,
        subscripts: &str,
        session: &mut dyn BackendSession,
    ) -> Result<Tensor>;
    fn einsum_read_notation(
        &self,
        notation: &EinsumNotation,
        session: &mut dyn BackendSession,
    ) -> Result<Tensor>;
    fn einsum_read_subscripts(
        &self,
        subscripts: &EinsumSubscripts,
        session: &mut dyn BackendSession,
    ) -> 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::{BackendSessionHost, 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 = backend.with_backend_session(|session| inputs.einsum_read("ij,j->i", session))?;
assert_eq!(out.shape(), &[2]);

Required Methods§

Source

fn einsum_read( &self, subscripts: &str, session: &mut dyn BackendSession, ) -> Result<Tensor>

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

§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.

Source

fn einsum_read_notation( &self, notation: &EinsumNotation, session: &mut dyn BackendSession, ) -> Result<Tensor>

Execute an einsum from rank-unresolved notation over read-only inputs.

§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.

Source

fn einsum_read_subscripts( &self, subscripts: &EinsumSubscripts, session: &mut dyn BackendSession, ) -> Result<Tensor>

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

§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".

Implementations on Foreign Types§

Source§

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

Source§

fn einsum_read( &self, subscripts: &str, session: &mut dyn BackendSession, ) -> Result<Tensor>

Source§

fn einsum_read_notation( &self, notation: &EinsumNotation, session: &mut dyn BackendSession, ) -> Result<Tensor>

Source§

fn einsum_read_subscripts( &self, subscripts: &EinsumSubscripts, session: &mut dyn BackendSession, ) -> Result<Tensor>

Source§

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

Source§

fn einsum_read( &self, subscripts: &str, session: &mut dyn BackendSession, ) -> Result<Tensor>

Source§

fn einsum_read_notation( &self, notation: &EinsumNotation, session: &mut dyn BackendSession, ) -> Result<Tensor>

Source§

fn einsum_read_subscripts( &self, subscripts: &EinsumSubscripts, session: &mut dyn BackendSession, ) -> Result<Tensor>

Implementors§