Mathematics: Algebra

The Vector class is for n-dimensional vectors where n is known at compile time. The VectorN classes derive from Vector and add constructors for the specific dimension N as well as specialized operations for that dimension. GVector is for n-dimensional vectors where n is known only at run time. The arithmetic and geometric operations are defined outside the class members. This allows instantiating the classes with scalar types other than floating-point types; for example, you can instantiate vectors of exact arithmetic types which do not support square root operations that are inherent in length computations.
The Matrix class is for n-by-m matrices where n and m are known at compile time. The MatrixNxN classes derive from Matrix and add constructors for square matrices of the specified size as well as specialized operations for that size. GMatrix is for n-by-m matrices where n and m are known only at run time. The arithmetic and geometric operations are defined outside the class members. This allows instantiating the classes with scalar types other than floating-point types; for example, you can instantiate matrices of exact arithmetic types which do not support square root operations that are inherent in length computations. BandedMatrix represents matrices whose entries are all zero outside a band of diagonal-subdiagonal entries. The typical example is a tridiagonal matrix.
A rotation can be represented by an axis-angle pair, by Euler angles with a specified order of coordinate-axis rotations, by unit-length quaternions, or by rotation matrices. The class Rotation supports conversions between the representations. The axis-angle and rotation matrix representations can be 3D or embedded in 4D.
Linear and affine change of bases to convert points and transformations from one coordinate system to another. This provides a solution to the classic question about how to convert between left-handed and right-handed coordinates. The implementation for converting transformations takes note of the matrix-vector multiplcation convention that you specify: vector-on-the-right, meaning the transformation M is applied to a vector V as M*V; or vector-on-the-left, meaning the application is VT*M.
Matrix transformations that involve rotation, translation and scaling. This is used in the scene graph management applications.
Representation of polynomials of 1 variable. Support for arithmetic operations between polynomials, evaluation of polynomials, derivative and inversion, and the Euclidean algorithm for factoring p(x) = q(x)*d(x) + r(t), where d(x) is the divisor, q(x) is the quotient, and r(x) is the remainder.