> <\body> The class C,V\>|mmx::matrix> implements matrices over . All the available algorithms have a naive implementation in |algebramix/matrix_naive.hpp>. <\cpp-code> #include \algebramix/matrix.hpp\ ... matrix\C,V\ M (C (0), 3, 2) // 3 x 2 matrix filled with 0 M (0,0)= C(0); M (1,0)= C(1); ... matrix\C,V\ N= M * transpose (M); mmout \\ M \\ "\\n"; mmout \\ det (N) \\ "\\n"; mmout \\ column_reduced_echelon (M) \\ "\\n"; As for vectors, matrices have a variant for unrolling loops, namely s,V\>|mmx::matrix_unrolled>, where represents the number of steps to be unrolled. Strassen product is implemented in the variant V\>|mmx::matrix_strassen>. Support for SIMD instructions is available through the variant n,m,V\>|mmx::matrix_simd>: is the size for unrolling SIMD data and is the one for unrolling the data of the original type. Only SSE2 and SSE3 are supported at the present time. Multi-threading is possible with the variant V\>|mmx::matrix_threads>. .hpp|algebramix/matrix_double.hpp> contains a recommanded default variant for . .hpp|algebramix/matrix_int.hpp> contains a recommanded default variant for hardware integers. .hpp|algebramix/matrix_modular_int.hpp> contains a recommanded default variant for modulars over hardware integers. .hpp|algebramix/matrix_integer.hpp> contains a recommanded default variant for integers. interface> <\session|mathemagix|default> <\unfolded-io> <|unfolded-io> A == [ (i :\ Rational) + j \| i in 0..5 \|\| j in 0..5 ] <|unfolded-io> ||||>>|]>>: > <\unfolded-io> <|unfolded-io> det A <|unfolded-io> : <\unfolded-io> <|unfolded-io> row_echelon A <|unfolded-io> ||||>>|]>>: > <\unfolded-io> <|unfolded-io> rank A <|unfolded-io> : <\unfolded-io> <|unfolded-io> ker A <|unfolded-io> ||||>>|]>>: > . If you don't have this file, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.> <\initial> <\collection>