23 #include <tests/myratest.h> 37 auto C = diagcat(A,B);
38 Precision error_A = frobenius( C.window(0,20,0,20) - A);
39 Precision error_B = frobenius( C.window(20,30,20,30) - B);
40 myra::out() <<
" |C.window - A| = " << error_A << std::endl;
41 myra::out() <<
" |C.window - B| = " << error_B << std::endl;
42 REQUIRE(error_A < tolerance);
43 REQUIRE(error_B < tolerance);
46 #ifdef MYRAMATH_ENABLE_CPP11 55 auto D = diagcat({A,B,C});
56 Precision error_A = frobenius( D.
window(0,20,0,30) - A);
57 Precision error_B = frobenius( D.
window(20,30,30,50) - B);
58 Precision error_C = frobenius( D.
window(30,45,50,75) - C);
59 myra::out() <<
" |D.window - A| = " << error_A << std::endl;
60 myra::out() <<
" |D.window - B| = " << error_B << std::endl;
61 myra::out() <<
" |D.window - C| = " << error_C << std::endl;
62 REQUIRE(error_A < tolerance);
63 REQUIRE(error_B < tolerance);
64 REQUIRE(error_C < tolerance);
76 auto C = diagcat(A,B);
77 bool equal_A = (C.window(0,20,0,20) == A);
78 bool equal_B = (C.window(20,30,20,30) == B);
79 myra::out() <<
" C.window == A : " << (equal_A?
"true":
"false") << std::endl;
80 myra::out() <<
" C.window == B : " << (equal_B?
"true":
"false") << std::endl;
85 #ifdef MYRAMATH_ENABLE_CPP11 93 auto D = diagcat({A,B,C});
94 bool equal_A = (D.
window(0,20,0,30) == A);
95 bool equal_B = (D.
window(20,30,30,50) == B);
96 bool equal_C = (D.
window(30,45,50,75) == C);
97 myra::out() <<
" D.window == A : " << (equal_A?
"true":
"false") << std::endl;
98 myra::out() <<
" D.window == B : " << (equal_B?
"true":
"false") << std::endl;
99 myra::out() <<
" D.window == C : " << (equal_C?
"true":
"false") << std::endl;
109 ADD_TEST(
"diagcat_SparseMatrix",
"[sparse]")
111 test1<NumberS>(1.0e-5f);
112 test1<NumberD>(1.0e-10);
113 test1<NumberC>(1.0e-5f);
114 test1<NumberZ>(1.0e-10);
117 #ifdef MYRAMATH_ENABLE_CPP11 119 ADD_TEST(
"diagcat_SparseMatrix_cpp11",
"[sparse]")
121 test2<NumberS>(1.0e-5f);
122 test2<NumberD>(1.0e-10);
123 test2<NumberC>(1.0e-5f);
124 test2<NumberZ>(1.0e-10);
129 ADD_TEST(
"diagcat_Pattern",
"[sparse]")
132 #ifdef MYRAMATH_ENABLE_CPP11 134 ADD_TEST(
"diagcat_Pattern_cpp11",
"[sparse]")
Container of values, allows random (i) access.
static SparseMatrix< Number > random(int I, int J, int N)
Generates a random SparseMatrix with size IxJ and (approximately) N nonzeros.
Definition: SparseMatrix.cpp:493
General purpose compressed-sparse-column (CSC) container.
CMatrixRange< Number > window(int i0, int i1, int j0, int j1) const
Returns a MatrixRange over this(i0:i1,j0:j1)
Definition: Matrix.cpp:142
static Pattern random(int I, int J, int N)
Generates a random Pattern with size IxJ and (approximately) N nonzeros.
Definition: Pattern.cpp:300
Range/Iterator types associated with Pattern.
Reflects Precision trait for a Number, scalar Number types should specialize it.
Definition: Number.h:33
Container class for a sparse nonzero pattern, used in reordering/symbolic analysis.
Returns frobenius norm of a SparseMatrix.
Routines to concatenate SparseMatrix's in diagonal fashion.
Range/Iterator types associated with SparseMatrix.