
What is Math Objects? Math Objects is a math template library written in C++ using generic programming techniques. It can handle different kinds of mathematical objects in a consistent way. In order to use the "Math Objects" library, the user only has to include the header files he needs (e.g. Matrix.h, Polynomial.h etc.). In order to compile the library the user needs an ISO/IEC 14882:1998 standard compliant C++ compiler (e.g. one that supports partial template specializations). The math library has math objects like matrices, polynomials, rational functions, extended precision numbers, complex numbers etc. that can be handled in a similar way like basic numerical types (e.g. integers or floating point numbers). One can access properties of a mathematical type through a (partial) specialization of a traits class for that type (AlgebraicTraits). Having the traits classes to expose properties of mathematical objects, one can define for example matrices of polynomials having extended precision complex coefficients and apply to them basic linear algebra algorithms using normal C++ syntax. This library also implements two functions using two deterministic algorithms that compute the Smith form for polynomial matrices, and the SmithMcMillan form of a transfer functions matrix also keeping track of the transformation matrices. These algorithms can be used to describe a MIMO (multi inputmulti output) system by means of its zeros and poles and also give the MFD (matrix fraction description) of the system.
