10 #ifndef EIGEN_SELFADJOINTMATRIX_H 11 #define EIGEN_SELFADJOINTMATRIX_H 32 template<
typename MatrixType,
unsigned int UpLo>
43 CoeffReadCost = MatrixTypeNestedCleaned::CoeffReadCost
48 template <
typename Lhs,
int LhsMode,
bool LhsIsVector,
49 typename Rhs,
int RhsMode,
bool RhsIsVector>
65 typedef typename MatrixType::Index
Index;
75 inline Index
rows()
const {
return m_matrix.rows(); }
76 inline Index
cols()
const {
return m_matrix.cols(); }
77 inline Index
outerStride()
const {
return m_matrix.outerStride(); }
78 inline Index
innerStride()
const {
return m_matrix.innerStride(); }
85 Base::check_coordinates_internal(row, col);
86 return m_matrix.coeff(row, col);
94 Base::check_coordinates_internal(row, col);
95 return m_matrix.const_cast_derived().coeffRef(row, col);
99 const MatrixTypeNestedCleaned&
_expression()
const {
return m_matrix; }
102 MatrixTypeNestedCleaned&
nestedExpression() {
return *
const_cast<MatrixTypeNestedCleaned*
>(&m_matrix); }
105 template<
typename OtherDerived>
110 <MatrixType,Mode,
false,OtherDerived,0,OtherDerived::IsVectorAtCompileTime>
111 (m_matrix, rhs.derived());
115 template<
typename OtherDerived>
friend 120 <OtherDerived,0,OtherDerived::IsVectorAtCompileTime,MatrixType,Mode,
false>
134 template<
typename DerivedU,
typename DerivedV>
147 template<
typename DerivedU>
162 EigenvaluesReturnType eigenvalues()
const;
163 RealScalar operatorNorm()
const;
165 #ifdef EIGEN2_SUPPORT 166 template<
typename OtherDerived>
172 m_matrix.const_cast_derived().template triangularView<UpLo>() = other;
173 m_matrix.const_cast_derived().template triangularView<OtherPart>() = other.
adjoint();
176 template<
typename OtherMatrixType,
unsigned int OtherMode>
182 m_matrix.const_cast_derived().template triangularView<UpLo>() = other.
toDenseMatrix();
183 m_matrix.const_cast_derived().template triangularView<OtherPart>() = other.
toDenseMatrix().adjoint();
204 template<
typename Derived1,
typename Derived2,
int UnrollCount,
bool ClearOpposite>
208 col = (UnrollCount-1) / Derived1::RowsAtCompileTime,
209 row = (UnrollCount-1) % Derived1::RowsAtCompileTime
212 static inline void run(Derived1 &dst,
const Derived2 &src)
223 template<
typename Derived1,
typename Derived2,
bool ClearOpposite>
226 static inline void run(Derived1 &,
const Derived2 &) {}
229 template<
typename Derived1,
typename Derived2,
int UnrollCount,
bool ClearOpposite>
233 col = (UnrollCount-1) / Derived1::RowsAtCompileTime,
234 row = (UnrollCount-1) % Derived1::RowsAtCompileTime
237 static inline void run(Derived1 &dst,
const Derived2 &src)
248 template<
typename Derived1,
typename Derived2,
bool ClearOpposite>
251 static inline void run(Derived1 &,
const Derived2 &) {}
254 template<
typename Derived1,
typename Derived2,
bool ClearOpposite>
257 typedef typename Derived1::Index
Index;
258 static inline void run(Derived1 &dst,
const Derived2 &src)
260 for(Index j = 0; j < dst.cols(); ++j)
262 for(Index i = 0; i < j; ++i)
264 dst.copyCoeff(i, j, src);
267 dst.copyCoeff(j, j, src);
272 template<
typename Derived1,
typename Derived2,
bool ClearOpposite>
275 static inline void run(Derived1 &dst,
const Derived2 &src)
277 typedef typename Derived1::Index Index;
278 for(Index i = 0; i < dst.rows(); ++i)
280 for(Index j = 0; j < i; ++j)
282 dst.copyCoeff(i, j, src);
285 dst.copyCoeff(i, i, src);
296 template<
typename Derived>
297 template<
unsigned int UpLo>
304 template<
typename Derived>
305 template<
unsigned int UpLo>
314 #endif // EIGEN_SELFADJOINTMATRIX_H static void run(Derived1 &, const Derived2 &)
Robust Cholesky decomposition of a matrix with pivoting.
internal::traits< SelfAdjointView >::MatrixTypeNestedCleaned MatrixTypeNestedCleaned
Scalar & coeffRef(Index row, Index col)
TriangularBase< SelfAdjointView > Base
const AutoDiffScalar< DerType > & conj(const AutoDiffScalar< DerType > &x)
DenseMatrixType toDenseMatrix() const
static void run(Derived1 &, const Derived2 &)
MatrixType::PlainObject DenseMatrixType
friend SelfadjointProductMatrix< OtherDerived, 0, OtherDerived::IsVectorAtCompileTime, MatrixType, Mode, false > operator*(const MatrixBase< OtherDerived > &lhs, const SelfAdjointView &rhs)
const unsigned int DirectAccessBit
static void run(Derived1 &dst, const Derived2 &src)
iterative scaling algorithm to equilibrate rows and column norms in matrices
Holds information about the various numeric (i.e. scalar) types allowed by Eigen. ...
Matrix< RealScalar, internal::traits< MatrixType >::ColsAtCompileTime, 1 > EigenvaluesReturnType
const unsigned int PacketAccessBit
internal::traits< SelfAdjointView >::Scalar Scalar
The type of coefficients in this matrix.
RealReturnType real() const
const unsigned int HereditaryBits
const MatrixTypeNestedCleaned & nestedExpression() const
nested< MatrixType >::type MatrixTypeNested
Standard Cholesky decomposition (LL^T) of a matrix and associated features.
NumTraits< Scalar >::Real RealScalar
Expression of a selfadjoint matrix from a triangular part of a dense matrix.
Index outerStride() const
MatrixType::PlainObject PlainObject
MatrixTypeNestedCleaned & nestedExpression()
static void run(Derived1 &dst, const Derived2 &src)
void rhs(const real_t *x, real_t *f)
Index innerStride() const
Scalar coeff(Index row, Index col) const
SelfAdjointViewReturnType< UpLo >::Type selfadjointView()
MatrixType ExpressionType
Base class for triangular part in a matrix.
MatrixTypeNested m_matrix
static void run(Derived1 &dst, const Derived2 &src)
remove_all< MatrixTypeNested >::type MatrixTypeNestedCleaned
The matrix class, also used for vectors and row-vectors.
const MatrixTypeNestedCleaned & _expression() const
static void run(Derived1 &dst, const Derived2 &src)
const AdjointReturnType adjoint() const
Base class for all dense matrices, vectors, and expressions.
SelfadjointProductMatrix< MatrixType, Mode, false, OtherDerived, 0, OtherDerived::IsVectorAtCompileTime > operator*(const MatrixBase< OtherDerived > &rhs) const
const unsigned int LinearAccessBit
SelfAdjointView(MatrixType &matrix)
internal::traits< SelfAdjointView >::MatrixTypeNested MatrixTypeNested