--- /dev/null
+#ifndef MSP_LINAL_SQUAREMATRIX_H_
+#define MSP_LINAL_SQUAREMATRIX_H_
+
+#include "matrix.h"
+
+namespace Msp {
+namespace LinAl {
+
+template<typename T, unsigned S>
+class SquareMatrix: public Matrix<T, S, S>
+{
+public:
+ SquareMatrix();
+ SquareMatrix(const T *);
+ template<typename U>
+ SquareMatrix(const Matrix<U, S, S> &);
+ static SquareMatrix identity();
+
+ SquareMatrix &operator*=(const SquareMatrix &);
+
+ void invert();
+};
+
+} // namespace LinAl
+} // namespace Msp
+
+#endif