From ab1cf46791e6f0ebf4c39bac354617d9a7bbd9aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Carsten=20Gr=C3=A4ser?= <graeser@dune-project.org>
Date: Mon, 9 Nov 2009 21:46:53 +0000
Subject: [PATCH] Added test for
 rightmultiply,leftmultiply,rightmultiplyany,leftmultiplyany

[[Imported from SVN: r5703]]
---
 dune/common/test/fmatrixtest.cc | 54 +++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/dune/common/test/fmatrixtest.cc b/dune/common/test/fmatrixtest.cc
index 0723dc013..be00823f9 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()
-- 
GitLab