3.8. horton.matrix – One-, two-, three- and four-dimensional matrix implementations

The purpose of this package is to provide a generic API for different implementations of real-valued double precision matrix storage and operations.

This module assumes physicists notation for the two-particle operators.

One should use these matrix implementations without accessing the internals of each class, i.e. without accessing attributes or methods that start with an underscore.

In order to avoid temporaries when working with arrays, the methods do not return arrays. Instead such methods are an in place operation or have output arguments. This forces the user to allocate all memory in advance, which can then be moved out of the loops. The initial implementation (the Dense… classes) are just a proof of concept and may therefore contain internals that still make temporaries. This fixed later with an alternative implementation.