mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
remove the Triangular suffix to Upper, Lower, UnitLower, etc,
and remove the respective bit flags
This commit is contained in:
@@ -53,25 +53,25 @@ template<typename MatrixType> void product_selfadjoint(const MatrixType& m)
|
||||
m1 = (m1.adjoint() + m1).eval();
|
||||
|
||||
// rank2 update
|
||||
m2 = m1.template triangularView<LowerTriangular>();
|
||||
m2.template selfadjointView<LowerTriangular>().rankUpdate(v1,v2);
|
||||
VERIFY_IS_APPROX(m2, (m1 + v1 * v2.adjoint()+ v2 * v1.adjoint()).template triangularView<LowerTriangular>().toDenseMatrix());
|
||||
m2 = m1.template triangularView<Lower>();
|
||||
m2.template selfadjointView<Lower>().rankUpdate(v1,v2);
|
||||
VERIFY_IS_APPROX(m2, (m1 + v1 * v2.adjoint()+ v2 * v1.adjoint()).template triangularView<Lower>().toDenseMatrix());
|
||||
|
||||
m2 = m1.template triangularView<UpperTriangular>();
|
||||
m2.template selfadjointView<UpperTriangular>().rankUpdate(-v1,s2*v2,s3);
|
||||
VERIFY_IS_APPROX(m2, (m1 + (-s2*s3) * (v1 * v2.adjoint()+ v2 * v1.adjoint())).template triangularView<UpperTriangular>().toDenseMatrix());
|
||||
m2 = m1.template triangularView<Upper>();
|
||||
m2.template selfadjointView<Upper>().rankUpdate(-v1,s2*v2,s3);
|
||||
VERIFY_IS_APPROX(m2, (m1 + (-s2*s3) * (v1 * v2.adjoint()+ v2 * v1.adjoint())).template triangularView<Upper>().toDenseMatrix());
|
||||
|
||||
m2 = m1.template triangularView<UpperTriangular>();
|
||||
m2.template selfadjointView<UpperTriangular>().rankUpdate(-r1.adjoint(),r2.adjoint()*s3,s1);
|
||||
VERIFY_IS_APPROX(m2, (m1 + (-s3*s1) * (r1.adjoint() * r2 + r2.adjoint() * r1)).template triangularView<UpperTriangular>().toDenseMatrix());
|
||||
m2 = m1.template triangularView<Upper>();
|
||||
m2.template selfadjointView<Upper>().rankUpdate(-r1.adjoint(),r2.adjoint()*s3,s1);
|
||||
VERIFY_IS_APPROX(m2, (m1 + (-s3*s1) * (r1.adjoint() * r2 + r2.adjoint() * r1)).template triangularView<Upper>().toDenseMatrix());
|
||||
|
||||
if (rows>1)
|
||||
{
|
||||
m2 = m1.template triangularView<LowerTriangular>();
|
||||
m2.block(1,1,rows-1,cols-1).template selfadjointView<LowerTriangular>().rankUpdate(v1.tail(rows-1),v2.head(cols-1));
|
||||
m2 = m1.template triangularView<Lower>();
|
||||
m2.block(1,1,rows-1,cols-1).template selfadjointView<Lower>().rankUpdate(v1.tail(rows-1),v2.head(cols-1));
|
||||
m3 = m1;
|
||||
m3.block(1,1,rows-1,cols-1) += v1.tail(rows-1) * v2.head(cols-1).adjoint()+ v2.head(cols-1) * v1.tail(rows-1).adjoint();
|
||||
VERIFY_IS_APPROX(m2, m3.template triangularView<LowerTriangular>().toDenseMatrix());
|
||||
VERIFY_IS_APPROX(m2, m3.template triangularView<Lower>().toDenseMatrix());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user