MOAB  4.9.3pre
Eigen::MatrixBase< Derived > Class Template Reference

Base class for all dense matrices, vectors, and expressions. More...

#include <MatrixBase.h>

Inheritance diagram for Eigen::MatrixBase< Derived >:
Collaboration diagram for Eigen::MatrixBase< Derived >:

List of all members.

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< PlainObjectllt () const
const LDLT< PlainObjectldlt () const
const HouseholderQR< PlainObjecthouseholderQr () 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< PlainObjectjacobiSvd (unsigned int computationOptions=0) const
BDCSVD< PlainObjectbdcSvd (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)

Detailed Description

template<typename Derived>
class Eigen::MatrixBase< Derived >

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.

Template Parameters:
Derivedis 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.

See also:
TopicClassHierarchy

Definition at line 48 of file MatrixBase.h.


Member Typedef Documentation

template<typename Derived>
typedef DenseBase<Derived> Eigen::MatrixBase< Derived >::Base
template<typename Derived>
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.

template<typename Derived>
typedef Base::CoeffReturnType Eigen::MatrixBase< Derived >::CoeffReturnType

Reimplemented from Eigen::DenseBase< Derived >.

Definition at line 86 of file MatrixBase.h.

template<typename Derived>
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.

template<typename Derived>
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.

Represents a matrix with all coefficients equal to one another

Reimplemented from Eigen::DenseBase< Derived >.

Definition at line 109 of file MatrixBase.h.

template<typename Derived>
typedef internal::add_const<Diagonal<const Derived,DynamicIndex> >::type Eigen::MatrixBase< Derived >::ConstDiagonalDynamicIndexReturnType

Definition at line 234 of file MatrixBase.h.

template<typename Derived>
typedef internal::add_const<Diagonal<const Derived> >::type Eigen::MatrixBase< Derived >::ConstDiagonalReturnType

Definition at line 218 of file MatrixBase.h.

template<typename Derived>
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.

template<typename Derived>
typedef Base::ConstTransposeReturnType Eigen::MatrixBase< Derived >::ConstTransposeReturnType

Reimplemented from Eigen::DenseBase< Derived >.

Definition at line 87 of file MatrixBase.h.

template<typename Derived>
typedef CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const Derived> Eigen::MatrixBase< Derived >::CwiseAbs2ReturnType

Definition at line 16 of file MatrixBase.h.

template<typename Derived>
typedef CwiseUnaryOp<internal::scalar_abs_op<Scalar>, const Derived> Eigen::MatrixBase< Derived >::CwiseAbsReturnType

Definition at line 15 of file MatrixBase.h.

template<typename Derived>
typedef CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const Derived> Eigen::MatrixBase< Derived >::CwiseInverseReturnType

Definition at line 19 of file MatrixBase.h.

template<typename Derived>
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.

template<typename Derived>
typedef CwiseUnaryOp<internal::scalar_sign_op<Scalar>, const Derived> Eigen::MatrixBase< Derived >::CwiseSignReturnType

Definition at line 18 of file MatrixBase.h.

template<typename Derived>
typedef CwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const Derived> Eigen::MatrixBase< Derived >::CwiseSqrtReturnType

Definition at line 17 of file MatrixBase.h.

template<typename Derived>
typedef Diagonal<Derived,DynamicIndex> Eigen::MatrixBase< Derived >::DiagonalDynamicIndexReturnType

Definition at line 233 of file MatrixBase.h.

template<typename Derived>
typedef Diagonal<Derived> Eigen::MatrixBase< Derived >::DiagonalReturnType

Definition at line 214 of file MatrixBase.h.

template<typename Derived>
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.

template<typename Derived>
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.

template<typename Derived>
typedef Homogeneous<Derived, HomogeneousReturnTypeDirection> Eigen::MatrixBase< Derived >::HomogeneousReturnType

Definition at line 412 of file MatrixBase.h.

the return type of identity

Definition at line 118 of file MatrixBase.h.

template<typename Derived>
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.

template<typename Derived>
typedef CwiseUnaryOp<internal::scalar_opposite_op<Scalar>, const Derived> Eigen::MatrixBase< Derived >::NegativeReturnType

Definition at line 42 of file MatrixBase.h.

template<typename Derived>
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.

template<typename Derived>
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.

template<typename Derived>
typedef internal::packet_traits<Scalar>::type Eigen::MatrixBase< Derived >::PacketScalar

Reimplemented from Eigen::DenseBase< Derived >.

Definition at line 57 of file MatrixBase.h.

template<typename Derived>
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.

template<typename Derived>
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.

template<typename Derived>
typedef NumTraits<Scalar>::Real Eigen::MatrixBase< Derived >::RealScalar

Reimplemented from Eigen::DenseBase< Derived >.

Definition at line 58 of file MatrixBase.h.

template<typename Derived>
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.

template<typename Derived>
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.

template<typename Derived>
typedef CwiseUnaryOp<internal::scalar_multiple2_op<Scalar,std::complex<Scalar> >, const Derived> Eigen::MatrixBase< Derived >::ScalarComplexMultipleReturnType

Definition at line 18 of file MatrixBase.h.

template<typename Derived>
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.

template<typename Derived>
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.

type of the equivalent square matrix

Definition at line 97 of file MatrixBase.h.

template<typename Derived>
typedef internal::stem_function<Scalar>::type Eigen::MatrixBase< Derived >::StemFunction

Definition at line 459 of file MatrixBase.h.

template<typename Derived>
typedef MatrixBase Eigen::MatrixBase< Derived >::StorageBaseType

Definition at line 53 of file MatrixBase.h.

template<typename Derived>
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

See also:
TopicPreprocessorDirectives, Eigen::Index, SparseMatrixBase.

Reimplemented from Eigen::DenseBase< Derived >.

Definition at line 55 of file MatrixBase.h.

template<typename Derived>
typedef internal::traits<Derived>::StorageKind Eigen::MatrixBase< Derived >::StorageKind

Reimplemented from Eigen::DenseBase< Derived >.

Definition at line 54 of file MatrixBase.h.


Member Enumeration Documentation

template<typename Derived>
anonymous enum
Enumerator:
HomogeneousReturnTypeDirection 

Definition at line 410 of file MatrixBase.h.

template<typename Derived>
anonymous enum
Enumerator:
SizeMinusOne 

Definition at line 415 of file MatrixBase.h.


Constructor & Destructor Documentation

template<typename Derived>
EIGEN_DEVICE_FUNC Eigen::MatrixBase< Derived >::MatrixBase ( ) [inline, protected]

Definition at line 472 of file MatrixBase.h.

: Base() {}
template<typename Derived>
EIGEN_DEVICE_FUNC Eigen::MatrixBase< Derived >::MatrixBase ( int  ) [explicit, private]
template<typename Derived>
EIGEN_DEVICE_FUNC Eigen::MatrixBase< Derived >::MatrixBase ( int  ,
int   
) [private]
template<typename Derived>
template<typename OtherDerived >
EIGEN_DEVICE_FUNC Eigen::MatrixBase< Derived >::MatrixBase ( const MatrixBase< OtherDerived > &  ) [explicit, private]

Member Function Documentation

template<typename Derived >
const MatrixBase< Derived >::AdjointReturnType Eigen::MatrixBase< Derived >::adjoint ( ) const [inline]
Returns:
an expression of the adjoint (i.e. conjugate transpose) of *this.

Example:

Output:

Warning:
If you want to replace a matrix by its own adjoint, do NOT do this:
 m = m.adjoint(); // bug!!! caused by aliasing effect
Instead, use the adjointInPlace() method:
 m.adjointInPlace();
which gives Eigen good opportunities for optimization, or alternatively you can also do:
 m = m.adjoint().eval();
See also:
adjointInPlace(), transpose(), conjugate(), class Transpose, class internal::scalar_conjugate_op

Definition at line 205 of file Transpose.h.

{
  return AdjointReturnType(this->transpose());
}
template<typename Derived >
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().

Note:
if the matrix is not square, then *this must be a resizable matrix. This excludes (non-square) fixed-size matrices, block-expressions and maps.
See also:
transpose(), adjoint(), transposeInPlace()

Definition at line 310 of file Transpose.h.

{
  derived() = adjoint().eval();
}
template<typename Derived >
template<typename EssentialPart >
void Eigen::MatrixBase< Derived >::applyHouseholderOnTheLeft ( const EssentialPart &  essential,
const Scalar tau,
Scalar workspace 
)

Apply the elementary reflector H given by $ H = I - tau v v^*$ with $ v^T = [1 essential^T] $ from the left to a vector or matrix.

On input:

Parameters:
essentialthe essential part of the vector v
tauthe scaling factor of the Householder transformation
workspacea pointer to working space with at least this->cols() * essential.size() entries
See also:
MatrixBase::makeHouseholder(), MatrixBase::makeHouseholderInPlace(), MatrixBase::applyHouseholderOnTheRight()

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;
  }
}
template<typename Derived >
template<typename EssentialPart >
void Eigen::MatrixBase< Derived >::applyHouseholderOnTheRight ( const EssentialPart &  essential,
const Scalar tau,
Scalar workspace 
)

Apply the elementary reflector H given by $ H = I - tau v v^*$ with $ v^T = [1 essential^T] $ from the right to a vector or matrix.

On input:

Parameters:
essentialthe essential part of the vector v
tauthe scaling factor of the Householder transformation
workspacea pointer to working space with at least this->cols() * essential.size() entries
See also:
MatrixBase::makeHouseholder(), MatrixBase::makeHouseholderInPlace(), MatrixBase::applyHouseholderOnTheLeft()

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();
  }
}
template<typename Derived >
template<typename OtherDerived >
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());
}
template<typename Derived >
template<typename OtherScalar >
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 $ B = \left ( \begin{array}{cc} \text{*this.row}(p) \\ \text{*this.row}(q) \end{array} \right ) $.

See also:
class JacobiRotation, MatrixBase::applyOnTheRight(), internal::apply_rotation_in_the_plane()

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);
}
template<typename Derived >
template<typename OtherDerived >
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());
}
template<typename Derived >
template<typename OtherScalar >
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 $ B = \left ( \begin{array}{cc} \text{*this.col}(p) & \text{*this.col}(q) \end{array} \right ) $.

See also:
class JacobiRotation, MatrixBase::applyOnTheLeft(), internal::apply_rotation_in_the_plane()

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());
}
template<typename Derived>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE ArrayWrapper<Derived> Eigen::MatrixBase< Derived >::array ( ) [inline]
Returns:
an Array expression of this matrix
See also:
ArrayBase::matrix()

Definition at line 326 of file MatrixBase.h.

{ return ArrayWrapper<Derived>(derived()); }
template<typename Derived>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const ArrayWrapper<const Derived> Eigen::MatrixBase< Derived >::array ( ) const [inline]
Returns:
a const Array expression of this matrix
See also:
ArrayBase::matrix()

Definition at line 329 of file MatrixBase.h.

{ return ArrayWrapper<const Derived>(derived()); }
template<typename Derived >
const DiagonalWrapper< const Derived > Eigen::MatrixBase< Derived >::asDiagonal ( ) const [inline]
Returns:
a pseudo-expression of a diagonal matrix with *this as vector of diagonal coefficients

Example:

Output:

See also:
class DiagonalWrapper, class DiagonalMatrix, diagonal(), isDiagonal()

Definition at line 278 of file DiagonalMatrix.h.

{
  return DiagonalWrapper<const Derived>(derived());
}
template<typename Derived >
const PermutationWrapper< const Derived > Eigen::MatrixBase< Derived >::asPermutation ( ) const

Definition at line 620 of file PermutationMatrix.h.

{
  return derived();
}
template<typename Derived >
BDCSVD< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::bdcSvd ( unsigned int  computationOptions = 0) const [inline]
Returns:
the singular value decomposition of *this computed by Divide & Conquer algorithm
See also:
class BDCSVD

Definition at line 1199 of file BDCSVD.h.

{
  return BDCSVD<PlainObject>(*this, computationOptions);
}
template<typename Derived>
template<typename CustomBinaryOp , typename OtherDerived >
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]
Returns:
an expression of the difference of *this and other
Note:
If you want to substract a given scalar from all coefficients, see Cwise::operator-().
See also:
class CwiseBinaryOp, operator-=()
Returns:
an expression of the sum of *this and other
Note:
If you want to add a given scalar to all coefficients, see Cwise::operator+().
See also:
class CwiseBinaryOp, operator+=()
Returns:
an expression of a custom coefficient-wise operator func of *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:

See also:
class CwiseBinaryOp, operator+(), operator-(), cwiseProduct()

Definition at line 44 of file MatrixBase.h.

  : public DenseBase<Derived>
template<typename Derived >
NumTraits< typename internal::traits< Derived >::Scalar >::Real Eigen::MatrixBase< Derived >::blueNorm ( ) const [inline]
Returns:
the l2 norm of *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.

See also:
norm(), stableNorm(), hypotNorm()

Definition at line 200 of file StableNorm.h.

{
  return internal::blueNorm_impl(*this);
}
template<typename Derived>
template<typename NewType >
EIGEN_DEVICE_FUNC CastXpr<NewType>::Type Eigen::MatrixBase< Derived >::cast ( ) const [inline]
Returns:
an expression of *this with the Scalar type casted to NewScalar.

The template parameter NewScalar is the type we are casting the scalars to.

See also:
class CwiseUnaryOp

Definition at line 105 of file MatrixBase.h.

template<typename Derived >
const ColPivHouseholderQR< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::colPivHouseholderQr ( ) const [inline]
Returns:
the column-pivoting Householder QR decomposition of *this.
See also:
class ColPivHouseholderQR

Definition at line 631 of file ColPivHouseholderQR.h.

{
  return ColPivHouseholderQR<PlainObject>(eval());
}
template<typename Derived >
const CompleteOrthogonalDecomposition< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::completeOrthogonalDecomposition ( ) const [inline]
Returns:
the complete orthogonal decomposition of *this.
See also:
class CompleteOrthogonalDecomposition

Definition at line 535 of file CompleteOrthogonalDecomposition.h.

                                                           {
  return CompleteOrthogonalDecomposition<PlainObject>(eval());
}
template<typename Derived >
template<typename ResultType >
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.

Parameters:
inverseReference to the matrix in which to store the inverse.
determinantReference to the variable in which to store the determinant.
invertibleReference to the bool variable in which to store whether the matrix is invertible.
absDeterminantThresholdOptional 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:

See also:
inverse(), computeInverseWithCheck()

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);
}
template<typename Derived >
template<typename ResultType >
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.

Parameters:
inverseReference to the matrix in which to store the inverse.
invertibleReference to the bool variable in which to store whether the matrix is invertible.
absDeterminantThresholdOptional 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:

See also:
inverse(), computeInverseAndDetWithCheck()

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);
}
template<typename Derived>
EIGEN_DEVICE_FUNC ConjugateReturnType Eigen::MatrixBase< Derived >::conjugate ( ) const [inline]
Returns:
an expression of the complex conjugate of *this.
See also:
adjoint()

Definition at line 115 of file MatrixBase.h.

template<typename Derived>
const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::cos ( ) const
template<typename Derived>
const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::cosh ( ) const
template<typename Derived>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseAbsReturnType Eigen::MatrixBase< Derived >::cwiseAbs ( ) const [inline]
Returns:
an expression of the coefficient-wise absolute value of *this

Example:

Output:

See also:
cwiseAbs2()

Definition at line 30 of file MatrixBase.h.

template<typename Derived>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseAbs2ReturnType Eigen::MatrixBase< Derived >::cwiseAbs2 ( ) const [inline]
Returns:
an expression of the coefficient-wise squared absolute value of *this

Example:

Output:

See also:
cwiseAbs()

Definition at line 41 of file MatrixBase.h.

: public DenseBase<Derived>
template<typename Derived>
template<typename OtherDerived >
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]
Returns:
an expression of the coefficient-wise == operator of *this and other
Warning:
this performs an exact comparison, which is generally a bad idea with floating-point types. In order to check for equality between two vectors or matrices with floating-point coefficients, it is generally a far better idea to use a fuzzy comparison as provided by isApprox() and isMuchSmallerThan().

Example:

Output:

See also:
cwiseNotEqual(), isApprox(), isMuchSmallerThan()

Definition at line 44 of file MatrixBase.h.

  : public DenseBase<Derived>
template<typename Derived>
EIGEN_DEVICE_FUNC const CwiseScalarEqualReturnType Eigen::MatrixBase< Derived >::cwiseEqual ( const Scalar s) const [inline]
Returns:
an expression of the coefficient-wise == operator of *this and a scalar s
Warning:
this performs an exact comparison, which is generally a bad idea with floating-point types. In order to check for equality between two vectors or matrices with floating-point coefficients, it is generally a far better idea to use a fuzzy comparison as provided by isApprox() and isMuchSmallerThan().
See also:
cwiseEqual(const MatrixBase<OtherDerived> &) const

Definition at line 150 of file MatrixBase.h.

    { return this->lazyProduct(other); }
template<typename Derived>
EIGEN_DEVICE_FUNC const CwiseInverseReturnType Eigen::MatrixBase< Derived >::cwiseInverse ( ) const [inline]
Returns:
an expression of the coefficient-wise inverse of *this.

Example:

Output:

See also:
cwiseProduct()

Definition at line 74 of file MatrixBase.h.

template<typename Derived>
template<typename OtherDerived >
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]
Returns:
an expression of the coefficient-wise max of *this and other

Example:

Output:

See also:
class CwiseBinaryOp, min()

Definition at line 105 of file MatrixBase.h.

template<typename Derived>
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]
Returns:
an expression of the coefficient-wise max of *this and scalar other
See also:
class CwiseBinaryOp, min()

Definition at line 116 of file MatrixBase.h.

template<typename Derived>
template<typename OtherDerived >
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]
Returns:
an expression of the coefficient-wise min of *this and other

Example:

Output:

See also:
class CwiseBinaryOp, max()

Definition at line 79 of file MatrixBase.h.

template<typename Derived>
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]
Returns:
an expression of the coefficient-wise min of *this and scalar other
See also:
class CwiseBinaryOp, min()

Definition at line 90 of file MatrixBase.h.

                                      { return (std::min)(rows(),cols()); }
template<typename Derived>
template<typename OtherDerived >
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]
Returns:
an expression of the coefficient-wise != operator of *this and other
Warning:
this performs an exact comparison, which is generally a bad idea with floating-point types. In order to check for equality between two vectors or matrices with floating-point coefficients, it is generally a far better idea to use a fuzzy comparison as provided by isApprox() and isMuchSmallerThan().

Example:

Output:

See also:
cwiseEqual(), isApprox(), isMuchSmallerThan()

Definition at line 64 of file MatrixBase.h.

template<typename Derived>
template<typename OtherDerived >
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());
    }
template<typename Derived>
template<typename OtherDerived >
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]
Returns:
an expression of the coefficient-wise quotient of *this and other

Example:

Output:

See also:
class CwiseBinaryOp, cwiseProduct(), cwiseInverse()

Definition at line 132 of file MatrixBase.h.

    { return this->lazyProduct(other); }
template<typename Derived>
EIGEN_DEVICE_FUNC const CwiseSignReturnType Eigen::MatrixBase< Derived >::cwiseSign ( ) const [inline]
Returns:
an expression of the coefficient-wise signum of *this.

Example:

Output:

Definition at line 62 of file MatrixBase.h.

template<typename Derived>
EIGEN_DEVICE_FUNC const CwiseSqrtReturnType Eigen::MatrixBase< Derived >::cwiseSqrt ( ) const [inline]
Returns:
an expression of the coefficient-wise square root of *this.

Example:

Output:

See also:
cwisePow(), cwiseSquare()

Definition at line 52 of file MatrixBase.h.

template<typename Derived >
internal::traits< Derived >::Scalar Eigen::MatrixBase< Derived >::determinant ( ) const [inline]
Returns:
the determinant of this matrix

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());
}
template<typename Derived >
MatrixBase< Derived >::template DiagonalIndexReturnType< Index_ >::Type Eigen::MatrixBase< Derived >::diagonal ( ) [inline]
Returns:
an expression of the main diagonal of the matrix *this

*this is not required to be square.

Example:

Output:

See also:
class Diagonal
Returns:
an expression of the DiagIndex-th sub or super diagonal of the matrix *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:

See also:
MatrixBase::diagonal(), class Diagonal

Definition at line 188 of file Diagonal.h.

{
  return DiagonalReturnType(derived());
}
template<typename 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());
}
template<typename Derived>
template<int Index>
EIGEN_DEVICE_FUNC DiagonalIndexReturnType<Index>::Type Eigen::MatrixBase< Derived >::diagonal ( )
template<typename Derived>
template<int Index>
EIGEN_DEVICE_FUNC ConstDiagonalIndexReturnType<Index>::Type Eigen::MatrixBase< Derived >::diagonal ( ) const
template<typename Derived >
MatrixBase< Derived >::DiagonalDynamicIndexReturnType Eigen::MatrixBase< Derived >::diagonal ( Index  index) [inline]
Returns:
an expression of the DiagIndex-th sub or super diagonal of the matrix *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:

See also:
MatrixBase::diagonal(), class Diagonal

Definition at line 214 of file Diagonal.h.

{
  return DiagonalDynamicIndexReturnType(derived(), index);
}
template<typename Derived >
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);
}
template<typename Derived>
EIGEN_DEVICE_FUNC Index Eigen::MatrixBase< Derived >::diagonalSize ( ) const [inline]
Returns:
the size of the main diagonal, which is min(rows(),cols()).
See also:
rows(), cols(), SizeAtCompileTime.

Definition at line 103 of file MatrixBase.h.

{ return (std::min)(rows(),cols()); }
template<typename Derived >
template<typename OtherDerived >
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
Returns:
the dot product of *this with other.
Note:
If the scalar type is complex numbers, then this function returns the hermitian (sesquilinear) dot product, conjugate-linear in the first variable and linear in the second variable.
See also:
squaredNorm(), norm()

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);
}
template<typename Derived>
template<typename OtherDerived >
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Eigen::MatrixBase< Derived >::EIGEN_CWISE_PRODUCT_RETURN_TYPE ( Derived  ,
OtherDerived   
) const [inline]
Returns:
an expression of the Schur product (coefficient wise product) of *this and other

Example:

Output:

See also:
class CwiseBinaryOp, cwiseAbs2

Definition at line 23 of file MatrixBase.h.

template<typename Derived >
MatrixBase< Derived >::EigenvaluesReturnType Eigen::MatrixBase< Derived >::eigenvalues ( ) const [inline]

Computes the eigenvalues of a matrix.

Returns:
Column vector containing the eigenvalues.

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:

See also:
EigenSolver::eigenvalues(), ComplexEigenSolver::eigenvalues(), SelfAdjointView::eigenvalues()

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());
}
template<typename Derived>
const MatrixExponentialReturnValue<Derived> Eigen::MatrixBase< Derived >::exp ( ) const
template<typename Derived >
const ForceAlignedAccess< Derived > Eigen::MatrixBase< Derived >::forceAlignedAccess ( ) const [inline]
Returns:
an expression of *this with forced aligned access
See also:
forceAlignedAccessIf(),class ForceAlignedAccess

Reimplemented from Eigen::DenseBase< Derived >.

Definition at line 312 of file MatrixBase.h.

{ return derived(); }
template<typename Derived >
ForceAlignedAccess< Derived > Eigen::MatrixBase< Derived >::forceAlignedAccess ( ) [inline]
Returns:
an expression of *this with forced aligned access
See also:
forceAlignedAccessIf(), class ForceAlignedAccess

Reimplemented from Eigen::DenseBase< Derived >.

Definition at line 313 of file MatrixBase.h.

{ return derived(); }
template<typename Derived >
template<bool Enable>
internal::add_const_on_value_type< typename internal::conditional< Enable, ForceAlignedAccess< Derived >, Derived & >::type >::type Eigen::MatrixBase< Derived >::forceAlignedAccessIf ( ) const [inline]
Returns:
an expression of *this with forced aligned access if Enable is true.
See also:
forceAlignedAccess(), class ForceAlignedAccess

Reimplemented from Eigen::DenseBase< Derived >.

Definition at line 314 of file MatrixBase.h.

{ return derived(); }
template<typename Derived >
template<bool Enable>
internal::conditional< Enable, ForceAlignedAccess< Derived >, Derived & >::type Eigen::MatrixBase< Derived >::forceAlignedAccessIf ( ) [inline]
Returns:
an expression of *this with forced aligned access if Enable is true.
See also:
forceAlignedAccess(), class ForceAlignedAccess

Reimplemented from Eigen::DenseBase< Derived >.

Definition at line 315 of file MatrixBase.h.

{ return derived(); }
template<typename Derived >
const FullPivHouseholderQR< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::fullPivHouseholderQr ( ) const [inline]
Returns:
the full-pivoting Householder QR decomposition of *this.
See also:
class FullPivHouseholderQR

Definition at line 654 of file FullPivHouseholderQR.h.

{
  return FullPivHouseholderQR<PlainObject>(eval());
}
template<typename Derived >
const FullPivLU< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::fullPivLu ( ) const [inline]
Returns:
the full-pivoting LU decomposition of *this.
See also:
class FullPivLU

Definition at line 853 of file FullPivLU.h.

{
  return FullPivLU<PlainObject>(eval());
}
template<typename Derived >
const HouseholderQR< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::householderQr ( ) const [inline]
Returns:
the Householder QR decomposition of *this.
See also:
class HouseholderQR

Definition at line 384 of file HouseholderQR.h.

{
  return HouseholderQR<PlainObject>(eval());
}
template<typename Derived >
NumTraits< typename internal::traits< Derived >::Scalar >::Real Eigen::MatrixBase< Derived >::hypotNorm ( ) const [inline]
Returns:
the l2 norm of *this avoiding undeflow and overflow. This version use a concatenation of hypot() calls, and it is very slow.
See also:
norm(), stableNorm()

Definition at line 212 of file StableNorm.h.

{
  return this->cwiseAbs().redux(internal::scalar_hypot_op<RealScalar>());
}
template<typename Derived >
EIGEN_STRONG_INLINE const MatrixBase< Derived >::IdentityReturnType Eigen::MatrixBase< Derived >::Identity ( ) [static]
Returns:
an expression of the identity matrix (not necessarily square).

This variant is only for fixed-size MatrixBase types. For dynamic-size types, you need to use the variant taking size arguments.

Example:

Output:

See also:
Identity(Index,Index), setIdentity(), isIdentity()

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>());
}
template<typename Derived >
EIGEN_STRONG_INLINE const MatrixBase< Derived >::IdentityReturnType Eigen::MatrixBase< Derived >::Identity ( Index  rows,
Index  cols 
) [static]
Returns:
an expression of the identity matrix (not necessarily square).

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:

See also:
Identity(), setIdentity(), isIdentity()

Definition at line 687 of file CwiseNullaryOp.h.

{
  return DenseBase<Derived>::NullaryExpr(rows, cols, internal::scalar_identity_op<Scalar>());
}
template<typename Derived>
EIGEN_DEVICE_FUNC const ImagReturnType Eigen::MatrixBase< Derived >::imag ( ) const [inline]
Returns:
an read-only expression of the imaginary part of *this.
See also:
real()

Definition at line 132 of file MatrixBase.h.

{ return this->lazyProduct(other); }
template<typename Derived>
EIGEN_DEVICE_FUNC NonConstImagReturnType Eigen::MatrixBase< Derived >::imag ( ) [inline]
Returns:
a non const expression of the imaginary part of *this.
See also:
real()

Definition at line 192 of file MatrixBase.h.

template<typename Derived >
const Inverse< Derived > Eigen::MatrixBase< Derived >::inverse ( ) const [inline]
Returns:
the matrix inverse of this matrix.

For small fixed sizes up to 4x4, this method uses cofactors. In the general case, this method uses class PartialPivLU.

Note:
This matrix must be invertible, otherwise the result is undefined. If you need an invertibility check, do the following: Example:
Output:
See also:
computeInverseAndDetWithCheck()

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());
}
template<typename Derived >
bool Eigen::MatrixBase< Derived >::isDiagonal ( const RealScalar prec = NumTraits<Scalar>::dummy_precision()) const
Returns:
true if *this is approximately equal to a diagonal matrix, within the precision given by prec.

Example:

Output:

See also:
asDiagonal()

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;
}
template<typename Derived >
bool Eigen::MatrixBase< Derived >::isIdentity ( const RealScalar prec = NumTraits<Scalar>::dummy_precision()) const
Returns:
true if *this is approximately equal to the identity matrix (not necessarily square), within the precision given by prec.

Example:

Output:

See also:
class CwiseNullaryOp, Identity(), Identity(Index,Index), setIdentity()

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;
}
template<typename Derived >
bool Eigen::MatrixBase< Derived >::isLowerTriangular ( const RealScalar prec = NumTraits<Scalar>::dummy_precision()) const
Returns:
true if *this is approximately equal to a lower triangular matrix, within the precision given by prec.
See also:
isUpperTriangular()

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;
}
template<typename Derived >
template<typename OtherDerived >
bool Eigen::MatrixBase< Derived >::isOrthogonal ( const MatrixBase< OtherDerived > &  other,
const RealScalar prec = NumTraits<Scalar>::dummy_precision() 
) const
Returns:
true if *this is approximately orthogonal to other, within the precision given by prec.

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();
}
template<typename Derived >
bool Eigen::MatrixBase< Derived >::isUnitary ( const RealScalar prec = NumTraits<Scalar>::dummy_precision()) const
Returns:
true if *this is approximately an unitary matrix, within the precision given by prec. In the case where the Scalar type is real numbers, a unitary matrix is an orthogonal matrix, whence the name.
Note:
This can be used to check whether a family of vectors forms an orthonormal basis. Indeed, 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;
}
template<typename Derived >
bool Eigen::MatrixBase< Derived >::isUpperTriangular ( const RealScalar prec = NumTraits<Scalar>::dummy_precision()) const
Returns:
true if *this is approximately equal to an upper triangular matrix, within the precision given by prec.
See also:
isLowerTriangular()

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;
}
template<typename Derived >
JacobiSVD< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::jacobiSvd ( unsigned int  computationOptions = 0) const [inline]
Returns:
the singular value decomposition of *this computed by two-sided Jacobi transformations.
See also:
class JacobiSVD

Definition at line 795 of file JacobiSVD.h.

{
  return JacobiSVD<PlainObject>(*this, computationOptions);
}
template<typename Derived >
template<typename OtherDerived >
const Product< Derived, OtherDerived, LazyProduct > Eigen::MatrixBase< Derived >::lazyProduct ( const MatrixBase< OtherDerived > &  other) const
Returns:
an expression of the matrix product of *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.

Warning:
This version of the matrix product can be much much slower. So use it only if you know what you are doing and that you measured a true speed improvement.
See also:
operator*(const MatrixBase&)

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());
}
template<typename Derived >
const LDLT< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::ldlt ( ) const [inline]
Returns:
the Cholesky decomposition with full pivoting without square root of *this
See also:
SelfAdjointView::ldlt()

Definition at line 593 of file LDLT.h.

{
  return LDLT<PlainObject>(derived());
}
template<typename Derived >
const LLT< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::llt ( ) const [inline]
Returns:
the LLT decomposition of *this
See also:
SelfAdjointView::llt()

Definition at line 470 of file LLT.h.

{
  return LLT<PlainObject>(derived());
}
template<typename Derived>
const MatrixLogarithmReturnValue<Derived> Eigen::MatrixBase< Derived >::log ( ) const
template<typename Derived >
template<int p>
NumTraits< typename internal::traits< Derived >::Scalar >::Real Eigen::MatrixBase< Derived >::lpNorm ( ) const [inline]
Returns:
the coefficient-wise $ \ell^p $ norm of *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 $ \ell^\infty $ norm, that is the maximum of the absolute values of the coefficients of *this.
Note:
For matrices, this function does not compute the operator-norm. That is, if *this is a matrix, then its coefficients are interpreted as a 1D vector. Nonetheless, you can easily compute the 1-norm and $\infty$-norm matrix operator norms using partial reductions .
See also:
norm()

Reimplemented from Eigen::DenseBase< Derived >.

Definition at line 254 of file Dot.h.

{
  return internal::lpNorm_selector<Derived, p>::run(*this);
}
template<typename Derived >
const PartialPivLU< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::lu ( ) const [inline]

Synonym of partialPivLu().

Returns:
the partial-pivoting LU decomposition of *this.
See also:
class PartialPivLU

Definition at line 555 of file PartialPivLU.h.

{
  return PartialPivLU<PlainObject>(eval());
}
template<typename Derived >
template<typename EssentialPart >
void Eigen::MatrixBase< Derived >::makeHouseholder ( EssentialPart &  essential,
Scalar tau,
RealScalar beta 
) const

Computes the elementary reflector H such that: $ H *this = [ beta 0 ... 0]^T $ where the transformation H is: $ H = I - tau v v^*$ and the vector v is: $ v^T = [1 essential^T] $

On output:

Parameters:
essentialthe essential part of the vector v
tauthe scaling factor of the Householder transformation
betathe result of H * *this
See also:
MatrixBase::makeHouseholderInPlace(), MatrixBase::applyHouseholderOnTheLeft(), MatrixBase::applyHouseholderOnTheRight()

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);
  }
}
template<typename Derived >
void Eigen::MatrixBase< Derived >::makeHouseholderInPlace ( Scalar tau,
RealScalar beta 
)

Computes the elementary reflector H such that: $ H *this = [ beta 0 ... 0]^T $ where the transformation H is: $ H = I - tau v v^*$ and the vector v is: $ v^T = [1 essential^T] $

The essential part of the vector v is stored in *this.

On output:

Parameters:
tauthe scaling factor of the Householder transformation
betathe result of H * *this
See also:
MatrixBase::makeHouseholder(), MatrixBase::applyHouseholderOnTheLeft(), MatrixBase::applyHouseholderOnTheRight()

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);
}
template<typename Derived>
EIGEN_DEVICE_FUNC MatrixBase<Derived>& Eigen::MatrixBase< Derived >::matrix ( ) [inline]

Definition at line 321 of file MatrixBase.h.

{ return *this; }
template<typename Derived>
EIGEN_DEVICE_FUNC const MatrixBase<Derived>& Eigen::MatrixBase< Derived >::matrix ( ) const [inline]

Definition at line 322 of file MatrixBase.h.

{ return *this; }
template<typename Derived>
const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::matrixFunction ( StemFunction  f) const
template<typename Derived >
NoAlias< Derived, MatrixBase > Eigen::MatrixBase< Derived >::noalias ( )
Returns:
a pseudo expression of *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;
See also:
class NoAlias

Definition at line 101 of file NoAlias.h.

{
  return NoAlias<Derived, Eigen::MatrixBase >(derived());
}
template<typename Derived >
NumTraits< typename internal::traits< Derived >::Scalar >::Real Eigen::MatrixBase< Derived >::norm ( ) const [inline]
Returns:
, for vectors, the l2 norm of *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.
See also:
lpNorm(), dot(), squaredNorm()

Definition at line 100 of file Dot.h.

{
  return numext::sqrt(squaredNorm());
}
template<typename Derived >
void Eigen::MatrixBase< Derived >::normalize ( ) [inline]

Normalizes the vector, i.e. divides it by its own norm.

Warning:
If the input vector is too small (i.e., this->norm()==0), then *this is left unchanged.
See also:
norm(), normalized()

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);
}
template<typename Derived >
const MatrixBase< Derived >::PlainObject Eigen::MatrixBase< Derived >::normalized ( ) const [inline]
Returns:
an expression of the quotient of *this by its own norm.
Warning:
If the input vector is too small (i.e., this->norm()==0), then this function returns a copy of the input.
See also:
norm(), normalize()

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;
}
template<typename Derived>
template<typename OtherDerived >
bool Eigen::MatrixBase< Derived >::operator!= ( const MatrixBase< OtherDerived > &  other) const [inline]
Returns:
true if at least one pair of coefficients of *this and other are not exactly equal to each other.
Warning:
When using floating point scalar values you probably should rather use a fuzzy comparison such as isApprox()
See also:
isApprox(), operator==

Definition at line 305 of file MatrixBase.h.

    { return cwiseNotEqual(other).any(); }
template<typename Derived>
EIGEN_DEVICE_FUNC const ScalarMultipleReturnType Eigen::MatrixBase< Derived >::operator* ( const Scalar scalar) const [inline]
Returns:
an expression of *this scaled by the scalar factor scalar

Definition at line 57 of file MatrixBase.h.

template<typename Derived>
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.

template<typename Derived >
template<typename OtherDerived >
const Product< Derived, OtherDerived > Eigen::MatrixBase< Derived >::operator* ( const MatrixBase< OtherDerived > &  other) const [inline]
Returns:
the matrix product of *this and other.
Note:
If instead of the matrix product you want the coefficient-wise product, see Cwise::operator*().
See also:
lazyProduct(), operator*=(const MatrixBase&), Cwise::operator*()

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());
}
template<typename Derived >
template<typename DiagonalDerived >
const Product< Derived, DiagonalDerived, LazyProduct > Eigen::MatrixBase< Derived >::operator* ( const DiagonalBase< DiagonalDerived > &  a_diagonal) const [inline]
Returns:
the diagonal matrix product of *this by the diagonal matrix diagonal.

Definition at line 21 of file DiagonalProduct.h.

{
  return Product<Derived, DiagonalDerived, LazyProduct>(derived(),a_diagonal.derived());
}
template<typename Derived >
template<typename OtherDerived >
Derived & Eigen::MatrixBase< Derived >::operator*= ( const EigenBase< OtherDerived > &  other) [inline]

replaces *this by *this * other.

Returns:
a reference to *this

Example:

Output:

Definition at line 502 of file MatrixBase.h.

{
  other.derived().applyThisOnTheRight(derived());
  return derived();
}
template<typename Derived >
template<typename OtherDerived >
EIGEN_STRONG_INLINE Derived & Eigen::MatrixBase< Derived >::operator+= ( const MatrixBase< OtherDerived > &  other)

replaces *this by *this + other.

Returns:
a reference to *this

Definition at line 174 of file CwiseBinaryOp.h.

{
  call_assignment(derived(), other.derived(), internal::add_assign_op<Scalar>());
  return derived();
}
template<typename Derived>
template<typename OtherDerived >
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;}
template<typename Derived>
EIGEN_DEVICE_FUNC const NegativeReturnType Eigen::MatrixBase< Derived >::operator- ( ) const [inline]
Returns:
an expression of the opposite of *this

Definition at line 51 of file MatrixBase.h.

:
#ifndef EIGEN_PARSED_BY_DOXYGEN
template<typename Derived >
template<typename OtherDerived >
EIGEN_STRONG_INLINE Derived & Eigen::MatrixBase< Derived >::operator-= ( const MatrixBase< OtherDerived > &  other)

replaces *this by *this - other.

Returns:
a reference to *this

Definition at line 161 of file CwiseBinaryOp.h.

{
  call_assignment(derived(), other.derived(), internal::sub_assign_op<Scalar>());
  return derived();
}
template<typename Derived>
template<typename OtherDerived >
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;}
template<typename Derived>
EIGEN_DEVICE_FUNC const ScalarQuotient1ReturnType Eigen::MatrixBase< Derived >::operator/ ( const Scalar scalar) const [inline]
Returns:
an expression of *this divided by the scalar value scalar

Definition at line 69 of file MatrixBase.h.

template<typename Derived >
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();
}
template<typename Derived >
template<typename OtherDerived >
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & Eigen::MatrixBase< Derived >::operator= ( const DenseBase< OtherDerived > &  other)

Copies other into *this.

Returns:
a reference to *this.

Reimplemented from Eigen::DenseBase< Derived >.

Definition at line 64 of file Assign.h.

{
  internal::call_assignment(derived(), other.derived());
  return derived();
}
template<typename Derived >
template<typename OtherDerived >
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

Returns:
a reference to *this.

Reimplemented from Eigen::DenseBase< Derived >.

Definition at line 73 of file Assign.h.

{
  internal::call_assignment(derived(), other.derived());
  return derived();
}
template<typename Derived >
template<typename OtherDerived >
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();
}
template<typename Derived>
template<typename OtherDerived >
bool Eigen::MatrixBase< Derived >::operator== ( const MatrixBase< OtherDerived > &  other) const [inline]
Returns:
true if each coefficients of *this and other are all exactly equal.
Warning:
When using floating point scalar values you probably should rather use a fuzzy comparison such as isApprox()
See also:
isApprox(), operator!=

Definition at line 297 of file MatrixBase.h.

    { return cwiseEqual(other).all(); }
template<typename Derived >
MatrixBase< Derived >::RealScalar Eigen::MatrixBase< Derived >::operatorNorm ( ) const [inline]

Computes the L2 operator norm.

Returns:
Operator norm of the matrix.

This function computes the L2 operator norm of a matrix, which is also known as the spectral norm. The norm of a matrix $ A $ is defined to be

\[ \|A\|_2 = \max_x \frac{\|Ax\|_2}{\|x\|_2} \]

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 $ A^*A $.

The current implementation uses the eigenvalues of $ A^*A $, 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:

See also:
SelfAdjointView::eigenvalues(), SelfAdjointView::operatorNorm()

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()
         );
}
template<typename Derived >
const PartialPivLU< typename MatrixBase< Derived >::PlainObject > Eigen::MatrixBase< Derived >::partialPivLu ( ) const [inline]
Returns:
the partial-pivoting LU decomposition of *this.
See also:
class PartialPivLU

Definition at line 538 of file PartialPivLU.h.

{
  return PartialPivLU<PlainObject>(eval());
}
template<typename Derived>
const MatrixPowerReturnValue<Derived> Eigen::MatrixBase< Derived >::pow ( const RealScalar p) const
template<typename Derived>
const MatrixComplexPowerReturnValue<Derived> Eigen::MatrixBase< Derived >::pow ( const std::complex< RealScalar > &  p) const
template<typename Derived>
EIGEN_DEVICE_FUNC RealReturnType Eigen::MatrixBase< Derived >::real ( ) const [inline]
Returns:
a read-only expression of the real part of *this.
See also:
imag()

Definition at line 125 of file MatrixBase.h.

{ return this->lazyProduct(other); }
template<typename Derived>
EIGEN_DEVICE_FUNC NonConstRealReturnType Eigen::MatrixBase< Derived >::real ( ) [inline]
Returns:
a non const expression of the real part of *this.
See also:
imag()

Definition at line 185 of file MatrixBase.h.

template<typename Derived >
template<unsigned int UpLo>
MatrixBase< Derived >::template SelfAdjointViewReturnType< UpLo >::Type Eigen::MatrixBase< Derived >::selfadjointView ( )

Definition at line 265 of file SelfAdjointView.h.

{
  return typename SelfAdjointViewReturnType<UpLo>::Type(derived());
}
template<typename Derived >
template<unsigned int UpLo>
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());
}
template<typename Derived >
EIGEN_STRONG_INLINE Derived & Eigen::MatrixBase< Derived >::setIdentity ( )

Writes the identity expression (not necessarily square) into *this.

Example:

Output:

See also:
class CwiseNullaryOp, Identity(), Identity(Index,Index), isIdentity()

Definition at line 778 of file CwiseNullaryOp.h.

{
  return internal::setIdentity_impl<Derived>::run(derived());
}
template<typename 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.

Parameters:
rowsthe new number of rows
colsthe new number of columns

Example:

Output:

See also:
MatrixBase::setIdentity(), class CwiseNullaryOp, MatrixBase::Identity()

Definition at line 794 of file CwiseNullaryOp.h.

{
  derived().resize(p_rows, p_cols);
  return setIdentity();
}
template<typename Derived>
const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::sin ( ) const
template<typename Derived>
const MatrixFunctionReturnValue<Derived> Eigen::MatrixBase< Derived >::sinh ( ) const
template<typename Derived >
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);
}
template<typename Derived>
const MatrixSquareRootReturnValue<Derived> Eigen::MatrixBase< Derived >::sqrt ( ) const
template<typename Derived >
EIGEN_STRONG_INLINE NumTraits< typename internal::traits< Derived >::Scalar >::Real Eigen::MatrixBase< Derived >::squaredNorm ( ) const
Returns:
, for vectors, the squared l2 norm of *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.
See also:
dot(), norm(), lpNorm()

Definition at line 88 of file Dot.h.

{
  return numext::real((*this).cwiseAbs2().sum());
}
template<typename Derived >
NumTraits< typename internal::traits< Derived >::Scalar >::Real Eigen::MatrixBase< Derived >::stableNorm ( ) const [inline]
Returns:
the l2 norm of *this avoiding underflow and overflow. This version use a blockwise two passes algorithm: 1 - find the absolute largest coefficient s 2 - compute $ s \Vert \frac{*this}{s} \Vert $ in a standard way

For architecture/scalar types supporting vectorization, this version is faster than blueNorm(). Otherwise the blueNorm() is much faster.

See also:
norm(), blueNorm(), hypotNorm()

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);
}
template<typename Derived >
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.

Warning:
If the input vector is too small (i.e., this->norm()==0), then *this is left unchanged.
See also:
stableNorm(), stableNormalized(), normalize()

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;
}
template<typename Derived >
const MatrixBase< Derived >::PlainObject Eigen::MatrixBase< Derived >::stableNormalized ( ) const [inline]
Returns:
an expression of the quotient of *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.

Warning:
If the input vector is too small (i.e., this->norm()==0), then this function returns a copy of the input.
See also:
stableNorm(), stableNormalize(), normalized()

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;
}
template<typename Derived >
EIGEN_STRONG_INLINE internal::traits< Derived >::Scalar Eigen::MatrixBase< Derived >::trace ( ) const
Returns:
the trace of *this, i.e. the sum of the coefficients on the main diagonal.

*this can be any matrix, not necessarily square.

See also:
diagonal(), sum()

Reimplemented from Eigen::DenseBase< Derived >.

Definition at line 487 of file Redux.h.

{
  return derived().diagonal().sum();
}
template<typename Derived >
template<unsigned int Mode>
MatrixBase< Derived >::template TriangularViewReturnType< Mode >::Type Eigen::MatrixBase< Derived >::triangularView ( )
Returns:
an expression of a triangular view extracted from the current matrix

The parameter Mode can have the following values: Upper, StrictlyUpper, UnitUpper, Lower, StrictlyLower, UnitLower.

Example:

Output:

See also:
class TriangularView

Definition at line 622 of file TriangularMatrix.h.

{
  return typename TriangularViewReturnType<Mode>::Type(derived());
}
template<typename Derived >
template<unsigned int Mode>
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());
}
template<typename Derived>
template<typename CustomUnaryOp >
EIGEN_DEVICE_FUNC const CwiseUnaryOp<CustomUnaryOp, const Derived> Eigen::MatrixBase< Derived >::unaryExpr ( const CustomUnaryOp &  func = CustomUnaryOp()) const [inline]

Apply a unary operator coefficient-wise.

Parameters:
[in]funcFunctor implementing the unary operator
Template Parameters:
CustomUnaryOpType of func
Returns:
An expression of a custom coefficient-wise unary operator func of *this

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:

See also:
class CwiseUnaryOp, class CwiseBinaryOp

Definition at line 156 of file MatrixBase.h.

    { return this->lazyProduct(other); }
template<typename Derived>
template<typename CustomViewOp >
EIGEN_DEVICE_FUNC const CwiseUnaryView<CustomViewOp, const Derived> Eigen::MatrixBase< Derived >::unaryViewExpr ( const CustomViewOp &  func = CustomViewOp()) const [inline]
Returns:
an expression of a custom coefficient-wise unary operator func of *this

The template parameter CustomUnaryOp is the type of the functor of the custom unary operator.

Example:

Output:

See also:
class CwiseUnaryOp, class CwiseBinaryOp

Definition at line 175 of file MatrixBase.h.

template<typename Derived >
EIGEN_STRONG_INLINE const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::Unit ( Index  newSize,
Index  i 
) [static]
Returns:
an expression of the i-th unit (basis) vector.
See also:
MatrixBase::Unit(Index), MatrixBase::UnitX(), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()

Definition at line 807 of file CwiseNullaryOp.h.

{
  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
  return BasisReturnType(SquareMatrixType::Identity(newSize,newSize), i);
}
template<typename Derived >
EIGEN_STRONG_INLINE const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::Unit ( Index  i) [static]
Returns:
an expression of the i-th unit (basis) vector.

This variant is for fixed-size vector only.

See also:
MatrixBase::Unit(Index,Index), MatrixBase::UnitX(), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()

Definition at line 822 of file CwiseNullaryOp.h.

template<typename Derived >
EIGEN_STRONG_INLINE const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::UnitW ( ) [static]
Returns:
an expression of the W axis unit vector (0,0,0,1)
See also:
MatrixBase::Unit(Index,Index), MatrixBase::Unit(Index), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()

Definition at line 865 of file CwiseNullaryOp.h.

{ return Derived::Unit(3); }
template<typename Derived >
EIGEN_STRONG_INLINE const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::UnitX ( ) [static]
Returns:
an expression of the X axis unit vector (1{,0}^*)
See also:
MatrixBase::Unit(Index,Index), MatrixBase::Unit(Index), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()

Definition at line 835 of file CwiseNullaryOp.h.

{ return Derived::Unit(0); }
template<typename Derived >
EIGEN_STRONG_INLINE const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::UnitY ( ) [static]
Returns:
an expression of the Y axis unit vector (0,1{,0}^*)
See also:
MatrixBase::Unit(Index,Index), MatrixBase::Unit(Index), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()

Definition at line 845 of file CwiseNullaryOp.h.

{ return Derived::Unit(1); }
template<typename Derived >
EIGEN_STRONG_INLINE const MatrixBase< Derived >::BasisReturnType Eigen::MatrixBase< Derived >::UnitZ ( ) [static]
Returns:
an expression of the Z axis unit vector (0,0,1{,0}^*)
See also:
MatrixBase::Unit(Index,Index), MatrixBase::Unit(Index), MatrixBase::UnitY(), MatrixBase::UnitZ(), MatrixBase::UnitW()

Definition at line 855 of file CwiseNullaryOp.h.

{ return Derived::Unit(2); }

Friends And Related Function Documentation

template<typename Derived>
EIGEN_DEVICE_FUNC friend const ScalarMultipleReturnType operator* ( const Scalar scalar,
const StorageBaseType matrix 
) [friend]

Definition at line 84 of file MatrixBase.h.

template<typename Derived>
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()); }

The documentation for this class was generated from the following files:
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines