The hTensor package

This is an experimental library for multidimensional arrays,
oriented to support simple tensor computations and multilinear
algebra.

Array dimensions have an "identity" which is preserved
in data manipulation. Indices are explicitly selected by name in
expressions, and Einstein's summation convention for repeated indices
is automatically applied.

The library has a purely functional interface: arrays are immutable,
and operations typically work on whole structures which can be assembled
and decomposed using simple primitives. Arguments are automatically made conformant
by replicating them along extra dimensions appearing in an operation.
There is preliminary support for Geometric Algebra and for solving multilinear systems.