diff --git a/dune/common/test/fmatrixtest.cc b/dune/common/test/fmatrixtest.cc index 0723dc013f7344747648e3e7b1bd85aae83bea8f..be00823f92d003ce3e84b2f8c0d438ed760a9361 100644 --- a/dune/common/test/fmatrixtest.cc +++ b/dune/common/test/fmatrixtest.cc @@ -241,6 +241,60 @@ void test_matrix() if (std::abs(B.infinity_norm()) > 1e-12) DUNE_THROW(FMatrixError,"Axpy test failed!"); } + { + FieldMatrix<K,n,n+1> A; + for(size_type i=0; i<A.N(); ++i) + for(size_type j=0; j<A.M(); ++j) + A[i][j] = i; + const FieldMatrix<K,n,n+1>& Aref = A; + + + FieldMatrix<K,n+1,n+1> B; + for(size_type i=0; i<B.N(); ++i) + for(size_type j=0; j<B.M(); ++j) + B[i][j] = i; + const FieldMatrix<K,n+1,n+1>& Bref = B; + + FieldMatrix<K,n,n> C; + for(size_type i=0; i<C.N(); ++i) + for(size_type j=0; j<C.M(); ++j) + C[i][j] = i; + const FieldMatrix<K,n,n>& Cref = C; + + FieldMatrix<K,n,n+1> AB = Aref.rightmultiplyany(B); + for(size_type i=0; i<AB.N(); ++i) + for(size_type j=0; j<AB.M(); ++j) + if (std::abs<double>(AB[i][j] - i*n*(n+1)/2) > 1e-10) + DUNE_THROW(FMatrixError,"Rightmultiplyany test failed!"); + + FieldMatrix<K,n,n+1> AB2 = A; + AB2.rightmultiply(B); + AB2 -= AB; + if (std::abs(AB2.infinity_norm() > 1e-10)) + DUNE_THROW(FMatrixError,"Rightmultiply test failed!"); + + FieldMatrix<K,n,n+1> AB3 = Bref.leftmultiplyany(A); + AB3 -= AB; + if (std::abs(AB3.infinity_norm() > 1e-10)) + DUNE_THROW(FMatrixError,"Leftmultiplyany test failed!"); + + FieldMatrix<K,n,n+1> CA = Aref.leftmultiplyany(C); + for(size_type i=0; i<CA.N(); ++i) + for(size_type j=0; j<CA.M(); ++j) + if (std::abs<double>(CA[i][j] - i*n*(n-1)/2) > 1e-10) + DUNE_THROW(FMatrixError,"Leftmultiplyany test failed!"); + + FieldMatrix<K,n,n+1> CA2 = A; + CA2.leftmultiply(C); + CA2 -= CA; + if (std::abs(CA2.infinity_norm() > 1e-10)) + DUNE_THROW(FMatrixError,"Leftmultiply test failed!"); + + FieldMatrix<K,n,n+1> CA3 = Cref.rightmultiplyany(A); + CA3 -= CA; + if (std::abs(CA3.infinity_norm() > 1e-10)) + DUNE_THROW(FMatrixError,"Rightmultiplyany test failed!"); + } } int test_determinant()