Crates.io | einsum |
lib.rs | einsum |
version | 0.1.0 |
source | src |
created_at | 2024-02-21 00:44:15.259629 |
updated_at | 2024-02-21 00:44:15.259629 |
description | A Rust implementation of `numpy`'s Einstein summation convention for the `ndarray` crate with compile-time path optimization. |
homepage | |
repository | https://github.com/Case-Rocket-Team/einsum |
max_upload_size | |
id | 1147406 |
size | 10,190 |
Install python
and the opt_einsum
package.
The syntax is similar to numpy
's. For each input argument, use (expr).(axes)
.
Then use a fat arrow =>
, and for the output axes use .(axes)
and a semicolon ;
.
After the semicolon, you need to pass the dimensions of each of the axes in order for the
macro to optimize the path at compiletime. See example below
let y: Array<f64, _> = einsum!(a.mi, b.nj, c.ijpl, d.op, e.ql => .mnoq; i 2, j 2, l 10, m 40, n 40, o 8, p 7, q 6);