11 #ifndef EIGEN_DIAGONALMATRIX_H
12 #define EIGEN_DIAGONALMATRIX_H
32 template <
typename Derived>
84 template <
typename MatrixDerived>
90 template <
typename OtherDerived>
95 template <
typename OtherDerived>
106 return diagonal().cwiseInverse().asDiagonal();
114 return (
diagonal() * scalar).asDiagonal();
123 return (scalar * other.
diagonal()).asDiagonal();
126 template <
typename OtherDerived>
131 template <
typename OtherDerived>
137 template <
typename OtherDerived>
142 template <
typename OtherDerived>
163 template <
typename Scalar_,
int SizeAtCompileTime,
int MaxSizeAtCompileTime>
165 :
traits<Matrix<Scalar_, SizeAtCompileTime, SizeAtCompileTime, 0, MaxSizeAtCompileTime, MaxSizeAtCompileTime>> {
171 template <
typename Scalar_,
int SizeAtCompileTime,
int MaxSizeAtCompileTime>
174 #ifndef EIGEN_PARSED_BY_DOXYGEN
211 template <
typename... ArgTypes>
213 const ArgTypes&...
args)
220 const std::initializer_list<std::initializer_list<Scalar>>& list)
227 template <
typename OtherDerived>
230 #ifndef EIGEN_PARSED_BY_DOXYGEN
236 template <
typename OtherDerived>
240 template <
typename OtherDerived>
246 #ifndef EIGEN_PARSED_BY_DOXYGEN
272 return DiagonalVectorType::Ones(
size).asDiagonal();
302 template <
typename DiagonalVectorType_>
310 RowsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
311 ColsAtCompileTime = DiagonalVectorType::SizeAtCompileTime,
312 MaxRowsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
313 MaxColsAtCompileTime = DiagonalVectorType::MaxSizeAtCompileTime,
319 template <
typename DiagonalVectorType_>
322 #ifndef EIGEN_PARSED_BY_DOXYGEN
346 template <
typename Derived>
359 template <
typename Derived>
365 if (absOnDiagonal > maxAbsOnDiagonal) maxAbsOnDiagonal = absOnDiagonal;
390 template <
typename DstXprType,
typename SrcXprType,
typename Functor>
393 DstXprType& dst,
const SrcXprType& src,
395 Index dstRows = src.rows();
396 Index dstCols = src.cols();
397 if ((dst.rows() != dstRows) || (dst.cols() != dstCols)) dst.resize(dstRows, dstCols);
400 dst.diagonal() = src.diagonal();
404 DstXprType& dst,
const SrcXprType& src,
406 dst.diagonal() += src.diagonal();
410 DstXprType& dst,
const SrcXprType& src,
412 dst.diagonal() -= src.diagonal();
int i
Definition: BiCGSTAB_step_by_step.cpp:9
#define EIGEN_CONSTEXPR
Definition: Macros.h:758
#define EIGEN_CWISE_BINARY_RETURN_TYPE(LHS, RHS, OPNAME)
Definition: Macros.h:1184
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:892
#define EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(EXPR, SCALAR, OPNAME)
Definition: Macros.h:1200
#define eigen_assert(x)
Definition: Macros.h:910
#define EIGEN_STRONG_INLINE
Definition: Macros.h:834
int rows
Definition: Tutorial_commainit_02.cpp:1
int cols
Definition: Tutorial_commainit_02.cpp:1
SCALAR Scalar
Definition: bench_gemm.cpp:45
NumTraits< Scalar >::Real RealScalar
Definition: bench_gemm.cpp:46
NumTraits< Scalar >::Real RealScalar
Definition: DenseBase.h:69
Base class for diagonal matrices and expressions.
Definition: DiagonalMatrix.h:33
internal::traits< Derived >::StorageIndex StorageIndex
Definition: DiagonalMatrix.h:39
internal::traits< Derived >::StorageKind StorageKind
Definition: DiagonalMatrix.h:38
EIGEN_DEVICE_FUNC DiagonalVectorType & diagonal()
Definition: DiagonalMatrix.h:70
DiagonalVectorType::Scalar Scalar
Definition: DiagonalMatrix.h:36
internal::traits< Derived >::DiagonalVectorType DiagonalVectorType
Definition: DiagonalMatrix.h:35
EIGEN_DEVICE_FUNC const DiagonalSumReturnType< OtherDerived > operator+(const DiagonalBase< OtherDerived > &other) const
Definition: DiagonalMatrix.h:132
EIGEN_DEVICE_FUNC const Derived & derived() const
Definition: DiagonalMatrix.h:57
EIGEN_DEVICE_FUNC DenseMatrixType toDenseMatrix() const
Definition: DiagonalMatrix.h:65
Matrix< Scalar, RowsAtCompileTime, ColsAtCompileTime, 0, MaxRowsAtCompileTime, MaxColsAtCompileTime > DenseMatrixType
Definition: DiagonalMatrix.h:51
EIGEN_DEVICE_FUNC Derived & derived()
Definition: DiagonalMatrix.h:59
DiagonalVectorType::RealScalar RealScalar
Definition: DiagonalMatrix.h:37
EIGEN_DEVICE_FUNC const DiagonalVectorType & diagonal() const
Definition: DiagonalMatrix.h:68
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index cols() const
Definition: DiagonalMatrix.h:81
EIGEN_DEVICE_FUNC const Product< Derived, MatrixDerived, LazyProduct > operator*(const MatrixBase< MatrixDerived > &matrix) const
Definition: DiagonalMatrix.h:85
DenseMatrixType DenseType
Definition: DiagonalMatrix.h:52
DiagonalMatrix< Scalar, DiagonalVectorType::SizeAtCompileTime, DiagonalVectorType::MaxSizeAtCompileTime > PlainObject
Definition: DiagonalMatrix.h:54
EIGEN_DEVICE_FUNC const DiagonalScaleReturnType operator*(const Scalar &scalar) const
Definition: DiagonalMatrix.h:113
EIGEN_DEVICE_FUNC const DiagonalProductReturnType< OtherDerived > operator*(const DiagonalBase< OtherDerived > &other) const
Definition: DiagonalMatrix.h:96
EIGEN_DEVICE_FUNC const DiagonalInverseReturnType inverse() const
Definition: DiagonalMatrix.h:105
@ ColsAtCompileTime
Definition: DiagonalMatrix.h:43
@ RowsAtCompileTime
Definition: DiagonalMatrix.h:42
@ MaxRowsAtCompileTime
Definition: DiagonalMatrix.h:44
@ MaxColsAtCompileTime
Definition: DiagonalMatrix.h:45
@ IsVectorAtCompileTime
Definition: DiagonalMatrix.h:46
EIGEN_DEVICE_FUNC const DiagonalDifferenceReturnType< OtherDerived > operator-(const DiagonalBase< OtherDerived > &other) const
Definition: DiagonalMatrix.h:143
EIGEN_DEVICE_FUNC Scalar coeff(Index row, Index col) const
Definition: DiagonalMatrix.h:73
EIGEN_DEVICE_FUNC friend const ScaleDiagonalReturnType operator*(const Scalar &scalar, const DiagonalBase &other)
Definition: DiagonalMatrix.h:121
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index rows() const
Definition: DiagonalMatrix.h:79
Represents a diagonal matrix with its storage.
Definition: DiagonalMatrix.h:172
EIGEN_DEVICE_FUNC const DiagonalVectorType & diagonal() const
Definition: DiagonalMatrix.h:187
EIGEN_DEVICE_FUNC DiagonalMatrix(Index dim)
Definition: DiagonalMatrix.h:195
DiagonalWrapper< const CwiseNullaryOp< internal::scalar_constant_op< Scalar >, DiagonalVectorType > > InitializeReturnType
Definition: DiagonalMatrix.h:257
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DiagonalMatrix(const Scalar &a0, const Scalar &a1, const Scalar &a2, const ArgTypes &... args)
Construct a diagonal matrix with fixed size from an arbitrary number of coefficients.
Definition: DiagonalMatrix.h:212
EIGEN_DEVICE_FUNC DiagonalMatrix(const MatrixBase< OtherDerived > &other)
Definition: DiagonalMatrix.h:237
EIGEN_DEVICE_FUNC DiagonalMatrix()
Definition: DiagonalMatrix.h:192
EIGEN_DEVICE_FUNC DiagonalMatrix(DiagonalVectorType &&diag)
Constructs a DiagonalMatrix from an r-value diagonal vector type.
Definition: DiagonalMatrix.h:224
EIGEN_DEVICE_FUNC DiagonalMatrix(const Scalar &x, const Scalar &y)
Definition: DiagonalMatrix.h:198
internal::traits< DiagonalMatrix >::StorageKind StorageKind
Definition: DiagonalMatrix.h:178
EIGEN_DEVICE_FUNC DiagonalMatrix(const Scalar &x, const Scalar &y, const Scalar &z)
Definition: DiagonalMatrix.h:201
DiagonalMatrix(const DiagonalMatrix &other)
Definition: DiagonalMatrix.h:232
const DiagonalMatrix & Nested
Definition: DiagonalMatrix.h:176
EIGEN_DEVICE_FUNC void setIdentity(Index size)
Definition: DiagonalMatrix.h:284
static EIGEN_DEVICE_FUNC const ZeroInitializeReturnType Zero()
Definition: DiagonalMatrix.h:263
EIGEN_DEVICE_FUNC DiagonalMatrix & operator=(const DiagonalMatrix &other)
Definition: DiagonalMatrix.h:250
EIGEN_DEVICE_FUNC void setIdentity()
Definition: DiagonalMatrix.h:282
DiagonalWrapper< const CwiseNullaryOp< internal::scalar_zero_op< Scalar >, DiagonalVectorType > > ZeroInitializeReturnType
Definition: DiagonalMatrix.h:260
EIGEN_DEVICE_FUNC DiagonalMatrix & operator=(const DiagonalBase< OtherDerived > &other)
Definition: DiagonalMatrix.h:241
EIGEN_DEVICE_FUNC DiagonalVectorType & diagonal()
Definition: DiagonalMatrix.h:189
static EIGEN_DEVICE_FUNC const InitializeReturnType Identity(Index size)
Definition: DiagonalMatrix.h:271
static EIGEN_DEVICE_FUNC const InitializeReturnType Identity()
Definition: DiagonalMatrix.h:269
internal::traits< DiagonalMatrix >::DiagonalVectorType DiagonalVectorType
Definition: DiagonalMatrix.h:175
internal::traits< DiagonalMatrix >::StorageIndex StorageIndex
Definition: DiagonalMatrix.h:179
EIGEN_DEVICE_FUNC void setZero()
Definition: DiagonalMatrix.h:278
EIGEN_DEVICE_FUNC void setZero(Index size)
Definition: DiagonalMatrix.h:280
DiagonalVectorType m_diagonal
Definition: DiagonalMatrix.h:183
EIGEN_DEVICE_FUNC void resize(Index size)
Definition: DiagonalMatrix.h:276
EIGEN_DEVICE_FUNC DiagonalMatrix(const DiagonalBase< OtherDerived > &other)
Definition: DiagonalMatrix.h:228
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DiagonalMatrix(const std::initializer_list< std::initializer_list< Scalar >> &list)
Constructs a DiagonalMatrix and initializes it by elements given by an initializer list of initialize...
Definition: DiagonalMatrix.h:219
Scalar_ Scalar
Definition: DiagonalMatrix.h:177
Expression of a diagonal matrix.
Definition: DiagonalMatrix.h:320
DiagonalVectorType_ DiagonalVectorType
Definition: DiagonalMatrix.h:323
EIGEN_DEVICE_FUNC DiagonalWrapper(DiagonalVectorType &a_diagonal)
Definition: DiagonalMatrix.h:328
DiagonalVectorType::Nested m_diagonal
Definition: DiagonalMatrix.h:334
DiagonalWrapper Nested
Definition: DiagonalMatrix.h:324
EIGEN_DEVICE_FUNC const DiagonalVectorType & diagonal() const
Definition: DiagonalMatrix.h:331
Base class for all dense matrices, vectors, and expressions.
Definition: MatrixBase.h:52
EIGEN_DEVICE_FUNC const DiagonalWrapper< const Derived > asDiagonal() const
Definition: DiagonalMatrix.h:347
bool isDiagonal(const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
Definition: DiagonalMatrix.h:360
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
Expression of the product of two arbitrary matrices or vectors.
Definition: Product.h:202
Definition: XprHelper.h:134
Eigen::Map< Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor >, 0, Eigen::OuterStride<> > matrix(T *data, int rows, int cols, int stride)
Definition: common.h:85
const unsigned int NoPreferredStorageOrderBit
Definition: Constants.h:182
const unsigned int LvalueBit
Definition: Constants.h:148
Scalar * y
Definition: level1_cplx_impl.h:128
const char const char const char * diag
Definition: level2_impl.h:86
EIGEN_DEVICE_FUNC bool isMuchSmallerThan(const Scalar &x, const OtherScalar &y, const typename NumTraits< Scalar >::Real &precision=NumTraits< Scalar >::dummy_precision())
Definition: MathFunctions.h:1916
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE std::enable_if_t< NumTraits< T >::IsSigned||NumTraits< T >::IsComplex, typename NumTraits< T >::Real > abs(const T &x)
Definition: MathFunctions.h:1355
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
const unsigned int NestByRefBit
Definition: Constants.h:173
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
Extend namespace for flags.
Definition: fsi_chan_precond_driver.cc:56
args
Definition: compute_granudrum_aor.py:143
Definition: Eigen_Colamd.h:49
double Zero
Definition: pseudosolid_node_update_elements.cc:35
list x
Definition: plotDoE.py:28
void product(const MatrixType &m)
Definition: product.h:42
Definition: Constants.h:540
Definition: Constants.h:549
Definition: EigenBase.h:33
Eigen::Index Index
The interface type of indices.
Definition: EigenBase.h:43
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index size() const EIGEN_NOEXCEPT
Definition: EigenBase.h:64
Diagonal2Dense Kind
Definition: DiagonalMatrix.h:386
Definition: AssignEvaluator.h:760
static EIGEN_DEVICE_FUNC void run(DstXprType &dst, const SrcXprType &src, const internal::sub_assign_op< typename DstXprType::Scalar, typename SrcXprType::Scalar > &)
Definition: DiagonalMatrix.h:409
static EIGEN_DEVICE_FUNC void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op< typename DstXprType::Scalar, typename SrcXprType::Scalar > &)
Definition: DiagonalMatrix.h:392
static EIGEN_DEVICE_FUNC void run(DstXprType &dst, const SrcXprType &src, const internal::add_assign_op< typename DstXprType::Scalar, typename SrcXprType::Scalar > &)
Definition: DiagonalMatrix.h:403
Definition: AssignEvaluator.h:773
Definition: DiagonalMatrix.h:382
Template functor for scalar/packet assignment with addition.
Definition: AssignmentFunctors.h:52
Template functor for scalar/packet assignment.
Definition: AssignmentFunctors.h:25
DiagonalShape Shape
Definition: DiagonalMatrix.h:379
Definition: CoreEvaluators.h:32
Template functor for scalar/packet assignment with subtraction.
Definition: AssignmentFunctors.h:73
DiagonalShape StorageKind
Definition: DiagonalMatrix.h:167
Matrix< Scalar_, SizeAtCompileTime, 1, 0, MaxSizeAtCompileTime, 1 > DiagonalVectorType
Definition: DiagonalMatrix.h:166
DiagonalVectorType_ DiagonalVectorType
Definition: DiagonalMatrix.h:304
DiagonalShape StorageKind
Definition: DiagonalMatrix.h:307
DiagonalVectorType::Scalar Scalar
Definition: DiagonalMatrix.h:305
traits< DiagonalVectorType >::XprKind XprKind
Definition: DiagonalMatrix.h:308
DiagonalVectorType::StorageIndex StorageIndex
Definition: DiagonalMatrix.h:306
Definition: ForwardDeclarations.h:21
Definition: NonLinearOptimization.cpp:97
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2