MCPcopy Create free account
hub / github.com/avaxman/Directional / triangular_square

Function triangular_square

external/eigen/test/triangular.cpp:40–183  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

38
39
40template<typename MatrixType> void triangular_square(const MatrixType& m)
41{
42 typedef typename MatrixType::Scalar Scalar;
43 typedef typename NumTraits<Scalar>::Real RealScalar;
44 typedef Matrix<Scalar, MatrixType::RowsAtCompileTime, 1> VectorType;
45
46 RealScalar largerEps = 10*test_precision<RealScalar>();
47
48 Index rows = m.rows();
49 Index cols = m.cols();
50
51 MatrixType m1 = MatrixType::Random(rows, cols),
52 m2 = MatrixType::Random(rows, cols),
53 m3(rows, cols),
54 m4(rows, cols),
55 r1(rows, cols),
56 r2(rows, cols);
57 VectorType v2 = VectorType::Random(rows);
58 VectorType v3 = VectorType::Zero(rows);
59
60 MatrixType m1up = m1.template triangularView<Upper>();
61 MatrixType m2up = m2.template triangularView<Upper>();
62
63 if (rows*cols>1)
64 {
65 VERIFY(m1up.isUpperTriangular());
66 VERIFY(m2up.transpose().isLowerTriangular());
67 VERIFY(!m2.isLowerTriangular());
68 }
69
70// VERIFY_IS_APPROX(m1up.transpose() * m2, m1.upper().transpose().lower() * m2);
71
72 // test overloaded operator+=
73 r1.setZero();
74 r2.setZero();
75 r1.template triangularView<Upper>() += m1;
76 r2 += m1up;
77 VERIFY_IS_APPROX(r1,r2);
78
79 // test overloaded operator=
80 m1.setZero();
81 m1.template triangularView<Upper>() = m2.transpose() + m2;
82 m3 = m2.transpose() + m2;
83 VERIFY_IS_APPROX(m3.template triangularView<Lower>().transpose().toDenseMatrix(), m1);
84
85 // test overloaded operator=
86 m1.setZero();
87 m1.template triangularView<Lower>() = m2.transpose() + m2;
88 VERIFY_IS_APPROX(m3.template triangularView<Lower>().toDenseMatrix(), m1);
89
90 VERIFY_IS_APPROX(m3.template triangularView<Lower>().conjugate().toDenseMatrix(),
91 m3.conjugate().template triangularView<Lower>().toDenseMatrix());
92
93 m1 = MatrixType::Random(rows, cols);
94 for (int i=0; i<rows; ++i)
95 while (numext::abs2(m1(i,i))<RealScalar(1e-1)) m1(i,i) = internal::random<Scalar>();
96
97 Transpose<MatrixType> trm4(m4);

Callers 1

EIGEN_DECLARE_TESTFunction · 0.85

Calls 15

abs2Function · 0.85
is_same_typeFunction · 0.85
isUpperTriangularMethod · 0.80
isLowerTriangularMethod · 0.80
rowsMethod · 0.45
colsMethod · 0.45
transposeMethod · 0.45
setZeroMethod · 0.45
toDenseMatrixMethod · 0.45
conjugateMethod · 0.45
adjointMethod · 0.45
solveMethod · 0.45

Tested by

no test coverage detected