25 RMatrixType rm2 = MatrixType::Random(
rows,
cols);
27 Rhs1 rhs1 = Rhs1::Random(internal::random<int>(1, 320),
cols);
28 Rhs1 rhs11 = Rhs1::Random(rhs1.rows(),
cols);
29 Rhs2 rhs2 = Rhs2::Random(
rows, internal::random<int>(1, 320));
30 Rhs2 rhs22 = Rhs2::Random(
rows, rhs2.cols());
31 Rhs3 rhs3 = Rhs3::Random(internal::random<int>(1, 320),
rows);
33 Scalar s1 = internal::random<Scalar>();
35 Index c = internal::random<Index>(0,
cols - 1);
38 VERIFY_IS_APPROX((
m2.template selfadjointView<Lower>().rankUpdate(rhs2, s1)._expression()),
39 ((s1 * rhs2 * rhs2.adjoint()).eval().template triangularView<Lower>().toDenseMatrix()));
41 VERIFY_IS_APPROX(((
m2.template triangularView<Lower>() += s1 * rhs2 * rhs22.adjoint()).nestedExpression()),
42 ((s1 * rhs2 * rhs22.adjoint()).eval().template triangularView<Lower>().toDenseMatrix()));
45 VERIFY_IS_APPROX(
m2.template selfadjointView<Upper>().rankUpdate(rhs2, s1)._expression(),
46 (s1 * rhs2 * rhs2.adjoint()).eval().template triangularView<Upper>().toDenseMatrix());
48 VERIFY_IS_APPROX((
m2.template triangularView<Upper>() += s1 * rhs22 * rhs2.adjoint()).nestedExpression(),
49 (s1 * rhs22 * rhs2.adjoint()).eval().template triangularView<Upper>().toDenseMatrix());
52 VERIFY_IS_APPROX(
m2.template selfadjointView<Lower>().rankUpdate(rhs1.adjoint(), s1)._expression(),
53 (s1 * rhs1.adjoint() * rhs1).eval().template triangularView<Lower>().toDenseMatrix());
55 VERIFY_IS_APPROX((
m2.template triangularView<Lower>() += s1 * rhs11.adjoint() * rhs1).nestedExpression(),
56 (s1 * rhs11.adjoint() * rhs1).eval().template triangularView<Lower>().toDenseMatrix());
59 VERIFY_IS_APPROX(
m2.template selfadjointView<Upper>().rankUpdate(rhs1.adjoint(), s1)._expression(),
60 (s1 * rhs1.adjoint() * rhs1).eval().template triangularView<Upper>().toDenseMatrix());
61 VERIFY_IS_APPROX((
m2.template triangularView<Upper>() = s1 * rhs1.adjoint() * rhs11).nestedExpression(),
62 (s1 * rhs1.adjoint() * rhs11).eval().template triangularView<Upper>().toDenseMatrix());
65 VERIFY_IS_APPROX(
m2.template selfadjointView<Lower>().rankUpdate(rhs3.adjoint(), s1)._expression(),
66 (s1 * rhs3.adjoint() * rhs3).eval().template triangularView<Lower>().toDenseMatrix());
69 VERIFY_IS_APPROX(
m2.template selfadjointView<Upper>().rankUpdate(rhs3.adjoint(), s1)._expression(),
70 (s1 * rhs3.adjoint() * rhs3).eval().template triangularView<Upper>().toDenseMatrix());
74 ((s1 *
m1.col(
c) *
m1.col(
c).adjoint()).eval().template triangularView<Lower>().toDenseMatrix()));
78 ((s1 *
m1.col(
c) *
m1.col(
c).adjoint()).eval().template triangularView<Upper>().toDenseMatrix()));
80 VERIFY_IS_APPROX((rm2.template selfadjointView<Upper>().rankUpdate(
m1.col(
c), s1)._expression()),
81 ((s1 *
m1.col(
c) *
m1.col(
c).adjoint()).eval().template triangularView<Upper>().toDenseMatrix()));
83 VERIFY_IS_APPROX((
m2.template triangularView<Upper>() += s1 * m3.col(
c) *
m1.col(
c).adjoint()).nestedExpression(),
84 ((s1 * m3.col(
c) *
m1.col(
c).adjoint()).eval().template triangularView<Upper>().toDenseMatrix()));
86 VERIFY_IS_APPROX((rm2.template triangularView<Upper>() += s1 *
m1.col(
c) * m3.col(
c).adjoint()).nestedExpression(),
87 ((s1 *
m1.col(
c) * m3.col(
c).adjoint()).eval().template triangularView<Upper>().toDenseMatrix()));
90 VERIFY_IS_APPROX((
m2.template selfadjointView<Lower>().rankUpdate(
m1.col(
c).conjugate(), s1)._expression()),
91 ((s1 *
m1.col(
c).conjugate() *
m1.col(
c).conjugate().adjoint())
93 .template triangularView<Lower>()
97 VERIFY_IS_APPROX((
m2.template selfadjointView<Upper>().rankUpdate(
m1.col(
c).conjugate(), s1)._expression()),
98 ((s1 *
m1.col(
c).conjugate() *
m1.col(
c).conjugate().adjoint())
100 .template triangularView<Upper>()
105 ((s1 *
m1.row(
c).transpose() *
m1.row(
c).transpose().adjoint())
107 .template triangularView<Lower>()
110 VERIFY_IS_APPROX((rm2.template selfadjointView<Lower>().rankUpdate(
m1.row(
c), s1)._expression()),
111 ((s1 *
m1.row(
c).transpose() *
m1.row(
c).transpose().adjoint())
113 .template triangularView<Lower>()
116 VERIFY_IS_APPROX((
m2.template triangularView<Lower>() += s1 * m3.row(
c).transpose() *
m1.row(
c).transpose().adjoint())
118 ((s1 * m3.row(
c).transpose() *
m1.row(
c).transpose().adjoint())
120 .template triangularView<Lower>()
124 (rm2.template triangularView<Lower>() += s1 * m3.row(
c).transpose() *
m1.row(
c).transpose().adjoint())
126 ((s1 * m3.row(
c).transpose() *
m1.row(
c).transpose().adjoint())
128 .template triangularView<Lower>()
132 VERIFY_IS_APPROX((
m2.template selfadjointView<Upper>().rankUpdate(
m1.row(
c).adjoint(), s1)._expression()),
133 ((s1 *
m1.row(
c).adjoint() *
m1.row(
c).adjoint().adjoint())
135 .template triangularView<Upper>()
145 VERIFY_IS_APPROX((map1.template selfadjointView<Lower>().rankUpdate(rhs2, s1)._expression()),
146 ((s1 * rhs2 * rhs2.adjoint()).eval().template triangularView<Lower>().toDenseMatrix()));
int rows
Definition: Tutorial_commainit_02.cpp:1
int cols
Definition: Tutorial_commainit_02.cpp:1
SCALAR Scalar
Definition: bench_gemm.cpp:45
MatrixXf MatrixType
Definition: benchmark-blocking-sizes.cpp:52
A matrix or vector expression mapping an existing array of data.
Definition: Map.h:96
Holds strides information for Map.
Definition: Stride.h:55
#define VERIFY_IS_APPROX(a, b)
Definition: integer_types.cpp:13
int * m
Definition: level2_cplx_impl.h:294
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
int c
Definition: calibrate.py:100