MyraMath
vertcat


Source: tests/dense/vertcat.cpp

1 // ========================================================================= //
2 // This file is part of MyraMath, copyright (c) 2014-2019 by Ryan A Chilton //
3 // and distributed by MyraCore, LLC. See LICENSE.txt for license terms. //
4 // ========================================================================= //
5 
11 // Containers.
13 #include <myramath/dense/Matrix.h>
16 
17 // Algorithms.
18 #include <myramath/dense/vertcat.h>
20 
21 // Reporting.
22 #include <tests/myratest.h>
23 
24 using namespace myra;
25 
26 namespace {
27 
28 // Test vertcat(A,B)
29 template<class Number> void test1(typename ReflectPrecision<Number>::type tolerance)
30  {
31  typedef typename ReflectPrecision<Number>::type Precision;
32  auto A = Matrix<Number>::random(6,6);
33  auto B = vertcat( A.top(2), A.bottom(4) );
34  Precision error = frobenius(A-B);
35  myra::out() << " |A - vertcat(a,a)| = " << error << std::endl;
36  REQUIRE(error < tolerance);
37  }
38 
39 #ifdef MYRAMATH_ENABLE_CPP11
40 
41 // Test vertcat({A,B,C})
42 template<class Number> void test2(typename ReflectPrecision<Number>::type tolerance)
43  {
44  typedef typename ReflectPrecision<Number>::type Precision;
45  auto A = Matrix<Number>::random(7,7);
46  auto B = vertcat( A.add_const().rows({2,3,2}) );
47  Precision error = frobenius(A-B);
48  myra::out() << " |A - vertcat(...)| = " << error << std::endl;
49  REQUIRE(error < tolerance);
50  }
51 
52 #endif
53 
54 } // namespace
55 
56 ADD_TEST("vertcat","[dense]")
57  {
58  test1<NumberS>(1.0e-5f);
59  test1<NumberD>(1.0e-10);
60  test1<NumberC>(1.0e-5f);
61  test1<NumberZ>(1.0e-10);
62  }
63 
64 #ifdef MYRAMATH_ENABLE_CPP11
65 
66 ADD_TEST("vertcat_cpp11","[dense]")
67  {
68  test2<NumberS>(1.0e-5f);
69  test2<NumberD>(1.0e-10);
70  test2<NumberC>(1.0e-5f);
71  test2<NumberZ>(1.0e-10);
72  }
73 
74 #endif
75 
Interface class for representing subranges of dense Matrix&#39;s.
Container of values, allows random (i) access.
Routines for computing Frobenius norms of various algebraic containers.
static Matrix< Number > random(int I, int J)
Generates a random Matrix of specified size.
Definition: Matrix.cpp:353
Definition: syntax.dox:1
General purpose dense matrix container, O(i*j) storage.
Reflects Precision trait for a Number, scalar Number types should specialize it.
Definition: Number.h:33
Routines to concatenate Matrix&#39;s in top/bottom fashion.
Interface class for representing subranges of contiguous int&#39;s.


Results: [PASS]

|A - vertcat(a,a)| = 0
|A - vertcat(a,a)| = 0
|A - vertcat(a,a)| = 0
|A - vertcat(a,a)| = 0


Go back to Summary of /test programs.