MOAB
4.9.3pre
|
Base class for all dense matrices, vectors, and expressions. More...
#include <MatrixBase.h>
Classes | |
struct | CastXpr |
struct | ConstDiagonalIndexReturnType |
struct | ConstSelfAdjointViewReturnType |
struct | ConstTriangularViewReturnType |
struct | cross_product_return_type |
struct | DiagonalIndexReturnType |
struct | SelfAdjointViewReturnType |
struct | TriangularViewReturnType |
Public Types | |
enum | { HomogeneousReturnTypeDirection } |
enum | { SizeMinusOne = SizeAtCompileTime==Dynamic ? Dynamic : SizeAtCompileTime-1 } |
typedef MatrixBase | StorageBaseType |
typedef internal::traits < Derived >::StorageKind | StorageKind |
typedef internal::traits < Derived >::StorageIndex | StorageIndex |
The type used to store indices. | |
typedef internal::traits < Derived >::Scalar | Scalar |
typedef internal::packet_traits < Scalar >::type | PacketScalar |
typedef NumTraits< Scalar >::Real | RealScalar |
typedef DenseBase< Derived > | Base |
typedef Base::CoeffReturnType | CoeffReturnType |
typedef Base::ConstTransposeReturnType | ConstTransposeReturnType |
typedef Base::RowXpr | RowXpr |
typedef Base::ColXpr | ColXpr |
typedef Matrix< Scalar, EIGEN_SIZE_MAX(RowsAtCompileTime, ColsAtCompileTime), EIGEN_SIZE_MAX(RowsAtCompileTime, ColsAtCompileTime)> | SquareMatrixType |
typedef Base::PlainObject | PlainObject |
The plain matrix or array type corresponding to this expression. | |
typedef CwiseNullaryOp < internal::scalar_constant_op < Scalar >, PlainObject > | ConstantReturnType |
typedef internal::conditional < NumTraits< Scalar > ::IsComplex, CwiseUnaryOp < internal::scalar_conjugate_op < Scalar > , ConstTransposeReturnType > , ConstTransposeReturnType > ::type | AdjointReturnType |
typedef Matrix< std::complex < RealScalar > , internal::traits< Derived > ::ColsAtCompileTime, 1, ColMajor > | EigenvaluesReturnType |
typedef CwiseNullaryOp < internal::scalar_identity_op < Scalar >, PlainObject > | IdentityReturnType |
typedef Block< const CwiseNullaryOp < internal::scalar_identity_op < Scalar >, SquareMatrixType > , internal::traits< Derived > ::RowsAtCompileTime, internal::traits< Derived > ::ColsAtCompileTime > | BasisReturnType |
typedef CwiseUnaryOp < internal::scalar_multiple_op < Scalar >, const Derived > | ScalarMultipleReturnType |
typedef CwiseUnaryOp < internal::scalar_multiple2_op < Scalar, std::complex< Scalar > >, const Derived > | ScalarComplexMultipleReturnType |
typedef CwiseUnaryOp < internal::scalar_quotient1_op < Scalar >, const Derived > | ScalarQuotient1ReturnType |
typedef internal::conditional < NumTraits< Scalar > ::IsComplex, const CwiseUnaryOp < internal::scalar_conjugate_op < Scalar >, const Derived > , const Derived & >::type | ConjugateReturnType |
typedef internal::conditional < NumTraits< Scalar > ::IsComplex, const CwiseUnaryOp < internal::scalar_real_op < Scalar >, const Derived > , const Derived & >::type | RealReturnType |
typedef internal::conditional < NumTraits< Scalar > ::IsComplex, CwiseUnaryView < internal::scalar_real_ref_op < Scalar >, Derived >, Derived & > ::type | NonConstRealReturnType |
typedef CwiseUnaryOp < internal::scalar_imag_op < Scalar >, const Derived > | ImagReturnType |
typedef CwiseUnaryView < internal::scalar_imag_ref_op < Scalar >, Derived > | NonConstImagReturnType |
typedef CwiseUnaryOp < internal::scalar_opposite_op < Scalar >, const Derived > | NegativeReturnType |
typedef CwiseUnaryOp < internal::scalar_abs_op < Scalar >, const Derived > | CwiseAbsReturnType |
typedef CwiseUnaryOp < internal::scalar_abs2_op < Scalar >, const Derived > | CwiseAbs2ReturnType |
typedef CwiseUnaryOp < internal::scalar_sqrt_op < Scalar >, const Derived > | CwiseSqrtReturnType |
typedef CwiseUnaryOp < internal::scalar_sign_op < Scalar >, const Derived > | CwiseSignReturnType |
typedef CwiseUnaryOp < internal::scalar_inverse_op < Scalar >, const Derived > | CwiseInverseReturnType |
typedef CwiseBinaryOp < internal::scalar_cmp_op < Scalar, internal::cmp_EQ > , const Derived, const ConstantReturnType > | CwiseScalarEqualReturnType |
typedef Diagonal< Derived > | DiagonalReturnType |
typedef internal::add_const < Diagonal< const Derived > >::type | ConstDiagonalReturnType |
typedef Diagonal< Derived, DynamicIndex > | DiagonalDynamicIndexReturnType |
typedef internal::add_const < Diagonal< const Derived, DynamicIndex > >::type | ConstDiagonalDynamicIndexReturnType |
typedef Homogeneous< Derived, HomogeneousReturnTypeDirection > | HomogeneousReturnType |
typedef Block< const Derived, internal::traits< Derived > ::ColsAtCompileTime==1?SizeMinusOne:1, internal::traits< Derived > ::ColsAtCompileTime==1?1:SizeMinusOne > | ConstStartMinusOne |
typedef CwiseUnaryOp < internal::scalar_quotient1_op < typename internal::traits < Derived >::Scalar >, const ConstStartMinusOne > | HNormalizedReturnType |
typedef internal::stem_function < Scalar >::type | StemFunction |
Public Member Functions | |
EIGEN_DEVICE_FUNC Index | diagonalSize () const |
EIGEN_DEVICE_FUNC const NegativeReturnType | operator- () const |
EIGEN_DEVICE_FUNC const ScalarMultipleReturnType | operator* (const Scalar &scalar) const |
EIGEN_DEVICE_FUNC const ScalarQuotient1ReturnType | operator/ (const Scalar &scalar) const |
EIGEN_DEVICE_FUNC const ScalarComplexMultipleReturnType | operator* (const std::complex< Scalar > &scalar) const |
template<typename NewType > | |
EIGEN_DEVICE_FUNC CastXpr < NewType >::Type | cast () const |
EIGEN_DEVICE_FUNC ConjugateReturnType | conjugate () const |
EIGEN_DEVICE_FUNC RealReturnType | real () const |
EIGEN_DEVICE_FUNC const ImagReturnType | imag () const |
template<typename CustomUnaryOp > | |
EIGEN_DEVICE_FUNC const CwiseUnaryOp< CustomUnaryOp, const Derived > | unaryExpr (const CustomUnaryOp &func=CustomUnaryOp()) const |
Apply a unary operator coefficient-wise. | |
template<typename CustomViewOp > | |
EIGEN_DEVICE_FUNC const CwiseUnaryView< CustomViewOp, const Derived > | unaryViewExpr (const CustomViewOp &func=CustomViewOp()) const |
EIGEN_DEVICE_FUNC NonConstRealReturnType | real () |
EIGEN_DEVICE_FUNC NonConstImagReturnType | imag () |
template<typename CustomBinaryOp , typename OtherDerived > | |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseBinaryOp< CustomBinaryOp, const Derived, const OtherDerived > | binaryExpr (const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other, const CustomBinaryOp &func=CustomBinaryOp()) const |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseAbsReturnType | cwiseAbs () const |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseAbs2ReturnType | cwiseAbs2 () const |
EIGEN_DEVICE_FUNC const CwiseSqrtReturnType | cwiseSqrt () const |
EIGEN_DEVICE_FUNC const CwiseSignReturnType | cwiseSign () const |
EIGEN_DEVICE_FUNC const CwiseInverseReturnType | cwiseInverse () const |
template<typename OtherDerived > | |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const | EIGEN_CWISE_PRODUCT_RETURN_TYPE (Derived, OtherDerived) cwiseProduct(const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other) const |
template<typename OtherDerived > | |
EIGEN_DEVICE_FUNC const CwiseBinaryOp< std::equal_to < Scalar >, const Derived, const OtherDerived > | cwiseEqual (const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other) const |
template<typename OtherDerived > | |
EIGEN_DEVICE_FUNC const CwiseBinaryOp < std::not_equal_to< Scalar > , const Derived, const OtherDerived > | cwiseNotEqual (const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other) const |
template<typename OtherDerived > | |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseBinaryOp < internal::scalar_min_op < Scalar >, const Derived, const OtherDerived > | cwiseMin (const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other) const |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseBinaryOp < internal::scalar_min_op < Scalar >, const Derived, const ConstantReturnType > | cwiseMin (const Scalar &other) const |
template<typename OtherDerived > | |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseBinaryOp < internal::scalar_max_op < Scalar >, const Derived, const OtherDerived > | cwiseMax (const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other) const |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseBinaryOp < internal::scalar_max_op < Scalar >, const Derived, const ConstantReturnType > | cwiseMax (const Scalar &other) const |
template<typename OtherDerived > | |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseBinaryOp < internal::scalar_quotient_op < Scalar >, const Derived, const OtherDerived > | cwiseQuotient (const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other) const |
EIGEN_DEVICE_FUNC const CwiseScalarEqualReturnType | cwiseEqual (const Scalar &s) const |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & | operator= (const MatrixBase &other) |
template<typename OtherDerived > | |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & | operator= (const DenseBase< OtherDerived > &other) |
template<typename OtherDerived > | |
EIGEN_DEVICE_FUNC Derived & | operator= (const EigenBase< OtherDerived > &other) |
Copies the generic expression other into *this. | |
template<typename OtherDerived > | |
EIGEN_DEVICE_FUNC Derived & | operator= (const ReturnByValue< OtherDerived > &other) |
template<typename OtherDerived > | |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & | operator+= (const MatrixBase< OtherDerived > &other) |
template<typename OtherDerived > | |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & | operator-= (const MatrixBase< OtherDerived > &other) |
template<typename OtherDerived > | |
const Product< Derived, OtherDerived > | operator* (const MatrixBase< OtherDerived > &other) const |
template<typename OtherDerived > | |
EIGEN_DEVICE_FUNC const Product< Derived, OtherDerived, LazyProduct > | lazyProduct (const MatrixBase< OtherDerived > &other) const |
template<typename OtherDerived > | |
Derived & | operator*= (const EigenBase< OtherDerived > &other) |
template<typename OtherDerived > | |
void | applyOnTheLeft (const EigenBase< OtherDerived > &other) |
template<typename OtherDerived > | |
void | applyOnTheRight (const EigenBase< OtherDerived > &other) |
template<typename DiagonalDerived > | |
EIGEN_DEVICE_FUNC const Product< Derived, DiagonalDerived, LazyProduct > | operator* (const DiagonalBase< DiagonalDerived > &diagonal) const |
template<typename OtherDerived > | |
EIGEN_DEVICE_FUNC internal::scalar_product_traits < typename internal::traits < Derived >::Scalar, typename internal::traits< OtherDerived > ::Scalar >::ReturnType | dot (const MatrixBase< OtherDerived > &other) const |
EIGEN_DEVICE_FUNC RealScalar | squaredNorm () const |
EIGEN_DEVICE_FUNC RealScalar | norm () const |
RealScalar | stableNorm () const |
RealScalar | blueNorm () const |
RealScalar | hypotNorm () const |
EIGEN_DEVICE_FUNC const PlainObject | normalized () const |
EIGEN_DEVICE_FUNC const PlainObject | stableNormalized () const |
EIGEN_DEVICE_FUNC void | normalize () |
EIGEN_DEVICE_FUNC void | stableNormalize () |
EIGEN_DEVICE_FUNC const AdjointReturnType | adjoint () const |
EIGEN_DEVICE_FUNC void | adjointInPlace () |
EIGEN_DEVICE_FUNC DiagonalReturnType | diagonal () |
EIGEN_DEVICE_FUNC ConstDiagonalReturnType | diagonal () const |
template<int Index> | |
EIGEN_DEVICE_FUNC DiagonalIndexReturnType< Index > ::Type | diagonal () |
template<int Index> | |
EIGEN_DEVICE_FUNC ConstDiagonalIndexReturnType < Index >::Type | diagonal () const |
EIGEN_DEVICE_FUNC DiagonalDynamicIndexReturnType | diagonal (Index index) |
EIGEN_DEVICE_FUNC ConstDiagonalDynamicIndexReturnType | diagonal (Index index) const |
template<unsigned int Mode> | |
EIGEN_DEVICE_FUNC TriangularViewReturnType< Mode > ::Type | triangularView () |
template<unsigned int Mode> | |
EIGEN_DEVICE_FUNC ConstTriangularViewReturnType < Mode >::Type | triangularView () const |
template<unsigned int UpLo> | |
EIGEN_DEVICE_FUNC SelfAdjointViewReturnType < UpLo >::Type | selfadjointView () |
template<unsigned int UpLo> | |
EIGEN_DEVICE_FUNC ConstSelfAdjointViewReturnType < UpLo >::Type | selfadjointView () const |
const SparseView< Derived > | sparseView (const Scalar &m_reference=Scalar(0), const typename NumTraits< Scalar >::Real &m_epsilon=NumTraits< Scalar >::dummy_precision()) const |
EIGEN_DEVICE_FUNC const DiagonalWrapper< const Derived > | asDiagonal () const |
const PermutationWrapper < const Derived > | asPermutation () const |
EIGEN_DEVICE_FUNC Derived & | setIdentity () |
EIGEN_DEVICE_FUNC Derived & | setIdentity (Index rows, Index cols) |
Resizes to the given size, and writes the identity expression (not necessarily square) into *this. | |
bool | isIdentity (const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const |
bool | isDiagonal (const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const |
bool | isUpperTriangular (const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const |
bool | isLowerTriangular (const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const |
template<typename OtherDerived > | |
bool | isOrthogonal (const MatrixBase< OtherDerived > &other, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const |
bool | isUnitary (const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const |
template<typename OtherDerived > | |
bool | operator== (const MatrixBase< OtherDerived > &other) const |
template<typename OtherDerived > | |
bool | operator!= (const MatrixBase< OtherDerived > &other) const |
NoAlias< Derived, Eigen::MatrixBase > | noalias () |
const Derived & | forceAlignedAccess () const |
Derived & | forceAlignedAccess () |
template<bool Enable> | |
const Derived & | forceAlignedAccessIf () const |
template<bool Enable> | |
Derived & | forceAlignedAccessIf () |
EIGEN_DEVICE_FUNC Scalar | trace () const |
template<int p> | |
EIGEN_DEVICE_FUNC RealScalar | lpNorm () const |
EIGEN_DEVICE_FUNC MatrixBase < Derived > & | matrix () |
EIGEN_DEVICE_FUNC const MatrixBase< Derived > & | matrix () const |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ArrayWrapper< Derived > | array () |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const ArrayWrapper< const Derived > | array () const |
EIGEN_DEVICE_FUNC const FullPivLU< PlainObject > | fullPivLu () const |
EIGEN_DEVICE_FUNC const PartialPivLU< PlainObject > | partialPivLu () const |
EIGEN_DEVICE_FUNC const PartialPivLU< PlainObject > | lu () const |
EIGEN_DEVICE_FUNC const Inverse< Derived > | inverse () const |
template<typename ResultType > | |
void | computeInverseAndDetWithCheck (ResultType &inverse, typename ResultType::Scalar &determinant, bool &invertible, const RealScalar &absDeterminantThreshold=NumTraits< Scalar >::dummy_precision()) const |
template<typename ResultType > | |
void | computeInverseWithCheck (ResultType &inverse, bool &invertible, const RealScalar &absDeterminantThreshold=NumTraits< Scalar >::dummy_precision()) const |
Scalar | determinant () const |
const LLT< PlainObject > | llt () const |
const LDLT< PlainObject > | ldlt () const |
const HouseholderQR< PlainObject > | householderQr () const |
const ColPivHouseholderQR < PlainObject > | colPivHouseholderQr () const |
const FullPivHouseholderQR < PlainObject > | fullPivHouseholderQr () const |
const CompleteOrthogonalDecomposition < PlainObject > | completeOrthogonalDecomposition () const |
EigenvaluesReturnType | eigenvalues () const |
Computes the eigenvalues of a matrix. | |
RealScalar | operatorNorm () const |
Computes the L2 operator norm. | |
JacobiSVD< PlainObject > | jacobiSvd (unsigned int computationOptions=0) const |
BDCSVD< PlainObject > | bdcSvd (unsigned int computationOptions=0) const |
template<typename OtherDerived > | |
EIGEN_DEVICE_FUNC cross_product_return_type < OtherDerived >::type | cross (const MatrixBase< OtherDerived > &other) const |
template<typename OtherDerived > | |
EIGEN_DEVICE_FUNC PlainObject | cross3 (const MatrixBase< OtherDerived > &other) const |
EIGEN_DEVICE_FUNC PlainObject | unitOrthogonal (void) const |
Matrix< Scalar, 3, 1 > | eulerAngles (Index a0, Index a1, Index a2) const |
ScalarMultipleReturnType | operator* (const UniformScaling< Scalar > &s) const |
HomogeneousReturnType | homogeneous () const |
const HNormalizedReturnType | hnormalized () const |
void | makeHouseholderInPlace (Scalar &tau, RealScalar &beta) |
template<typename EssentialPart > | |
void | makeHouseholder (EssentialPart &essential, Scalar &tau, RealScalar &beta) const |
template<typename EssentialPart > | |
void | applyHouseholderOnTheLeft (const EssentialPart &essential, const Scalar &tau, Scalar *workspace) |
template<typename EssentialPart > | |
void | applyHouseholderOnTheRight (const EssentialPart &essential, const Scalar &tau, Scalar *workspace) |
template<typename OtherScalar > | |
void | applyOnTheLeft (Index p, Index q, const JacobiRotation< OtherScalar > &j) |
template<typename OtherScalar > | |
void | applyOnTheRight (Index p, Index q, const JacobiRotation< OtherScalar > &j) |
template<typename OtherDerived > | |
EIGEN_STRONG_INLINE const SparseMatrixBase< OtherDerived > ::template CwiseProductDenseReturnType < Derived >::Type | cwiseProduct (const SparseMatrixBase< OtherDerived > &other) const |
const MatrixExponentialReturnValue < Derived > | exp () const |
const MatrixFunctionReturnValue < Derived > | matrixFunction (StemFunction f) const |
const MatrixFunctionReturnValue < Derived > | cosh () const |
const MatrixFunctionReturnValue < Derived > | sinh () const |
const MatrixFunctionReturnValue < Derived > | cos () const |
const MatrixFunctionReturnValue < Derived > | sin () const |
const MatrixSquareRootReturnValue < Derived > | sqrt () const |
const MatrixLogarithmReturnValue < Derived > | log () const |
const MatrixPowerReturnValue < Derived > | pow (const RealScalar &p) const |
const MatrixComplexPowerReturnValue < Derived > | pow (const std::complex< RealScalar > &p) const |
Static Public Member Functions | |
static EIGEN_DEVICE_FUNC const IdentityReturnType | Identity () |
static EIGEN_DEVICE_FUNC const IdentityReturnType | Identity (Index rows, Index cols) |
static EIGEN_DEVICE_FUNC const BasisReturnType | Unit (Index size, Index i) |
static EIGEN_DEVICE_FUNC const BasisReturnType | Unit (Index i) |
static EIGEN_DEVICE_FUNC const BasisReturnType | UnitX () |
static EIGEN_DEVICE_FUNC const BasisReturnType | UnitY () |
static EIGEN_DEVICE_FUNC const BasisReturnType | UnitZ () |
static EIGEN_DEVICE_FUNC const BasisReturnType | UnitW () |
Protected Member Functions | |
EIGEN_DEVICE_FUNC | MatrixBase () |
template<typename OtherDerived > | |
Derived & | operator+= (const ArrayBase< OtherDerived > &) |
template<typename OtherDerived > | |
Derived & | operator-= (const ArrayBase< OtherDerived > &) |
Private Member Functions | |
EIGEN_DEVICE_FUNC | MatrixBase (int) |
EIGEN_DEVICE_FUNC | MatrixBase (int, int) |
template<typename OtherDerived > | |
EIGEN_DEVICE_FUNC | MatrixBase (const MatrixBase< OtherDerived > &) |
Friends | |
EIGEN_DEVICE_FUNC friend const ScalarMultipleReturnType | operator* (const Scalar &scalar, const StorageBaseType &matrix) |
EIGEN_DEVICE_FUNC friend const CwiseUnaryOp < internal::scalar_multiple2_op < Scalar, std::complex< Scalar > >, const Derived > | operator* (const std::complex< Scalar > &scalar, const StorageBaseType &matrix) |
Base class for all dense matrices, vectors, and expressions.
This class is the base that is inherited by all matrix, vector, and related expression types. Most of the Eigen API is contained in this class, and its base classes. Other important classes for the Eigen API are Matrix, and VectorwiseOp.
Note that some methods are defined in other modules such as the LU_Module LU module for all functions related to matrix inversions.
Derived | is the derived type, e.g. a matrix type, or an expression, etc. |
When writing a function taking Eigen objects as argument, if you want your function to take as argument any matrix, vector, or expression, just let it take a MatrixBase argument. As an example, here is a function printFirstRow which, given a matrix, vector, or expression x, prints the first row of x.
template<typename Derived> void printFirstRow(const Eigen::MatrixBase<Derived>& x) { cout << x.row(0) << endl; }
This class can be extended with the help of the plugin mechanism described on the page TopicCustomizingEigen by defining the preprocessor symbol EIGEN_MATRIXBASE_PLUGIN
.
Definition at line 48 of file MatrixBase.h.
typedef internal::conditional<NumTraits<Scalar>::IsComplex, CwiseUnaryOp<internal::scalar_conjugate_op<Scalar>, ConstTransposeReturnType>, ConstTransposeReturnType >::type Eigen::MatrixBase< Derived >::AdjointReturnType |
the return type of MatrixBase::adjoint()
Definition at line 114 of file MatrixBase.h.
typedef DenseBase<Derived> Eigen::MatrixBase< Derived >::Base |
Reimplemented from Eigen::DenseBase< Derived >.
Reimplemented in Eigen::MatrixWrapper< ExpressionType >, Eigen::SolveImpl< Decomposition, RhsType, Dense >, and Eigen::Homogeneous< MatrixType, _Direction >.
Definition at line 60 of file MatrixBase.h.
typedef Block<const CwiseNullaryOp<internal::scalar_identity_op<Scalar>, SquareMatrixType>, internal::traits<Derived>::RowsAtCompileTime, internal::traits<Derived>::ColsAtCompileTime> Eigen::MatrixBase< Derived >::BasisReturnType |
the return type of unit vectors
Definition at line 122 of file MatrixBase.h.
typedef Base::CoeffReturnType Eigen::MatrixBase< Derived >::CoeffReturnType |
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 86 of file MatrixBase.h.
typedef Base::ColXpr Eigen::MatrixBase< Derived >::ColXpr |
expression type of a column
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 89 of file MatrixBase.h.
typedef internal::conditional<NumTraits<Scalar>::IsComplex, const CwiseUnaryOp<internal::scalar_conjugate_op<Scalar>, const Derived>, const Derived& >::type Eigen::MatrixBase< Derived >::ConjugateReturnType |
the return type of conjugate()
Definition at line 26 of file MatrixBase.h.
typedef CwiseNullaryOp<internal::scalar_constant_op<Scalar>,PlainObject> Eigen::MatrixBase< Derived >::ConstantReturnType |
Represents a matrix with all coefficients equal to one another
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 109 of file MatrixBase.h.
typedef internal::add_const<Diagonal<const Derived,DynamicIndex> >::type Eigen::MatrixBase< Derived >::ConstDiagonalDynamicIndexReturnType |
Definition at line 234 of file MatrixBase.h.
typedef internal::add_const<Diagonal<const Derived> >::type Eigen::MatrixBase< Derived >::ConstDiagonalReturnType |
Definition at line 218 of file MatrixBase.h.
typedef Block<const Derived, internal::traits<Derived>::ColsAtCompileTime==1 ? SizeMinusOne : 1, internal::traits<Derived>::ColsAtCompileTime==1 ? 1 : SizeMinusOne> Eigen::MatrixBase< Derived >::ConstStartMinusOne |
Definition at line 420 of file MatrixBase.h.
typedef Base::ConstTransposeReturnType Eigen::MatrixBase< Derived >::ConstTransposeReturnType |
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 87 of file MatrixBase.h.
typedef CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const Derived> Eigen::MatrixBase< Derived >::CwiseAbs2ReturnType |
Definition at line 16 of file MatrixBase.h.
typedef CwiseUnaryOp<internal::scalar_abs_op<Scalar>, const Derived> Eigen::MatrixBase< Derived >::CwiseAbsReturnType |
Definition at line 15 of file MatrixBase.h.
typedef CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const Derived> Eigen::MatrixBase< Derived >::CwiseInverseReturnType |
Definition at line 19 of file MatrixBase.h.
typedef CwiseBinaryOp<internal::scalar_cmp_op<Scalar,internal::cmp_EQ>, const Derived, const ConstantReturnType> Eigen::MatrixBase< Derived >::CwiseScalarEqualReturnType |
Definition at line 137 of file MatrixBase.h.
typedef CwiseUnaryOp<internal::scalar_sign_op<Scalar>, const Derived> Eigen::MatrixBase< Derived >::CwiseSignReturnType |
Definition at line 18 of file MatrixBase.h.
typedef CwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const Derived> Eigen::MatrixBase< Derived >::CwiseSqrtReturnType |
Definition at line 17 of file MatrixBase.h.
typedef Diagonal<Derived,DynamicIndex> Eigen::MatrixBase< Derived >::DiagonalDynamicIndexReturnType |
Definition at line 233 of file MatrixBase.h.
typedef Diagonal<Derived> Eigen::MatrixBase< Derived >::DiagonalReturnType |
Definition at line 214 of file MatrixBase.h.
typedef Matrix<std::complex<RealScalar>, internal::traits<Derived>::ColsAtCompileTime, 1, ColMajor> Eigen::MatrixBase< Derived >::EigenvaluesReturnType |
Return type of eigenvalues()
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 116 of file MatrixBase.h.
typedef CwiseUnaryOp<internal::scalar_quotient1_op<typename internal::traits<Derived>::Scalar>, const ConstStartMinusOne > Eigen::MatrixBase< Derived >::HNormalizedReturnType |
Definition at line 422 of file MatrixBase.h.
typedef Homogeneous<Derived, HomogeneousReturnTypeDirection> Eigen::MatrixBase< Derived >::HomogeneousReturnType |
Definition at line 412 of file MatrixBase.h.
typedef CwiseNullaryOp<internal::scalar_identity_op<Scalar>,PlainObject> Eigen::MatrixBase< Derived >::IdentityReturnType |
the return type of identity
Definition at line 118 of file MatrixBase.h.
typedef CwiseUnaryOp<internal::scalar_imag_op<Scalar>, const Derived> Eigen::MatrixBase< Derived >::ImagReturnType |
the return type of imag() const
Definition at line 38 of file MatrixBase.h.
typedef CwiseUnaryOp<internal::scalar_opposite_op<Scalar>, const Derived> Eigen::MatrixBase< Derived >::NegativeReturnType |
Definition at line 42 of file MatrixBase.h.
typedef CwiseUnaryView<internal::scalar_imag_ref_op<Scalar>, Derived> Eigen::MatrixBase< Derived >::NonConstImagReturnType |
the return type of imag()
Definition at line 40 of file MatrixBase.h.
typedef internal::conditional<NumTraits<Scalar>::IsComplex, CwiseUnaryView<internal::scalar_real_ref_op<Scalar>, Derived>, Derived& >::type Eigen::MatrixBase< Derived >::NonConstRealReturnType |
the return type of real()
Definition at line 36 of file MatrixBase.h.
typedef internal::packet_traits<Scalar>::type Eigen::MatrixBase< Derived >::PacketScalar |
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 57 of file MatrixBase.h.
typedef Base::PlainObject Eigen::MatrixBase< Derived >::PlainObject |
The plain matrix or array type corresponding to this expression.
This is not necessarily exactly the return type of eval(). In the case of plain matrices, the return type of eval() is a const reference to a matrix, not a matrix! It is however guaranteed that the return type of eval() is either PlainObject or const PlainObject&.
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 105 of file MatrixBase.h.
typedef internal::conditional<NumTraits<Scalar>::IsComplex, const CwiseUnaryOp<internal::scalar_real_op<Scalar>, const Derived>, const Derived& >::type Eigen::MatrixBase< Derived >::RealReturnType |
the return type of real() const
Definition at line 31 of file MatrixBase.h.
typedef NumTraits<Scalar>::Real Eigen::MatrixBase< Derived >::RealScalar |
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 58 of file MatrixBase.h.
typedef Base::RowXpr Eigen::MatrixBase< Derived >::RowXpr |
expression type of a row
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 88 of file MatrixBase.h.
typedef internal::traits<Derived>::Scalar Eigen::MatrixBase< Derived >::Scalar |
The numeric type of the expression' coefficients, e.g. float, double, int or std::complex<float>, etc.
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 56 of file MatrixBase.h.
typedef CwiseUnaryOp<internal::scalar_multiple2_op<Scalar,std::complex<Scalar> >, const Derived> Eigen::MatrixBase< Derived >::ScalarComplexMultipleReturnType |
Definition at line 18 of file MatrixBase.h.
typedef CwiseUnaryOp<internal::scalar_multiple_op<Scalar>, const Derived> Eigen::MatrixBase< Derived >::ScalarMultipleReturnType |
Represents a scalar multiple of an expression
Definition at line 17 of file MatrixBase.h.
typedef CwiseUnaryOp<internal::scalar_quotient1_op<Scalar>, const Derived> Eigen::MatrixBase< Derived >::ScalarQuotient1ReturnType |
Represents a quotient of an expression by a scalar
Definition at line 21 of file MatrixBase.h.
typedef Matrix<Scalar,EIGEN_SIZE_MAX(RowsAtCompileTime,ColsAtCompileTime), EIGEN_SIZE_MAX(RowsAtCompileTime,ColsAtCompileTime)> Eigen::MatrixBase< Derived >::SquareMatrixType |
type of the equivalent square matrix
Definition at line 97 of file MatrixBase.h.
typedef internal::stem_function<Scalar>::type Eigen::MatrixBase< Derived >::StemFunction |
Definition at line 459 of file MatrixBase.h.
typedef MatrixBase Eigen::MatrixBase< Derived >::StorageBaseType |
Definition at line 53 of file MatrixBase.h.
typedef internal::traits<Derived>::StorageIndex Eigen::MatrixBase< Derived >::StorageIndex |
The type used to store indices.
This typedef is relevant for types that store multiple indices such as PermutationMatrix or Transpositions, otherwise it defaults to Eigen::Index
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 55 of file MatrixBase.h.
typedef internal::traits<Derived>::StorageKind Eigen::MatrixBase< Derived >::StorageKind |
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 54 of file MatrixBase.h.
anonymous enum |
Definition at line 410 of file MatrixBase.h.
{ HomogeneousReturnTypeDirection = ColsAtCompileTime==1&&RowsAtCompileTime==1 ? ((internal::traits<Derived>::Flags&RowMajorBit)==RowMajorBit ? Horizontal : Vertical) : ColsAtCompileTime==1 ? Vertical : Horizontal };
anonymous enum |
Definition at line 415 of file MatrixBase.h.
{ SizeMinusOne = SizeAtCompileTime==Dynamic ? Dynamic : SizeAtCompileTime-1 };
EIGEN_DEVICE_FUNC Eigen::MatrixBase< Derived >::MatrixBase | ( | ) | [inline, protected] |
Definition at line 472 of file MatrixBase.h.
: Base() {}
EIGEN_DEVICE_FUNC Eigen::MatrixBase< Derived >::MatrixBase | ( | int | ) | [explicit, private] |
EIGEN_DEVICE_FUNC Eigen::MatrixBase< Derived >::MatrixBase | ( | int | , |
int | |||
) | [private] |
EIGEN_DEVICE_FUNC Eigen::MatrixBase< Derived >::MatrixBase | ( | const MatrixBase< OtherDerived > & | ) | [explicit, private] |
const MatrixBase< Derived >::AdjointReturnType Eigen::MatrixBase< Derived >::adjoint | ( | ) | const [inline] |
Example:
Output:
m = m.adjoint(); // bug!!! caused by aliasing effect
m.adjointInPlace();
m = m.adjoint().eval();
Definition at line 205 of file Transpose.h.
{ return AdjointReturnType(this->transpose()); }
void Eigen::MatrixBase< Derived >::adjointInPlace | ( | ) | [inline] |
This is the "in place" version of adjoint(): it replaces *this
by its own transpose. Thus, doing
m.adjointInPlace();
has the same effect on m as doing
m = m.adjoint().eval();
and is faster and also safer because in the latter line of code, forgetting the eval() results in a bug caused by aliasing.
Notice however that this method is only useful if you want to replace a matrix by its own adjoint. If you just need the adjoint of a matrix, use adjoint().
*this
must be a resizable matrix. This excludes (non-square) fixed-size matrices, block-expressions and maps.Definition at line 310 of file Transpose.h.
{ derived() = adjoint().eval(); }
void Eigen::MatrixBase< Derived >::applyHouseholderOnTheLeft | ( | const EssentialPart & | essential, |
const Scalar & | tau, | ||
Scalar * | workspace | ||
) |
Apply the elementary reflector H given by with
from the left to a vector or matrix.
On input:
essential | the essential part of the vector v |
tau | the scaling factor of the Householder transformation |
workspace | a pointer to working space with at least this->cols() * essential.size() entries |
Definition at line 113 of file Householder.h.
{ if(rows() == 1) { *this *= Scalar(1)-tau; } else { Map<typename internal::plain_row_type<PlainObject>::type> tmp(workspace,cols()); Block<Derived, EssentialPart::SizeAtCompileTime, Derived::ColsAtCompileTime> bottom(derived(), 1, 0, rows()-1, cols()); tmp.noalias() = essential.adjoint() * bottom; tmp += this->row(0); this->row(0) -= tau * tmp; bottom.noalias() -= tau * essential * tmp; } }
void Eigen::MatrixBase< Derived >::applyHouseholderOnTheRight | ( | const EssentialPart & | essential, |
const Scalar & | tau, | ||
Scalar * | workspace | ||
) |
Apply the elementary reflector H given by with
from the right to a vector or matrix.
On input:
essential | the essential part of the vector v |
tau | the scaling factor of the Householder transformation |
workspace | a pointer to working space with at least this->cols() * essential.size() entries |
Definition at line 150 of file Householder.h.
{ if(cols() == 1) { *this *= Scalar(1)-tau; } else { Map<typename internal::plain_col_type<PlainObject>::type> tmp(workspace,rows()); Block<Derived, Derived::RowsAtCompileTime, EssentialPart::SizeAtCompileTime> right(derived(), 0, 1, rows(), cols()-1); tmp.noalias() = right * essential.conjugate(); tmp += this->col(0); this->col(0) -= tau * tmp; right.noalias() -= tau * tmp * essential.transpose(); } }
void Eigen::MatrixBase< Derived >::applyOnTheLeft | ( | const EigenBase< OtherDerived > & | other | ) | [inline] |
replaces *this
by other * *this
.
Example:
Output:
Definition at line 527 of file MatrixBase.h.
{ other.derived().applyThisOnTheLeft(derived()); }
void Eigen::MatrixBase< Derived >::applyOnTheLeft | ( | Index | p, |
Index | q, | ||
const JacobiRotation< OtherScalar > & | j | ||
) | [inline] |
Applies the rotation in the plane j to the rows p and q of *this
, i.e., it computes B = J * B, with .
Definition at line 277 of file Jacobi.h.
{ RowXpr x(this->row(p)); RowXpr y(this->row(q)); internal::apply_rotation_in_the_plane(x, y, j); }
void Eigen::MatrixBase< Derived >::applyOnTheRight | ( | const EigenBase< OtherDerived > & | other | ) | [inline] |
replaces *this
by *this
* other. It is equivalent to MatrixBase::operator*=().
Example:
Output:
Definition at line 515 of file MatrixBase.h.
{ other.derived().applyThisOnTheRight(derived()); }
void Eigen::MatrixBase< Derived >::applyOnTheRight | ( | Index | p, |
Index | q, | ||
const JacobiRotation< OtherScalar > & | j | ||
) | [inline] |
Applies the rotation in the plane j to the columns p and q of *this
, i.e., it computes B = B * J with .
Definition at line 292 of file Jacobi.h.
{ ColXpr x(this->col(p)); ColXpr y(this->col(q)); internal::apply_rotation_in_the_plane(x, y, j.transpose()); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ArrayWrapper<Derived> Eigen::MatrixBase< Derived >::array | ( | ) | [inline] |
Definition at line 326 of file MatrixBase.h.
{ return ArrayWrapper<Derived>(derived()); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const ArrayWrapper<const Derived> Eigen::MatrixBase< Derived >::array | ( | ) | const [inline] |
Definition at line 329 of file MatrixBase.h.
{ return ArrayWrapper<const Derived>(derived()); }
const DiagonalWrapper< const Derived > Eigen::MatrixBase< Derived >::asDiagonal | ( | ) | const [inline] |
Example:
Output:
Definition at line 278 of file DiagonalMatrix.h.
{
return DiagonalWrapper<const Derived>(derived());
}
const PermutationWrapper< const Derived > Eigen::MatrixBase< Derived >::asPermutation | ( | ) | const |
Definition at line 620 of file PermutationMatrix.h.
{
return derived();
}
BDCSVD< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::bdcSvd | ( | unsigned int | computationOptions = 0 | ) | const [inline] |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseBinaryOp<CustomBinaryOp, const Derived, const OtherDerived> Eigen::MatrixBase< Derived >::binaryExpr | ( | const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > & | other, |
const CustomBinaryOp & | func = CustomBinaryOp() |
||
) | const [inline] |
*this
and other *this
and other The template parameter CustomBinaryOp is the type of the functor of the custom operator (see class CwiseBinaryOp for an example)
Here is an example illustrating the use of custom functors:
Output:
Definition at line 44 of file MatrixBase.h.
: public DenseBase<Derived>
NumTraits< typename internal::traits< Derived >::Scalar >::Real Eigen::MatrixBase< Derived >::blueNorm | ( | ) | const [inline] |
*this
using the Blue's algorithm. A Portable Fortran Program to Find the Euclidean Norm of a Vector, ACM TOMS, Vol 4, Issue 1, 1978.For architecture/scalar types without vectorization, this version is much faster than stableNorm(). Otherwise the stableNorm() is faster.
Definition at line 200 of file StableNorm.h.
{ return internal::blueNorm_impl(*this); }
EIGEN_DEVICE_FUNC CastXpr<NewType>::Type Eigen::MatrixBase< Derived >::cast | ( | ) | const [inline] |
The template parameter NewScalar is the type we are casting the scalars to.
Definition at line 105 of file MatrixBase.h.
const ColPivHouseholderQR< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::colPivHouseholderQr | ( | ) | const [inline] |
*this
.Definition at line 631 of file ColPivHouseholderQR.h.
{ return ColPivHouseholderQR<PlainObject>(eval()); }
const CompleteOrthogonalDecomposition< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::completeOrthogonalDecomposition | ( | ) | const [inline] |
*this
.Definition at line 535 of file CompleteOrthogonalDecomposition.h.
{ return CompleteOrthogonalDecomposition<PlainObject>(eval()); }
void Eigen::MatrixBase< Derived >::computeInverseAndDetWithCheck | ( | ResultType & | inverse, |
typename ResultType::Scalar & | determinant, | ||
bool & | invertible, | ||
const RealScalar & | absDeterminantThreshold = NumTraits<Scalar>::dummy_precision() |
||
) | const [inline] |
Computation of matrix inverse and determinant, with invertibility check.
This is only for fixed-size square matrices of size up to 4x4.
inverse | Reference to the matrix in which to store the inverse. |
determinant | Reference to the variable in which to store the determinant. |
invertible | Reference to the bool variable in which to store whether the matrix is invertible. |
absDeterminantThreshold | Optional parameter controlling the invertibility check. The matrix will be declared invertible if the absolute value of its determinant is greater than this threshold. |
Example:
Output:
Definition at line 358 of file InverseImpl.h.
{ // i'd love to put some static assertions there, but SFINAE means that they have no effect... eigen_assert(rows() == cols()); // for 2x2, it's worth giving a chance to avoid evaluating. // for larger sizes, evaluating has negligible cost and limits code size. typedef typename internal::conditional< RowsAtCompileTime == 2, typename internal::remove_all<typename internal::nested_eval<Derived, 2>::type>::type, PlainObject >::type MatrixType; internal::compute_inverse_and_det_with_check<MatrixType, ResultType>::run (derived(), absDeterminantThreshold, inverse, determinant, invertible); }
void Eigen::MatrixBase< Derived >::computeInverseWithCheck | ( | ResultType & | inverse, |
bool & | invertible, | ||
const RealScalar & | absDeterminantThreshold = NumTraits<Scalar>::dummy_precision() |
||
) | const [inline] |
Computation of matrix inverse, with invertibility check.
This is only for fixed-size square matrices of size up to 4x4.
inverse | Reference to the matrix in which to store the inverse. |
invertible | Reference to the bool variable in which to store whether the matrix is invertible. |
absDeterminantThreshold | Optional parameter controlling the invertibility check. The matrix will be declared invertible if the absolute value of its determinant is greater than this threshold. |
Example:
Output:
Definition at line 397 of file InverseImpl.h.
{ RealScalar determinant; // i'd love to put some static assertions there, but SFINAE means that they have no effect... eigen_assert(rows() == cols()); computeInverseAndDetWithCheck(inverse,determinant,invertible,absDeterminantThreshold); }
EIGEN_DEVICE_FUNC ConjugateReturnType Eigen::MatrixBase< Derived >::conjugate | ( | ) | const [inline] |
*this
.Definition at line 115 of file MatrixBase.h.
const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::cos | ( | ) | const |
const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::cosh | ( | ) | const |
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseAbsReturnType Eigen::MatrixBase< Derived >::cwiseAbs | ( | ) | const [inline] |
*this
Example:
Output:
Definition at line 30 of file MatrixBase.h.
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseAbs2ReturnType Eigen::MatrixBase< Derived >::cwiseAbs2 | ( | ) | const [inline] |
*this
Example:
Output:
Definition at line 41 of file MatrixBase.h.
: public DenseBase<Derived>
EIGEN_DEVICE_FUNC const CwiseBinaryOp<std::equal_to<Scalar>, const Derived, const OtherDerived> Eigen::MatrixBase< Derived >::cwiseEqual | ( | const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > & | other | ) | const [inline] |
Example:
Output:
Definition at line 44 of file MatrixBase.h.
: public DenseBase<Derived>
EIGEN_DEVICE_FUNC const CwiseScalarEqualReturnType Eigen::MatrixBase< Derived >::cwiseEqual | ( | const Scalar & | s | ) | const [inline] |
*this
and a scalar s Definition at line 150 of file MatrixBase.h.
{ return this->lazyProduct(other); }
EIGEN_DEVICE_FUNC const CwiseInverseReturnType Eigen::MatrixBase< Derived >::cwiseInverse | ( | ) | const [inline] |
Example:
Output:
Definition at line 74 of file MatrixBase.h.
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseBinaryOp<internal::scalar_max_op<Scalar>, const Derived, const OtherDerived> Eigen::MatrixBase< Derived >::cwiseMax | ( | const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > & | other | ) | const [inline] |
Example:
Output:
Definition at line 105 of file MatrixBase.h.
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseBinaryOp<internal::scalar_max_op<Scalar>, const Derived, const ConstantReturnType> Eigen::MatrixBase< Derived >::cwiseMax | ( | const Scalar & | other | ) | const [inline] |
Definition at line 116 of file MatrixBase.h.
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseBinaryOp<internal::scalar_min_op<Scalar>, const Derived, const OtherDerived> Eigen::MatrixBase< Derived >::cwiseMin | ( | const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > & | other | ) | const [inline] |
Example:
Output:
Definition at line 79 of file MatrixBase.h.
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseBinaryOp<internal::scalar_min_op<Scalar>, const Derived, const ConstantReturnType> Eigen::MatrixBase< Derived >::cwiseMin | ( | const Scalar & | other | ) | const [inline] |
Definition at line 90 of file MatrixBase.h.
{ return (std::min)(rows(),cols()); }
EIGEN_DEVICE_FUNC const CwiseBinaryOp<std::not_equal_to<Scalar>, const Derived, const OtherDerived> Eigen::MatrixBase< Derived >::cwiseNotEqual | ( | const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > & | other | ) | const [inline] |
Example:
Output:
Definition at line 64 of file MatrixBase.h.
EIGEN_STRONG_INLINE const SparseMatrixBase<OtherDerived>::template CwiseProductDenseReturnType<Derived>::Type Eigen::MatrixBase< Derived >::cwiseProduct | ( | const SparseMatrixBase< OtherDerived > & | other | ) | const [inline] |
Definition at line 452 of file MatrixBase.h.
{
return other.cwiseProduct(derived());
}
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseBinaryOp<internal::scalar_quotient_op<Scalar>, const Derived, const OtherDerived> Eigen::MatrixBase< Derived >::cwiseQuotient | ( | const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > & | other | ) | const [inline] |
Example:
Output:
Definition at line 132 of file MatrixBase.h.
{ return this->lazyProduct(other); }
EIGEN_DEVICE_FUNC const CwiseSignReturnType Eigen::MatrixBase< Derived >::cwiseSign | ( | ) | const [inline] |
Example:
Output:
Definition at line 62 of file MatrixBase.h.
EIGEN_DEVICE_FUNC const CwiseSqrtReturnType Eigen::MatrixBase< Derived >::cwiseSqrt | ( | ) | const [inline] |
Example:
Output:
Definition at line 52 of file MatrixBase.h.
internal::traits< Derived >::Scalar Eigen::MatrixBase< Derived >::determinant | ( | ) | const [inline] |
Definition at line 92 of file Determinant.h.
{ eigen_assert(rows() == cols()); typedef typename internal::nested_eval<Derived,Base::RowsAtCompileTime>::type Nested; return internal::determinant_impl<typename internal::remove_all<Nested>::type>::run(derived()); }
MatrixBase< Derived >::template DiagonalIndexReturnType< Index_ >::Type Eigen::MatrixBase< Derived >::diagonal | ( | ) | [inline] |
*this
*this
is not required to be square.
Example:
Output:
*this
*this
is not required to be square.
The template parameter DiagIndex represent a super diagonal if DiagIndex > 0 and a sub diagonal otherwise. DiagIndex == 0 is equivalent to the main diagonal.
Example:
Output:
Definition at line 188 of file Diagonal.h.
{ return DiagonalReturnType(derived()); }
MatrixBase< Derived >::template ConstDiagonalIndexReturnType< Index_ >::Type Eigen::MatrixBase< Derived >::diagonal | ( | ) | const [inline] |
This is the const version of diagonal().
This is the const version of diagonal<int>().
Definition at line 196 of file Diagonal.h.
{ return ConstDiagonalReturnType(derived()); }
EIGEN_DEVICE_FUNC DiagonalIndexReturnType<Index>::Type Eigen::MatrixBase< Derived >::diagonal | ( | ) |
EIGEN_DEVICE_FUNC ConstDiagonalIndexReturnType<Index>::Type Eigen::MatrixBase< Derived >::diagonal | ( | ) | const |
MatrixBase< Derived >::DiagonalDynamicIndexReturnType Eigen::MatrixBase< Derived >::diagonal | ( | Index | index | ) | [inline] |
*this
*this
is not required to be square.
The template parameter DiagIndex represent a super diagonal if DiagIndex > 0 and a sub diagonal otherwise. DiagIndex == 0 is equivalent to the main diagonal.
Example:
Output:
Definition at line 214 of file Diagonal.h.
{ return DiagonalDynamicIndexReturnType(derived(), index); }
MatrixBase< Derived >::ConstDiagonalDynamicIndexReturnType Eigen::MatrixBase< Derived >::diagonal | ( | Index | index | ) | const [inline] |
This is the const version of diagonal(Index).
Definition at line 222 of file Diagonal.h.
{ return ConstDiagonalDynamicIndexReturnType(derived(), index); }
EIGEN_DEVICE_FUNC Index Eigen::MatrixBase< Derived >::diagonalSize | ( | ) | const [inline] |
Definition at line 103 of file MatrixBase.h.
{ return (std::min)(rows(),cols()); }
EIGEN_DEVICE_FUNC internal::scalar_product_traits< typename internal::traits< Derived >::Scalar, typename internal::traits< OtherDerived >::Scalar >::ReturnType Eigen::MatrixBase< Derived >::dot | ( | const MatrixBase< OtherDerived > & | other | ) | const |
Definition at line 66 of file Dot.h.
{ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived) EIGEN_STATIC_ASSERT_VECTOR_ONLY(OtherDerived) EIGEN_STATIC_ASSERT_SAME_VECTOR_SIZE(Derived,OtherDerived) typedef internal::scalar_conj_product_op<Scalar,typename OtherDerived::Scalar> func; EIGEN_CHECK_BINARY_COMPATIBILIY(func,Scalar,typename OtherDerived::Scalar); eigen_assert(size() == other.size()); return internal::dot_nocheck<Derived,OtherDerived>::run(*this, other); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Eigen::MatrixBase< Derived >::EIGEN_CWISE_PRODUCT_RETURN_TYPE | ( | Derived | , |
OtherDerived | |||
) | const [inline] |
Example:
Output:
Definition at line 23 of file MatrixBase.h.
MatrixBase< Derived >::EigenvaluesReturnType Eigen::MatrixBase< Derived >::eigenvalues | ( | ) | const [inline] |
Computes the eigenvalues of a matrix.
This function computes the eigenvalues with the help of the EigenSolver class (for real matrices) or the ComplexEigenSolver class (for complex matrices).
The eigenvalues are repeated according to their algebraic multiplicity, so there are as many eigenvalues as rows in the matrix.
The SelfAdjointView class provides a better algorithm for selfadjoint matrices.
Example:
Output:
Definition at line 67 of file MatrixBaseEigenvalues.h.
{ typedef typename internal::traits<Derived>::Scalar Scalar; return internal::eigenvalues_selector<Derived, NumTraits<Scalar>::IsComplex>::run(derived()); }
const MatrixExponentialReturnValue<Derived> Eigen::MatrixBase< Derived >::exp | ( | ) | const |
const ForceAlignedAccess< Derived > Eigen::MatrixBase< Derived >::forceAlignedAccess | ( | ) | const [inline] |
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 312 of file MatrixBase.h.
{ return derived(); }
ForceAlignedAccess< Derived > Eigen::MatrixBase< Derived >::forceAlignedAccess | ( | ) | [inline] |
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 313 of file MatrixBase.h.
{ return derived(); }
internal::add_const_on_value_type< typename internal::conditional< Enable, ForceAlignedAccess< Derived >, Derived & >::type >::type Eigen::MatrixBase< Derived >::forceAlignedAccessIf | ( | ) | const [inline] |
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 314 of file MatrixBase.h.
{ return derived(); }
internal::conditional< Enable, ForceAlignedAccess< Derived >, Derived & >::type Eigen::MatrixBase< Derived >::forceAlignedAccessIf | ( | ) | [inline] |
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 315 of file MatrixBase.h.
{ return derived(); }
const FullPivHouseholderQR< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::fullPivHouseholderQr | ( | ) | const [inline] |
*this
.Definition at line 654 of file FullPivHouseholderQR.h.
{ return FullPivHouseholderQR<PlainObject>(eval()); }
const FullPivLU< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::fullPivLu | ( | ) | const [inline] |
*this
.Definition at line 853 of file FullPivLU.h.
{ return FullPivLU<PlainObject>(eval()); }
const HouseholderQR< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::householderQr | ( | ) | const [inline] |
*this
.Definition at line 384 of file HouseholderQR.h.
{ return HouseholderQR<PlainObject>(eval()); }
NumTraits< typename internal::traits< Derived >::Scalar >::Real Eigen::MatrixBase< Derived >::hypotNorm | ( | ) | const [inline] |
*this
avoiding undeflow and overflow. This version use a concatenation of hypot() calls, and it is very slow.Definition at line 212 of file StableNorm.h.
{ return this->cwiseAbs().redux(internal::scalar_hypot_op<RealScalar>()); }
EIGEN_STRONG_INLINE const MatrixBase< Derived >::IdentityReturnType Eigen::MatrixBase< Derived >::Identity | ( | ) | [static] |
This variant is only for fixed-size MatrixBase types. For dynamic-size types, you need to use the variant taking size arguments.
Example:
Output:
Definition at line 704 of file CwiseNullaryOp.h.
{ EIGEN_STATIC_ASSERT_FIXED_SIZE(Derived) return MatrixBase<Derived>::NullaryExpr(RowsAtCompileTime, ColsAtCompileTime, internal::scalar_identity_op<Scalar>()); }
EIGEN_STRONG_INLINE const MatrixBase< Derived >::IdentityReturnType Eigen::MatrixBase< Derived >::Identity | ( | Index | rows, |
Index | cols | ||
) | [static] |
The parameters rows and cols are the number of rows and of columns of the returned matrix. Must be compatible with this MatrixBase type.
This variant is meant to be used for dynamic-size matrix types. For fixed-size types, it is redundant to pass rows and cols as arguments, so Identity() should be used instead.
Example:
Output:
Definition at line 687 of file CwiseNullaryOp.h.
{ return DenseBase<Derived>::NullaryExpr(rows, cols, internal::scalar_identity_op<Scalar>()); }
EIGEN_DEVICE_FUNC const ImagReturnType Eigen::MatrixBase< Derived >::imag | ( | ) | const [inline] |
*this
.Definition at line 132 of file MatrixBase.h.
{ return this->lazyProduct(other); }
EIGEN_DEVICE_FUNC NonConstImagReturnType Eigen::MatrixBase< Derived >::imag | ( | ) | [inline] |
*this
.Definition at line 192 of file MatrixBase.h.
const Inverse< Derived > Eigen::MatrixBase< Derived >::inverse | ( | ) | const [inline] |
For small fixed sizes up to 4x4, this method uses cofactors. In the general case, this method uses class PartialPivLU.
Definition at line 331 of file InverseImpl.h.
{ EIGEN_STATIC_ASSERT(!NumTraits<Scalar>::IsInteger,THIS_FUNCTION_IS_NOT_FOR_INTEGER_NUMERIC_TYPES) eigen_assert(rows() == cols()); return Inverse<Derived>(derived()); }
bool Eigen::MatrixBase< Derived >::isDiagonal | ( | const RealScalar & | prec = NumTraits<Scalar>::dummy_precision() | ) | const |
Example:
Output:
Definition at line 292 of file DiagonalMatrix.h.
{ using std::abs; if(cols() != rows()) return false; RealScalar maxAbsOnDiagonal = static_cast<RealScalar>(-1); for(Index j = 0; j < cols(); ++j) { RealScalar absOnDiagonal = abs(coeff(j,j)); if(absOnDiagonal > maxAbsOnDiagonal) maxAbsOnDiagonal = absOnDiagonal; } for(Index j = 0; j < cols(); ++j) for(Index i = 0; i < j; ++i) { if(!internal::isMuchSmallerThan(coeff(i, j), maxAbsOnDiagonal, prec)) return false; if(!internal::isMuchSmallerThan(coeff(j, i), maxAbsOnDiagonal, prec)) return false; } return true; }
bool Eigen::MatrixBase< Derived >::isIdentity | ( | const RealScalar & | prec = NumTraits<Scalar>::dummy_precision() | ) | const |
Example:
Output:
Definition at line 721 of file CwiseNullaryOp.h.
{ typename internal::nested_eval<Derived,1>::type self(derived()); for(Index j = 0; j < cols(); ++j) { for(Index i = 0; i < rows(); ++i) { if(i == j) { if(!internal::isApprox(self.coeff(i, j), static_cast<Scalar>(1), prec)) return false; } else { if(!internal::isMuchSmallerThan(self.coeff(i, j), static_cast<RealScalar>(1), prec)) return false; } } } return true; }
bool Eigen::MatrixBase< Derived >::isLowerTriangular | ( | const RealScalar & | prec = NumTraits<Scalar>::dummy_precision() | ) | const |
Definition at line 668 of file TriangularMatrix.h.
{ using std::abs; RealScalar maxAbsOnLowerPart = static_cast<RealScalar>(-1); for(Index j = 0; j < cols(); ++j) for(Index i = j; i < rows(); ++i) { RealScalar absValue = abs(coeff(i,j)); if(absValue > maxAbsOnLowerPart) maxAbsOnLowerPart = absValue; } RealScalar threshold = maxAbsOnLowerPart * prec; for(Index j = 1; j < cols(); ++j) { Index maxi = (std::min)(j, rows()-1); for(Index i = 0; i < maxi; ++i) if(abs(coeff(i, j)) > threshold) return false; } return true; }
bool Eigen::MatrixBase< Derived >::isOrthogonal | ( | const MatrixBase< OtherDerived > & | other, |
const RealScalar & | prec = NumTraits<Scalar>::dummy_precision() |
||
) | const |
Example:
Output:
Definition at line 270 of file Dot.h.
{ typename internal::nested_eval<Derived,2>::type nested(derived()); typename internal::nested_eval<OtherDerived,2>::type otherNested(other.derived()); return numext::abs2(nested.dot(otherNested)) <= prec * prec * nested.squaredNorm() * otherNested.squaredNorm(); }
bool Eigen::MatrixBase< Derived >::isUnitary | ( | const RealScalar & | prec = NumTraits<Scalar>::dummy_precision() | ) | const |
m.isUnitary()
returns true if and only if the columns (equivalently, the rows) of m form an orthonormal basis.Example:
Output:
Definition at line 289 of file Dot.h.
{ typename internal::nested_eval<Derived,1>::type self(derived()); for(Index i = 0; i < cols(); ++i) { if(!internal::isApprox(self.col(i).squaredNorm(), static_cast<RealScalar>(1), prec)) return false; for(Index j = 0; j < i; ++j) if(!internal::isMuchSmallerThan(self.col(i).dot(self.col(j)), static_cast<Scalar>(1), prec)) return false; } return true; }
bool Eigen::MatrixBase< Derived >::isUpperTriangular | ( | const RealScalar & | prec = NumTraits<Scalar>::dummy_precision() | ) | const |
Definition at line 642 of file TriangularMatrix.h.
{ using std::abs; RealScalar maxAbsOnUpperPart = static_cast<RealScalar>(-1); for(Index j = 0; j < cols(); ++j) { Index maxi = (std::min)(j, rows()-1); for(Index i = 0; i <= maxi; ++i) { RealScalar absValue = abs(coeff(i,j)); if(absValue > maxAbsOnUpperPart) maxAbsOnUpperPart = absValue; } } RealScalar threshold = maxAbsOnUpperPart * prec; for(Index j = 0; j < cols(); ++j) for(Index i = j+1; i < rows(); ++i) if(abs(coeff(i, j)) > threshold) return false; return true; }
JacobiSVD< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::jacobiSvd | ( | unsigned int | computationOptions = 0 | ) | const [inline] |
*this
computed by two-sided Jacobi transformations.Definition at line 795 of file JacobiSVD.h.
{ return JacobiSVD<PlainObject>(*this, computationOptions); }
const Product< Derived, OtherDerived, LazyProduct > Eigen::MatrixBase< Derived >::lazyProduct | ( | const MatrixBase< OtherDerived > & | other | ) | const |
*this
and other without implicit evaluation.The returned product will behave like any other expressions: the coefficients of the product will be computed once at a time as requested. This might be useful in some extremely rare cases when only a small and no coherent fraction of the result's coefficients have to be computed.
Definition at line 411 of file GeneralProduct.h.
{ enum { ProductIsValid = Derived::ColsAtCompileTime==Dynamic || OtherDerived::RowsAtCompileTime==Dynamic || int(Derived::ColsAtCompileTime)==int(OtherDerived::RowsAtCompileTime), AreVectors = Derived::IsVectorAtCompileTime && OtherDerived::IsVectorAtCompileTime, SameSizes = EIGEN_PREDICATE_SAME_MATRIX_SIZE(Derived,OtherDerived) }; // note to the lost user: // * for a dot product use: v1.dot(v2) // * for a coeff-wise product use: v1.cwiseProduct(v2) EIGEN_STATIC_ASSERT(ProductIsValid || !(AreVectors && SameSizes), INVALID_VECTOR_VECTOR_PRODUCT__IF_YOU_WANTED_A_DOT_OR_COEFF_WISE_PRODUCT_YOU_MUST_USE_THE_EXPLICIT_FUNCTIONS) EIGEN_STATIC_ASSERT(ProductIsValid || !(SameSizes && !AreVectors), INVALID_MATRIX_PRODUCT__IF_YOU_WANTED_A_COEFF_WISE_PRODUCT_YOU_MUST_USE_THE_EXPLICIT_FUNCTION) EIGEN_STATIC_ASSERT(ProductIsValid || SameSizes, INVALID_MATRIX_PRODUCT) return Product<Derived,OtherDerived,LazyProduct>(derived(), other.derived()); }
const LDLT< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::ldlt | ( | ) | const [inline] |
*this
Definition at line 593 of file LDLT.h.
{
return LDLT<PlainObject>(derived());
}
const LLT< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::llt | ( | ) | const [inline] |
*this
Definition at line 470 of file LLT.h.
{
return LLT<PlainObject>(derived());
}
const MatrixLogarithmReturnValue<Derived> Eigen::MatrixBase< Derived >::log | ( | ) | const |
NumTraits< typename internal::traits< Derived >::Scalar >::Real Eigen::MatrixBase< Derived >::lpNorm | ( | ) | const [inline] |
*this
, that is, returns the p-th root of the sum of the p-th powers of the absolute values of the coefficients of *this
. If p is the special value Eigen::Infinity, this function returns the *this
.*this
is a matrix, then its coefficients are interpreted as a 1D vector. Nonetheless, you can easily compute the 1-norm and Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 254 of file Dot.h.
{ return internal::lpNorm_selector<Derived, p>::run(*this); }
const PartialPivLU< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::lu | ( | ) | const [inline] |
Synonym of partialPivLu().
*this
.Definition at line 555 of file PartialPivLU.h.
{ return PartialPivLU<PlainObject>(eval()); }
void Eigen::MatrixBase< Derived >::makeHouseholder | ( | EssentialPart & | essential, |
Scalar & | tau, | ||
RealScalar & | beta | ||
) | const |
Computes the elementary reflector H such that: where the transformation H is:
and the vector v is:
On output:
essential | the essential part of the vector v |
tau | the scaling factor of the Householder transformation |
beta | the result of H * *this |
Definition at line 65 of file Householder.h.
{ using std::sqrt; using numext::conj; EIGEN_STATIC_ASSERT_VECTOR_ONLY(EssentialPart) VectorBlock<const Derived, EssentialPart::SizeAtCompileTime> tail(derived(), 1, size()-1); RealScalar tailSqNorm = size()==1 ? RealScalar(0) : tail.squaredNorm(); Scalar c0 = coeff(0); const RealScalar tol = (std::numeric_limits<RealScalar>::min)(); if(tailSqNorm <= tol && numext::abs2(numext::imag(c0))<=tol) { tau = RealScalar(0); beta = numext::real(c0); essential.setZero(); } else { beta = sqrt(numext::abs2(c0) + tailSqNorm); if (numext::real(c0)>=RealScalar(0)) beta = -beta; essential = tail / (c0 - beta); tau = conj((beta - c0) / beta); } }
void Eigen::MatrixBase< Derived >::makeHouseholderInPlace | ( | Scalar & | tau, |
RealScalar & | beta | ||
) |
Computes the elementary reflector H such that: where the transformation H is:
and the vector v is:
The essential part of the vector v
is stored in *this.
On output:
tau | the scaling factor of the Householder transformation |
beta | the result of H * *this |
Definition at line 42 of file Householder.h.
{ VectorBlock<Derived, internal::decrement_size<Base::SizeAtCompileTime>::ret> essentialPart(derived(), 1, size()-1); makeHouseholder(essentialPart, tau, beta); }
EIGEN_DEVICE_FUNC MatrixBase<Derived>& Eigen::MatrixBase< Derived >::matrix | ( | ) | [inline] |
Definition at line 321 of file MatrixBase.h.
{ return *this; }
EIGEN_DEVICE_FUNC const MatrixBase<Derived>& Eigen::MatrixBase< Derived >::matrix | ( | ) | const [inline] |
Definition at line 322 of file MatrixBase.h.
{ return *this; }
const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::matrixFunction | ( | StemFunction | f | ) | const |
NoAlias< Derived, MatrixBase > Eigen::MatrixBase< Derived >::noalias | ( | ) |
*this
with an operator= assuming no aliasing between *this
and the source expression.More precisely, noalias() allows to bypass the EvalBeforeAssignBit flag. Currently, even though several expressions may alias, only product expressions have this flag. Therefore, noalias() is only usefull when the source expression contains a matrix product.
Here are some examples where noalias is usefull:
D.noalias() = A * B; D.noalias() += A.transpose() * B; D.noalias() -= 2 * A * B.adjoint();
On the other hand the following example will lead to a wrong result:
A.noalias() = A * B;
because the result matrix A is also an operand of the matrix product. Therefore, there is no alternative than evaluating A * B in a temporary, that is the default behavior when you write:
A = A * B;
Definition at line 101 of file NoAlias.h.
{
return NoAlias<Derived, Eigen::MatrixBase >(derived());
}
NumTraits< typename internal::traits< Derived >::Scalar >::Real Eigen::MatrixBase< Derived >::norm | ( | ) | const [inline] |
*this
, and for matrices the Frobenius norm. In both cases, it consists in the square root of the sum of the square of all the matrix entries. For vectors, this is also equals to the square root of the dot product of *this
with itself.Definition at line 100 of file Dot.h.
{ return numext::sqrt(squaredNorm()); }
void Eigen::MatrixBase< Derived >::normalize | ( | ) | [inline] |
Normalizes the vector, i.e. divides it by its own norm.
*this
is left unchanged.Definition at line 137 of file Dot.h.
{ RealScalar z = squaredNorm(); // NOTE: after extensive benchmarking, this conditional does not impact performance, at least on recent x86 CPU if(z>RealScalar(0)) derived() /= numext::sqrt(z); }
const MatrixBase< Derived >::PlainObject Eigen::MatrixBase< Derived >::normalized | ( | ) | const [inline] |
*this
by its own norm.Definition at line 116 of file Dot.h.
{ typedef typename internal::nested_eval<Derived,2>::type _Nested; _Nested n(derived()); RealScalar z = n.squaredNorm(); // NOTE: after extensive benchmarking, this conditional does not impact performance, at least on recent x86 CPU if(z>RealScalar(0)) return n / numext::sqrt(z); else return n; }
bool Eigen::MatrixBase< Derived >::operator!= | ( | const MatrixBase< OtherDerived > & | other | ) | const [inline] |
*this
and other are not exactly equal to each other. Definition at line 305 of file MatrixBase.h.
{ return cwiseNotEqual(other).any(); }
EIGEN_DEVICE_FUNC const ScalarMultipleReturnType Eigen::MatrixBase< Derived >::operator* | ( | const Scalar & | scalar | ) | const [inline] |
*this
scaled by the scalar factor scalar Definition at line 57 of file MatrixBase.h.
EIGEN_DEVICE_FUNC const ScalarComplexMultipleReturnType Eigen::MatrixBase< Derived >::operator* | ( | const std::complex< Scalar > & | scalar | ) | const [inline] |
Overloaded for efficient real matrix times complex scalar value
Definition at line 77 of file MatrixBase.h.
const Product< Derived, OtherDerived > Eigen::MatrixBase< Derived >::operator* | ( | const MatrixBase< OtherDerived > & | other | ) | const [inline] |
*this
and other.Definition at line 367 of file GeneralProduct.h.
{ // A note regarding the function declaration: In MSVC, this function will sometimes // not be inlined since DenseStorage is an unwindable object for dynamic // matrices and product types are holding a member to store the result. // Thus it does not help tagging this function with EIGEN_STRONG_INLINE. enum { ProductIsValid = Derived::ColsAtCompileTime==Dynamic || OtherDerived::RowsAtCompileTime==Dynamic || int(Derived::ColsAtCompileTime)==int(OtherDerived::RowsAtCompileTime), AreVectors = Derived::IsVectorAtCompileTime && OtherDerived::IsVectorAtCompileTime, SameSizes = EIGEN_PREDICATE_SAME_MATRIX_SIZE(Derived,OtherDerived) }; // note to the lost user: // * for a dot product use: v1.dot(v2) // * for a coeff-wise product use: v1.cwiseProduct(v2) EIGEN_STATIC_ASSERT(ProductIsValid || !(AreVectors && SameSizes), INVALID_VECTOR_VECTOR_PRODUCT__IF_YOU_WANTED_A_DOT_OR_COEFF_WISE_PRODUCT_YOU_MUST_USE_THE_EXPLICIT_FUNCTIONS) EIGEN_STATIC_ASSERT(ProductIsValid || !(SameSizes && !AreVectors), INVALID_MATRIX_PRODUCT__IF_YOU_WANTED_A_COEFF_WISE_PRODUCT_YOU_MUST_USE_THE_EXPLICIT_FUNCTION) EIGEN_STATIC_ASSERT(ProductIsValid || SameSizes, INVALID_MATRIX_PRODUCT) #ifdef EIGEN_DEBUG_PRODUCT internal::product_type<Derived,OtherDerived>::debug(); #endif return Product<Derived, OtherDerived>(derived(), other.derived()); }
const Product< Derived, DiagonalDerived, LazyProduct > Eigen::MatrixBase< Derived >::operator* | ( | const DiagonalBase< DiagonalDerived > & | a_diagonal | ) | const [inline] |
*this
by the diagonal matrix diagonal. Definition at line 21 of file DiagonalProduct.h.
{
return Product<Derived, DiagonalDerived, LazyProduct>(derived(),a_diagonal.derived());
}
Derived & Eigen::MatrixBase< Derived >::operator*= | ( | const EigenBase< OtherDerived > & | other | ) | [inline] |
replaces *this
by *this
* other.
*this
Example:
Output:
Definition at line 502 of file MatrixBase.h.
{
other.derived().applyThisOnTheRight(derived());
return derived();
}
EIGEN_STRONG_INLINE Derived & Eigen::MatrixBase< Derived >::operator+= | ( | const MatrixBase< OtherDerived > & | other | ) |
replaces *this
by *this
+ other.
*this
Definition at line 174 of file CwiseBinaryOp.h.
{ call_assignment(derived(), other.derived(), internal::add_assign_op<Scalar>()); return derived(); }
Derived& Eigen::MatrixBase< Derived >::operator+= | ( | const ArrayBase< OtherDerived > & | ) | [inline, protected] |
Definition at line 480 of file MatrixBase.h.
{EIGEN_STATIC_ASSERT(std::ptrdiff_t(sizeof(typename OtherDerived::Scalar))==-1,YOU_CANNOT_MIX_ARRAYS_AND_MATRICES); return *this;}
EIGEN_DEVICE_FUNC const NegativeReturnType Eigen::MatrixBase< Derived >::operator- | ( | ) | const [inline] |
*this
Definition at line 51 of file MatrixBase.h.
:
#ifndef EIGEN_PARSED_BY_DOXYGEN
EIGEN_STRONG_INLINE Derived & Eigen::MatrixBase< Derived >::operator-= | ( | const MatrixBase< OtherDerived > & | other | ) |
replaces *this
by *this
- other.
*this
Definition at line 161 of file CwiseBinaryOp.h.
{ call_assignment(derived(), other.derived(), internal::sub_assign_op<Scalar>()); return derived(); }
Derived& Eigen::MatrixBase< Derived >::operator-= | ( | const ArrayBase< OtherDerived > & | ) | [inline, protected] |
Definition at line 483 of file MatrixBase.h.
{EIGEN_STATIC_ASSERT(std::ptrdiff_t(sizeof(typename OtherDerived::Scalar))==-1,YOU_CANNOT_MIX_ARRAYS_AND_MATRICES); return *this;}
EIGEN_DEVICE_FUNC const ScalarQuotient1ReturnType Eigen::MatrixBase< Derived >::operator/ | ( | const Scalar & | scalar | ) | const [inline] |
*this
divided by the scalar value scalar Definition at line 69 of file MatrixBase.h.
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & Eigen::MatrixBase< Derived >::operator= | ( | const MatrixBase< Derived > & | other | ) |
Special case of the template operator=, in order to prevent the compiler from generating a default operator= (issue hit with g++ 4.1)
Definition at line 55 of file Assign.h.
{ internal::call_assignment(derived(), other.derived()); return derived(); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & Eigen::MatrixBase< Derived >::operator= | ( | const DenseBase< OtherDerived > & | other | ) |
Copies other into *this.
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 64 of file Assign.h.
{ internal::call_assignment(derived(), other.derived()); return derived(); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & Eigen::MatrixBase< Derived >::operator= | ( | const EigenBase< OtherDerived > & | other | ) |
Copies the generic expression other into *this.
The expression must provide a (templated) evalTo(Derived& dst) const function which does the actual job. In practice, this allows any user to write its own special matrix without having to modify MatrixBase
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 73 of file Assign.h.
{ internal::call_assignment(derived(), other.derived()); return derived(); }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & Eigen::MatrixBase< Derived >::operator= | ( | const ReturnByValue< OtherDerived > & | other | ) |
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 82 of file Assign.h.
{
other.derived().evalTo(derived());
return derived();
}
bool Eigen::MatrixBase< Derived >::operator== | ( | const MatrixBase< OtherDerived > & | other | ) | const [inline] |
*this
and other are all exactly equal. Definition at line 297 of file MatrixBase.h.
{ return cwiseEqual(other).all(); }
MatrixBase< Derived >::RealScalar Eigen::MatrixBase< Derived >::operatorNorm | ( | ) | const [inline] |
Computes the L2 operator norm.
This function computes the L2 operator norm of a matrix, which is also known as the spectral norm. The norm of a matrix is defined to be
where the maximum is over all vectors and the norm on the right is the Euclidean vector norm. The norm equals the largest singular value, which is the square root of the largest eigenvalue of the positive semi-definite matrix .
The current implementation uses the eigenvalues of , as computed by SelfAdjointView::eigenvalues(), to compute the operator norm of a matrix. The SelfAdjointView class provides a better algorithm for selfadjoint matrices.
Example:
Output:
Definition at line 122 of file MatrixBaseEigenvalues.h.
{ using std::sqrt; typename Derived::PlainObject m_eval(derived()); // FIXME if it is really guaranteed that the eigenvalues are already sorted, // then we don't need to compute a maxCoeff() here, comparing the 1st and last ones is enough. return sqrt((m_eval*m_eval.adjoint()) .eval() .template selfadjointView<Lower>() .eigenvalues() .maxCoeff() ); }
const PartialPivLU< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::partialPivLu | ( | ) | const [inline] |
*this
.Definition at line 538 of file PartialPivLU.h.
{ return PartialPivLU<PlainObject>(eval()); }
const MatrixPowerReturnValue<Derived> Eigen::MatrixBase< Derived >::pow | ( | const RealScalar & | p | ) | const |
const MatrixComplexPowerReturnValue<Derived> Eigen::MatrixBase< Derived >::pow | ( | const std::complex< RealScalar > & | p | ) | const |
EIGEN_DEVICE_FUNC RealReturnType Eigen::MatrixBase< Derived >::real | ( | ) | const [inline] |
*this
.Definition at line 125 of file MatrixBase.h.
{ return this->lazyProduct(other); }
EIGEN_DEVICE_FUNC NonConstRealReturnType Eigen::MatrixBase< Derived >::real | ( | ) | [inline] |
*this
.Definition at line 185 of file MatrixBase.h.
MatrixBase< Derived >::template SelfAdjointViewReturnType< UpLo >::Type Eigen::MatrixBase< Derived >::selfadjointView | ( | ) |
Definition at line 265 of file SelfAdjointView.h.
{ return typename SelfAdjointViewReturnType<UpLo>::Type(derived()); }
MatrixBase< Derived >::template ConstSelfAdjointViewReturnType< UpLo >::Type Eigen::MatrixBase< Derived >::selfadjointView | ( | ) | const |
Definition at line 257 of file SelfAdjointView.h.
{ return typename ConstSelfAdjointViewReturnType<UpLo>::Type(derived()); }
EIGEN_STRONG_INLINE Derived & Eigen::MatrixBase< Derived >::setIdentity | ( | ) |
Writes the identity expression (not necessarily square) into *this.
Example:
Output:
Definition at line 778 of file CwiseNullaryOp.h.
{
return internal::setIdentity_impl<Derived>::run(derived());
}
EIGEN_STRONG_INLINE Derived & Eigen::MatrixBase< Derived >::setIdentity | ( | Index | p_rows, |
Index | p_cols | ||
) |
Resizes to the given size, and writes the identity expression (not necessarily square) into *this.
rows | the new number of rows |
cols | the new number of columns |
Example:
Output:
Definition at line 794 of file CwiseNullaryOp.h.
{ derived().resize(p_rows, p_cols); return setIdentity(); }
const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::sin | ( | ) | const |
const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::sinh | ( | ) | const |
const SparseView< Derived > Eigen::MatrixBase< Derived >::sparseView | ( | const Scalar & | m_reference = Scalar(0) , |
const typename NumTraits< Scalar >::Real & | m_epsilon = NumTraits<Scalar>::dummy_precision() |
||
) | const |
Definition at line 194 of file SparseView.h.
{
return SparseView<Derived>(derived(), reference, epsilon);
}
const MatrixSquareRootReturnValue<Derived> Eigen::MatrixBase< Derived >::sqrt | ( | ) | const |
EIGEN_STRONG_INLINE NumTraits< typename internal::traits< Derived >::Scalar >::Real Eigen::MatrixBase< Derived >::squaredNorm | ( | ) | const |
*this
, and for matrices the Frobenius norm. In both cases, it consists in the sum of the square of all the matrix entries. For vectors, this is also equals to the dot product of *this
with itself.Definition at line 88 of file Dot.h.
{ return numext::real((*this).cwiseAbs2().sum()); }
NumTraits< typename internal::traits< Derived >::Scalar >::Real Eigen::MatrixBase< Derived >::stableNorm | ( | ) | const [inline] |
*this
avoiding underflow and overflow. This version use a blockwise two passes algorithm: 1 - find the absolute largest coefficient s
2 - compute For architecture/scalar types supporting vectorization, this version is faster than blueNorm(). Otherwise the blueNorm() is much faster.
Definition at line 157 of file StableNorm.h.
{ using std::sqrt; using std::abs; const Index blockSize = 4096; RealScalar scale(0); RealScalar invScale(1); RealScalar ssq(0); // sum of square typedef typename internal::nested_eval<Derived,2>::type DerivedCopy; typedef typename internal::remove_all<DerivedCopy>::type DerivedCopyClean; DerivedCopy copy(derived()); enum { CanAlign = (int(Flags)&DirectAccessBit) || (int(internal::evaluator<DerivedCopyClean>::Alignment)>0) // FIXME }; typedef typename internal::conditional<CanAlign, Ref<const Matrix<Scalar,Dynamic,1,0,blockSize,1>, internal::evaluator<DerivedCopyClean>::Alignment>, typename DerivedCopyClean ::ConstSegmentReturnType>::type SegmentWrapper; Index n = size(); if(n==1) return abs(this->coeff(0)); Index bi = internal::first_default_aligned(copy); if (bi>0) internal::stable_norm_kernel(copy.head(bi), ssq, scale, invScale); for (; bi<n; bi+=blockSize) internal::stable_norm_kernel(SegmentWrapper(copy.segment(bi,numext::mini(blockSize, n - bi))), ssq, scale, invScale); return scale * sqrt(ssq); }
void Eigen::MatrixBase< Derived >::stableNormalize | ( | ) | [inline] |
Normalizes the vector while avoid underflow and overflow
This method is analogue to the normalize() method, but it reduces the risk of underflow and overflow when computing the norm.
*this
is left unchanged.Definition at line 183 of file Dot.h.
{ RealScalar w = cwiseAbs().maxCoeff(); RealScalar z = (derived()/w).squaredNorm(); if(z>RealScalar(0)) derived() /= numext::sqrt(z)*w; }
const MatrixBase< Derived >::PlainObject Eigen::MatrixBase< Derived >::stableNormalized | ( | ) | const [inline] |
*this
by its own norm while avoiding underflow and overflow.This method is analogue to the normalized() method, but it reduces the risk of underflow and overflow when computing the norm.
Definition at line 159 of file Dot.h.
{ typedef typename internal::nested_eval<Derived,3>::type _Nested; _Nested n(derived()); RealScalar w = n.cwiseAbs().maxCoeff(); RealScalar z = (n/w).squaredNorm(); if(z>RealScalar(0)) return n / (numext::sqrt(z)*w); else return n; }
EIGEN_STRONG_INLINE internal::traits< Derived >::Scalar Eigen::MatrixBase< Derived >::trace | ( | ) | const |
*this
, i.e. the sum of the coefficients on the main diagonal.*this
can be any matrix, not necessarily square.
Reimplemented from Eigen::DenseBase< Derived >.
Definition at line 487 of file Redux.h.
{
return derived().diagonal().sum();
}
MatrixBase< Derived >::template TriangularViewReturnType< Mode >::Type Eigen::MatrixBase< Derived >::triangularView | ( | ) |
The parameter Mode can have the following values: Upper
, StrictlyUpper
, UnitUpper
, Lower
, StrictlyLower
, UnitLower
.
Example:
Output:
Definition at line 622 of file TriangularMatrix.h.
{ return typename TriangularViewReturnType<Mode>::Type(derived()); }
MatrixBase< Derived >::template ConstTriangularViewReturnType< Mode >::Type Eigen::MatrixBase< Derived >::triangularView | ( | ) | const |
This is the const version of MatrixBase::triangularView()
Definition at line 631 of file TriangularMatrix.h.
{ return typename ConstTriangularViewReturnType<Mode>::Type(derived()); }
EIGEN_DEVICE_FUNC const CwiseUnaryOp<CustomUnaryOp, const Derived> Eigen::MatrixBase< Derived >::unaryExpr | ( | const CustomUnaryOp & | func = CustomUnaryOp() | ) | const [inline] |
Apply a unary operator coefficient-wise.
[in] | func | Functor implementing the unary operator |
CustomUnaryOp | Type of func |
The function ptr_fun()
from the C++ standard library can be used to make functors out of normal functions.
Example:
Output:
Genuine functors allow for more possibilities, for instance it may contain a state.
Example:
Output:
Definition at line 156 of file MatrixBase.h.
{ return this->lazyProduct(other); }
EIGEN_DEVICE_FUNC const CwiseUnaryView<CustomViewOp, const Derived> Eigen::MatrixBase< Derived >::unaryViewExpr | ( | const CustomViewOp & | func = CustomViewOp() | ) | const [inline] |
The template parameter CustomUnaryOp is the type of the functor of the custom unary operator.
Example:
Output:
Definition at line 175 of file MatrixBase.h.
EIGEN_STRONG_INLINE const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::Unit | ( | Index | newSize, |
Index | i | ||
) | [static] |
Definition at line 807 of file CwiseNullaryOp.h.
{ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived) return BasisReturnType(SquareMatrixType::Identity(newSize,newSize), i); }
EIGEN_STRONG_INLINE const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::Unit | ( | Index | i | ) | [static] |
This variant is for fixed-size vector only.
Definition at line 822 of file CwiseNullaryOp.h.
{ EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived) return BasisReturnType(SquareMatrixType::Identity(),i); }
EIGEN_STRONG_INLINE const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::UnitW | ( | ) | [static] |
Definition at line 865 of file CwiseNullaryOp.h.
{ return Derived::Unit(3); }
EIGEN_STRONG_INLINE const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::UnitX | ( | ) | [static] |
Definition at line 835 of file CwiseNullaryOp.h.
{ return Derived::Unit(0); }
EIGEN_STRONG_INLINE const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::UnitY | ( | ) | [static] |
Definition at line 845 of file CwiseNullaryOp.h.
{ return Derived::Unit(1); }
EIGEN_STRONG_INLINE const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::UnitZ | ( | ) | [static] |
Definition at line 855 of file CwiseNullaryOp.h.
{ return Derived::Unit(2); }
EIGEN_DEVICE_FUNC friend const ScalarMultipleReturnType operator* | ( | const Scalar & | scalar, |
const StorageBaseType & | matrix | ||
) | [friend] |
Definition at line 84 of file MatrixBase.h.
EIGEN_DEVICE_FUNC friend const CwiseUnaryOp<internal::scalar_multiple2_op<Scalar,std::complex<Scalar> >, const Derived> operator* | ( | const std::complex< Scalar > & | scalar, |
const StorageBaseType & | matrix | ||
) | [friend] |
Definition at line 89 of file MatrixBase.h.
{ return (std::min)(rows(),cols()); }