https://code.dlang.org/packages/gged/~main
I have been working on extending the functionality of multidimensional arrays using mir.ndslice, and now einstein summation is available.
It may not be practical, but it can be described nicely, like below, so I will introduce this.
auto A = iota(9.).array.gged!double(3,3);
auto x = iota(3.).gged!double(3);
auto Ax = Einsum | A.ij*x.j; // [5, 14, 23]