11#ifndef EIGEN_DIAGONALMATRIX_H
12#define EIGEN_DIAGONALMATRIX_H
16#ifndef EIGEN_PARSED_BY_DOXYGEN
17template<
typename Derived>
22 typedef typename DiagonalVectorType::Scalar Scalar;
23 typedef typename DiagonalVectorType::RealScalar RealScalar;
28 RowsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
29 ColsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
30 MaxRowsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
31 MaxColsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
32 IsVectorAtCompileTime = 0,
41 inline const Derived& derived()
const {
return *
static_cast<const Derived*
>(
this); }
43 inline Derived& derived() {
return *
static_cast<Derived*
>(
this); }
49 inline const DiagonalVectorType& diagonal()
const {
return derived().diagonal(); }
51 inline DiagonalVectorType& diagonal() {
return derived().diagonal(); }
54 inline Index rows()
const {
return diagonal().size(); }
56 inline Index cols()
const {
return diagonal().size(); }
58 template<
typename MatrixDerived>
77 operator*(
const Scalar& scalar)
const
83 operator*(
const Scalar& scalar,
const DiagonalBase& other)
105template<
typename _Scalar,
int SizeAtCompileTime,
int MaxSizeAtCompileTime>
107 :
traits<Matrix<_Scalar,SizeAtCompileTime,SizeAtCompileTime,0,MaxSizeAtCompileTime,MaxSizeAtCompileTime> >
116template<
typename _Scalar,
int SizeAtCompileTime,
int MaxSizeAtCompileTime>
118 :
public DiagonalBase<DiagonalMatrix<_Scalar,SizeAtCompileTime,MaxSizeAtCompileTime> >
121 #ifndef EIGEN_PARSED_BY_DOXYGEN
124 typedef _Scalar Scalar;
131 DiagonalVectorType m_diagonal;
137 inline const DiagonalVectorType&
diagonal()
const {
return m_diagonal; }
140 inline DiagonalVectorType&
diagonal() {
return m_diagonal; }
156 inline DiagonalMatrix(
const Scalar& x,
const Scalar& y,
const Scalar& z) : m_diagonal(x,y,z) {}
159 template<
typename OtherDerived>
163 #ifndef EIGEN_PARSED_BY_DOXYGEN
169 template<
typename OtherDerived>
175 template<
typename OtherDerived>
179 m_diagonal = other.diagonal();
183 #ifndef EIGEN_PARSED_BY_DOXYGEN
200 inline void setZero() { m_diagonal.setZero(); }
227template<
typename _DiagonalVectorType>
231 typedef typename DiagonalVectorType::Scalar Scalar;
232 typedef typename DiagonalVectorType::StorageIndex StorageIndex;
236 RowsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
237 ColsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
238 MaxRowsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
239 MaxColsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
245template<
typename _DiagonalVectorType>
250 #ifndef EIGEN_PARSED_BY_DOXYGEN
264 typename DiagonalVectorType::Nested m_diagonal;
276template<
typename Derived>
277inline const DiagonalWrapper<const Derived>
291template<
typename Derived>
295 if(cols() != rows())
return false;
297 for(Index
j = 0;
j < cols(); ++
j)
302 for(Index
j = 0;
j < cols(); ++
j)
303 for(Index i = 0; i <
j; ++i)
320template<
typename DstXprType,
typename SrcXprType,
typename Functor,
typename Scalar>
326 dst.diagonal() =
src.diagonal();
330 {
dst.diagonal() +=
src.diagonal(); }
333 {
dst.diagonal() -=
src.diagonal(); }
Definition DiagonalMatrix.h:19
Represents a diagonal matrix with its storage.
Definition DiagonalMatrix.h:119
EIGEN_DEVICE_FUNC const DiagonalVectorType & diagonal() const
const version of diagonal().
Definition DiagonalMatrix.h:137
EIGEN_DEVICE_FUNC DiagonalMatrix(const Scalar &x, const Scalar &y)
2D constructor.
Definition DiagonalMatrix.h:152
EIGEN_DEVICE_FUNC DiagonalMatrix(const MatrixBase< OtherDerived > &other)
generic constructor from expression of the diagonal coefficients
Definition DiagonalMatrix.h:171
EIGEN_DEVICE_FUNC void setIdentity()
Sets this matrix to be the identity matrix of the current size.
Definition DiagonalMatrix.h:206
EIGEN_DEVICE_FUNC void setZero()
Sets all coefficients to zero.
Definition DiagonalMatrix.h:200
EIGEN_DEVICE_FUNC void resize(Index size)
Resizes to given size.
Definition DiagonalMatrix.h:197
EIGEN_DEVICE_FUNC DiagonalVectorType & diagonal()
Definition DiagonalMatrix.h:140
EIGEN_DEVICE_FUNC DiagonalMatrix & operator=(const DiagonalMatrix &other)
This is a special case of the templated operator=.
Definition DiagonalMatrix.h:188
EIGEN_DEVICE_FUNC DiagonalMatrix()
Default constructor without initialization.
Definition DiagonalMatrix.h:144
EIGEN_DEVICE_FUNC DiagonalMatrix(Index dim)
Constructs a diagonal matrix with given dimension
Definition DiagonalMatrix.h:148
EIGEN_DEVICE_FUNC void setZero(Index size)
Resizes and sets all coefficients to zero.
Definition DiagonalMatrix.h:203
EIGEN_DEVICE_FUNC DiagonalMatrix & operator=(const DiagonalBase< OtherDerived > &other)
Copy operator.
Definition DiagonalMatrix.h:177
DiagonalMatrix(const DiagonalMatrix &other)
copy constructor.
Definition DiagonalMatrix.h:165
EIGEN_DEVICE_FUNC DiagonalMatrix(const DiagonalBase< OtherDerived > &other)
Copy constructor.
Definition DiagonalMatrix.h:161
EIGEN_DEVICE_FUNC void setIdentity(Index size)
Sets this matrix to be the identity matrix of the given size.
Definition DiagonalMatrix.h:209
EIGEN_DEVICE_FUNC DiagonalMatrix(const Scalar &x, const Scalar &y, const Scalar &z)
3D constructor.
Definition DiagonalMatrix.h:156
Expression of a diagonal matrix.
Definition DiagonalMatrix.h:248
EIGEN_DEVICE_FUNC const DiagonalVectorType & diagonal() const
Definition DiagonalMatrix.h:261
EIGEN_DEVICE_FUNC DiagonalWrapper(DiagonalVectorType &a_diagonal)
Constructor from expression of diagonal coefficients to wrap.
Definition DiagonalMatrix.h:257
Base class for all dense matrices, vectors, and expressions.
Definition MatrixBase.h:50
Pseudo expression representing a solving operation.
Definition Solve.h:63
Definition XprHelper.h:50
const unsigned int NoPreferredStorageOrderBit
for an expression, this means that the storage order can be either row-major or column-major.
Definition Constants.h:172
const unsigned int LvalueBit
Means the expression has a coeffRef() method, i.e.
Definition Constants.h:138
Definition Constants.h:511
Definition Constants.h:514
Common base class for all classes T such that MatrixBase has an operator=(T) and a constructor Matrix...
Definition EigenBase.h:29
Eigen::Index Index
The interface type of indices.
Definition EigenBase.h:37
EIGEN_DEVICE_FUNC Index size() const
Definition EigenBase.h:65
Definition AssignEvaluator.h:677
Definition AssignEvaluator.h:684
Definition DiagonalMatrix.h:315
Definition AssignmentFunctors.h:42
Definition AssignmentFunctors.h:21
Definition CoreEvaluators.h:29
Definition AssignmentFunctors.h:63
Definition ForwardDeclarations.h:17