For those of you who might be into graphics, openGL rotation, instead of using decomposed Euler angles or Tait–Bryan angles, use a scalar angle and a rotation axis. That's why mtx supports the mtx['a'] "angle" function and the mtx['c'] cross product function--the cross product of two vectors is the rotation axis around which you rotate to get from one vector to the other. (This kind of rotation specification makes it easy to do smooth rotations in animation.)
Added eigenvectors/eigenvalues, vector internal angle calculation, and
identity matrix generation.