]> git.tdb.fi Git - libs/math.git/blobdiff - tests/matrix.cpp
Move a #include to where it's actually used
[libs/math.git] / tests / matrix.cpp
index 5b303dbe8cd99f706d4ce4889d766ee71f291657..6f578883e6d047d83ee245e000b9ce8b64f1ea2a 100644 (file)
@@ -1,11 +1,19 @@
+#include <limits>
 #include <msp/linal/matrix.h>
 #include <msp/linal/squarematrix.h>
 #include <msp/test/test.h>
 
+using namespace std;
 using namespace Msp;
 
 class MatrixTests: public Test::RegisteredTest<MatrixTests>
 {
+private:
+       typedef LinAl::SquareMatrix<double, 2> Matrix2d;
+       typedef LinAl::Matrix<double, 3, 2> Matrix3x2d;
+       typedef LinAl::Matrix<double, 2, 3> Matrix2x3d;
+       typedef LinAl::SquareMatrix<double, 3> Matrix3d;
+
 public:
        MatrixTests();
 
@@ -20,7 +28,7 @@ private:
 MatrixTests::MatrixTests()
 {
        add(&MatrixTests::multiply, "Multiplication");
-       add(&MatrixTests::invert,   "Inversion");
+       add(&MatrixTests::invert, "Inversion");
 }
 
 void MatrixTests::multiply()
@@ -33,18 +41,19 @@ void MatrixTests::multiply()
                9, 3, 9, 6
        };
 
-       LinAl::Matrix<double, 3, 2> a(data);
-       LinAl::Matrix<double, 2, 3> b(data+6);
-       EXPECT_EQUAL(a*b, (LinAl::Matrix<double, 3, 3>(data+12)));
-       EXPECT_EQUAL(b*a, (LinAl::Matrix<double, 2, 2>(data+21)));
+       Matrix3x2d a(data);
+       Matrix2x3d b(data+6);
+       EXPECT_EQUAL(a*b, Matrix3d(data+12));
+       EXPECT_EQUAL(b*a, Matrix2d(data+21));
 }
 
 template<typename T, unsigned N>
 bool is_identity(const LinAl::Matrix<T, N, N> &m)
 {
+       static const T limit = numeric_limits<T>::epsilon()*4;
        for(unsigned i=0; i<N; ++i)
                for(unsigned j=0; j<N; ++j)
-                       if(abs(T(i==j)-m(i, j))>1e-10)
+                       if(abs(T(i==j)-m(i, j))>limit)
                                return false;
        return true;
 }
@@ -56,7 +65,7 @@ void MatrixTests::invert()
                1, 4, 2, 4, 8, 6, 2, 2, 4
        };
 
-       LinAl::SquareMatrix<double, 3> m(data);
-       LinAl::SquareMatrix<double, 3> i = LinAl::invert(m);
+       Matrix3d m(data);
+       Matrix3d i = LinAl::invert(m);
        EXPECT(is_identity(i*m));
 }