| Crates.io | einsum |
| lib.rs | einsum |
| version | 0.1.0 |
| created_at | 2024-02-21 00:44:15.259629+00 |
| updated_at | 2024-02-21 00:44:15.259629+00 |
| 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);