Safety, usability, efficiency
Matrix vs array library
Design questions
Data storage
Memory management
Evaluation of expressions
Explosion in the number of operations
Destruction of temporaries
A calculus of matrix types
Error handling
Sparse matrices
Complex matrices
I describe some of the ideas behind this package, some of the decisions that I needed to make and give some details about the way it works. You don't need to read this part of the documentation in order to use the package.
It isn't obvious what is the best way of going about structuring a matrix package. I don't think you can figure this out with thought experiments. Different people have to try out different approaches. And someone else may have to figure out which is best. Or, more likely, the ultimate packages will lift some ideas from each of a variety of trial packages. So, I don't claim my package is an ultimate package, but simply a trial of a number of ideas. The following pages give some background on these ideas.