[][src]Struct ndarray_einsum_beta::Contraction

pub struct Contraction {
    pub operand_indices: Vec<Vec<char>>,
    pub output_indices: Vec<char>,
    pub summation_indices: Vec<char>,
}

A Contraction contains the result of parsing an einsum-formatted string.

let contraction = Contraction::new("ij,jk->ik").unwrap();
assert_eq!(contraction.operand_indices, vec![vec!['i', 'j'], vec!['j', 'k']]);
assert_eq!(contraction.output_indices, vec!['i', 'k']);
assert_eq!(contraction.summation_indices, vec!['j']);

let contraction = Contraction::new("ij,jk").unwrap();
assert_eq!(contraction.operand_indices, vec![vec!['i', 'j'], vec!['j', 'k']]);
assert_eq!(contraction.output_indices, vec!['i', 'k']);
assert_eq!(contraction.summation_indices, vec!['j']);

Fields

operand_indices: Vec<Vec<char>>

A vector with as many elements as input operands, where each member of the vector is a Vec<char> with each char representing the label for each axis of the operand.

output_indices: Vec<char>

Specifies which axes the resulting tensor will contain

summation_indices: Vec<char>

Contains the axes that will be summed over (a.k.a contracted) by the operation.

Methods

impl Contraction[src]

pub fn new(input_string: &str) -> Result<Self, &'static str>[src]

Validates and creates a Contraction from an einsum-formatted string.

fn from_parse(parse: &EinsumParse) -> Result<Self, &'static str>[src]

If output_indices has been specified in the parse (i.e. explicit case), e.g. "ij,jk->ik", simply converts the strings to Vec<char>s and passes them to Contraction::from_indices. If the output indices haven't been specified, e.g. "ij,jk", figures out which ones aren't duplicated and hence summed over, sorts them alphabetically, and uses those as the output indices.

fn from_indices(
    operand_indices: &[Vec<char>],
    output_indices: &[char]
) -> Result<Self, &'static str>
[src]

Validates and creates a Contraction from a slice of Vec<char>s containing the operand indices, and a slice of char containing the desired output indices.

Trait Implementations

impl Clone for Contraction[src]

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Debug for Contraction[src]

Auto Trait Implementations

impl Send for Contraction

impl Sync for Contraction

Blanket Implementations

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]