Document enums in Constants.h (bug #248).

To get the links to work, I also had to document the Eigen namespace.
Unfortunately, this means that the word Eigen is linked whenever it appears
in the docs.
This commit is contained in:
Jitse Niesen 2011-05-03 17:08:14 +01:00
parent 1947da39ab
commit a96c849c20
21 changed files with 206 additions and 88 deletions

View File

@ -185,6 +185,7 @@
// defined in bits/termios.h // defined in bits/termios.h
#undef B0 #undef B0
/** \brief Namespace containing all symbols from the %Eigen library. */
namespace Eigen { namespace Eigen {
inline static const char *SimdInstructionSetsInUse(void) { inline static const char *SimdInstructionSetsInUse(void) {

View File

@ -180,7 +180,7 @@ class BandMatrixBase : public EigenBase<Derived>
* \param Cols Number of columns, or \b Dynamic * \param Cols Number of columns, or \b Dynamic
* \param Supers Number of super diagonal * \param Supers Number of super diagonal
* \param Subs Number of sub diagonal * \param Subs Number of sub diagonal
* \param _Options A combination of either \b RowMajor or \b ColMajor, and of \b SelfAdjoint * \param _Options A combination of either \b #RowMajor or \b #ColMajor, and of \b #SelfAdjoint
* The former controls \ref TopicStorageOrders "storage order", and defaults to * The former controls \ref TopicStorageOrders "storage order", and defaults to
* column-major. The latter controls whether the matrix represents a selfadjoint * column-major. The latter controls whether the matrix represents a selfadjoint
* matrix in which case either Supers of Subs have to be null. * matrix in which case either Supers of Subs have to be null.

View File

@ -35,7 +35,7 @@ template<typename T> struct add_const_on_value_type_if_arithmetic
/** \brief Base class providing read-only coefficient access to matrices and arrays. /** \brief Base class providing read-only coefficient access to matrices and arrays.
* \ingroup Core_Module * \ingroup Core_Module
* \tparam Derived Type of the derived class * \tparam Derived Type of the derived class
* \tparam ReadOnlyAccessors Constant indicating read-only access * \tparam #ReadOnlyAccessors Constant indicating read-only access
* *
* This class defines the \c operator() \c const function and friends, which can be used to read specific * This class defines the \c operator() \c const function and friends, which can be used to read specific
* entries of a matrix or array. * entries of a matrix or array.
@ -212,7 +212,7 @@ class DenseCoeffsBase<Derived,ReadOnlyAccessors> : public EigenBase<Derived>
* to ensure that a packet really starts there. This method is only available on expressions having the * to ensure that a packet really starts there. This method is only available on expressions having the
* PacketAccessBit. * PacketAccessBit.
* *
* The \a LoadMode parameter may have the value \a Aligned or \a Unaligned. Its effect is to select * The \a LoadMode parameter may have the value \a #Aligned or \a #Unaligned. Its effect is to select
* the appropriate vectorization instruction. Aligned access is faster, but is only possible for packets * the appropriate vectorization instruction. Aligned access is faster, but is only possible for packets
* starting at an address which is a multiple of the packet size. * starting at an address which is a multiple of the packet size.
*/ */
@ -239,7 +239,7 @@ class DenseCoeffsBase<Derived,ReadOnlyAccessors> : public EigenBase<Derived>
* to ensure that a packet really starts there. This method is only available on expressions having the * to ensure that a packet really starts there. This method is only available on expressions having the
* PacketAccessBit and the LinearAccessBit. * PacketAccessBit and the LinearAccessBit.
* *
* The \a LoadMode parameter may have the value \a Aligned or \a Unaligned. Its effect is to select * The \a LoadMode parameter may have the value \a #Aligned or \a #Unaligned. Its effect is to select
* the appropriate vectorization instruction. Aligned access is faster, but is only possible for packets * the appropriate vectorization instruction. Aligned access is faster, but is only possible for packets
* starting at an address which is a multiple of the packet size. * starting at an address which is a multiple of the packet size.
*/ */
@ -275,7 +275,7 @@ class DenseCoeffsBase<Derived,ReadOnlyAccessors> : public EigenBase<Derived>
/** \brief Base class providing read/write coefficient access to matrices and arrays. /** \brief Base class providing read/write coefficient access to matrices and arrays.
* \ingroup Core_Module * \ingroup Core_Module
* \tparam Derived Type of the derived class * \tparam Derived Type of the derived class
* \tparam WriteAccessors Constant indicating read/write access * \tparam #WriteAccessors Constant indicating read/write access
* *
* This class defines the non-const \c operator() function and friends, which can be used to write specific * This class defines the non-const \c operator() function and friends, which can be used to write specific
* entries of a matrix or array. This class inherits DenseCoeffsBase<Derived, ReadOnlyAccessors> which * entries of a matrix or array. This class inherits DenseCoeffsBase<Derived, ReadOnlyAccessors> which
@ -433,7 +433,7 @@ class DenseCoeffsBase<Derived, WriteAccessors> : public DenseCoeffsBase<Derived,
* to ensure that a packet really starts there. This method is only available on expressions having the * to ensure that a packet really starts there. This method is only available on expressions having the
* PacketAccessBit. * PacketAccessBit.
* *
* The \a LoadMode parameter may have the value \a Aligned or \a Unaligned. Its effect is to select * The \a LoadMode parameter may have the value \a #Aligned or \a #Unaligned. Its effect is to select
* the appropriate vectorization instruction. Aligned access is faster, but is only possible for packets * the appropriate vectorization instruction. Aligned access is faster, but is only possible for packets
* starting at an address which is a multiple of the packet size. * starting at an address which is a multiple of the packet size.
*/ */
@ -567,7 +567,7 @@ class DenseCoeffsBase<Derived, WriteAccessors> : public DenseCoeffsBase<Derived,
/** \brief Base class providing direct read-only coefficient access to matrices and arrays. /** \brief Base class providing direct read-only coefficient access to matrices and arrays.
* \ingroup Core_Module * \ingroup Core_Module
* \tparam Derived Type of the derived class * \tparam Derived Type of the derived class
* \tparam DirectAccessors Constant indicating direct access * \tparam #DirectAccessors Constant indicating direct access
* *
* This class defines functions to work with strides which can be used to access entries directly. This class * This class defines functions to work with strides which can be used to access entries directly. This class
* inherits DenseCoeffsBase<Derived, ReadOnlyAccessors> which defines functions to access entries read-only using * inherits DenseCoeffsBase<Derived, ReadOnlyAccessors> which defines functions to access entries read-only using
@ -637,7 +637,7 @@ class DenseCoeffsBase<Derived, DirectAccessors> : public DenseCoeffsBase<Derived
/** \brief Base class providing direct read/write coefficient access to matrices and arrays. /** \brief Base class providing direct read/write coefficient access to matrices and arrays.
* \ingroup Core_Module * \ingroup Core_Module
* \tparam Derived Type of the derived class * \tparam Derived Type of the derived class
* \tparam DirectAccessors Constant indicating direct access * \tparam #DirectWriteAccessors Constant indicating direct access
* *
* This class defines functions to work with strides which can be used to access entries directly. This class * This class defines functions to work with strides which can be used to access entries directly. This class
* inherits DenseCoeffsBase<Derived, WriteAccessors> which defines functions to access entries read/write using * inherits DenseCoeffsBase<Derived, WriteAccessors> which defines functions to access entries read/write using

View File

@ -286,7 +286,7 @@ pmadd(const Packet& a,
{ return padd(pmul(a, b),c); } { return padd(pmul(a, b),c); }
/** \internal \returns a packet version of \a *from. /** \internal \returns a packet version of \a *from.
* \If LoadMode equals Aligned, \a from must be 16 bytes aligned */ * If LoadMode equals #Aligned, \a from must be 16 bytes aligned */
template<typename Packet, int LoadMode> template<typename Packet, int LoadMode>
inline Packet ploadt(const typename unpacket_traits<Packet>::type* from) inline Packet ploadt(const typename unpacket_traits<Packet>::type* from)
{ {
@ -297,7 +297,7 @@ inline Packet ploadt(const typename unpacket_traits<Packet>::type* from)
} }
/** \internal copy the packet \a from to \a *to. /** \internal copy the packet \a from to \a *to.
* If StoreMode equals Aligned, \a to must be 16 bytes aligned */ * If StoreMode equals #Aligned, \a to must be 16 bytes aligned */
template<typename Scalar, typename Packet, int LoadMode> template<typename Scalar, typename Packet, int LoadMode>
inline void pstoret(Scalar* to, const Packet& from) inline void pstoret(Scalar* to, const Packet& from)
{ {

View File

@ -31,10 +31,10 @@
* *
* \brief A matrix or vector expression mapping an existing array of data. * \brief A matrix or vector expression mapping an existing array of data.
* *
* \param PlainObjectType the equivalent matrix type of the mapped data * \tparam PlainObjectType the equivalent matrix type of the mapped data
* \param MapOptions specifies whether the pointer is \c Aligned, or \c Unaligned. * \tparam MapOptions specifies whether the pointer is \c #Aligned, or \c #Unaligned.
* The default is \c Unaligned. * The default is \c #Unaligned.
* \param StrideType optionnally specifies strides. By default, Map assumes the memory layout * \tparam StrideType optionnally specifies strides. By default, Map assumes the memory layout
* of an ordinary, contiguous array. This can be overridden by specifying strides. * of an ordinary, contiguous array. This can be overridden by specifying strides.
* The type passed here must be a specialization of the Stride template, see examples below. * The type passed here must be a specialization of the Stride template, see examples below.
* *

View File

@ -43,8 +43,8 @@
* \tparam _Cols Number of columns, or \b Dynamic * \tparam _Cols Number of columns, or \b Dynamic
* *
* The remaining template parameters are optional -- in most cases you don't have to worry about them. * The remaining template parameters are optional -- in most cases you don't have to worry about them.
* \tparam _Options \anchor matrix_tparam_options A combination of either \b RowMajor or \b ColMajor, and of either * \tparam _Options \anchor matrix_tparam_options A combination of either \b #RowMajor or \b #ColMajor, and of either
* \b AutoAlign or \b DontAlign. * \b #AutoAlign or \b #DontAlign.
* The former controls \ref TopicStorageOrders "storage order", and defaults to column-major. The latter controls alignment, which is required * The former controls \ref TopicStorageOrders "storage order", and defaults to column-major. The latter controls alignment, which is required
* for vectorization. It defaults to aligning matrices except for fixed sizes that aren't a multiple of the packet size. * for vectorization. It defaults to aligning matrices except for fixed sizes that aren't a multiple of the packet size.
* \tparam _MaxRows Maximum number of rows. Defaults to \a _Rows (\ref maxrows "note"). * \tparam _MaxRows Maximum number of rows. Defaults to \a _Rows (\ref maxrows "note").

View File

@ -32,7 +32,7 @@
* \brief Expression of a selfadjoint matrix from a triangular part of a dense matrix * \brief Expression of a selfadjoint matrix from a triangular part of a dense matrix
* *
* \param MatrixType the type of the dense matrix storing the coefficients * \param MatrixType the type of the dense matrix storing the coefficients
* \param TriangularPart can be either \c Lower or \c Upper * \param TriangularPart can be either \c #Lower or \c #Upper
* *
* This class is an expression of a sefladjoint matrix from a triangular part of a matrix * This class is an expression of a sefladjoint matrix from a triangular part of a matrix
* with given dense storage of the coefficients. It is the return type of MatrixBase::selfadjointView() * with given dense storage of the coefficients. It is the return type of MatrixBase::selfadjointView()

View File

@ -134,13 +134,13 @@ template<typename Derived> class TriangularBase : public EigenBase<Derived>
* \brief Base class for triangular part in a matrix * \brief Base class for triangular part in a matrix
* *
* \param MatrixType the type of the object in which we are taking the triangular part * \param MatrixType the type of the object in which we are taking the triangular part
* \param Mode the kind of triangular matrix expression to construct. Can be Upper, * \param Mode the kind of triangular matrix expression to construct. Can be #Upper,
* Lower, UpperSelfadjoint, or LowerSelfadjoint. This is in fact a bit field; * #Lower, #UnitUpper, #UnitLower, #StrictlyUpper, or #StrictlyLower.
* it must have either Upper or Lower, and additionnaly it may have either * This is in fact a bit field; it must have either #Upper or #Lower,
* UnitDiag or Selfadjoint. * and additionnaly it may have #UnitDiag or #ZeroDiag or neither.
* *
* This class represents a triangular part of a matrix, not necessarily square. Strictly speaking, for rectangular * This class represents a triangular part of a matrix, not necessarily square. Strictly speaking, for rectangular
* matrices one should speak ok "trapezoid" parts. This class is the return type * matrices one should speak of "trapezoid" parts. This class is the return type
* of MatrixBase::triangularView() and most of the time this is the only way it is used. * of MatrixBase::triangularView() and most of the time this is the only way it is used.
* *
* \sa MatrixBase::triangularView() * \sa MatrixBase::triangularView()
@ -756,8 +756,8 @@ typename internal::eigen2_part_return_type<Derived, Mode>::type MatrixBase<Deriv
/** /**
* \returns an expression of a triangular view extracted from the current matrix * \returns an expression of a triangular view extracted from the current matrix
* *
* The parameter \a Mode can have the following values: \c Upper, \c StrictlyUpper, \c UnitUpper, * The parameter \a Mode can have the following values: \c #Upper, \c #StrictlyUpper, \c #UnitUpper,
* \c Lower, \c StrictlyLower, \c UnitLower. * \c #Lower, \c #StrictlyLower, \c #UnitLower.
* *
* Example: \include MatrixBase_extract.cpp * Example: \include MatrixBase_extract.cpp
* Output: \verbinclude MatrixBase_extract.out * Output: \verbinclude MatrixBase_extract.out

View File

@ -31,9 +31,9 @@
* *
* \brief Generic expression of a partially reduxed matrix * \brief Generic expression of a partially reduxed matrix
* *
* \param MatrixType the type of the matrix we are applying the redux operation * \tparam MatrixType the type of the matrix we are applying the redux operation
* \param MemberOp type of the member functor * \tparam MemberOp type of the member functor
* \param Direction indicates the direction of the redux (Vertical or Horizontal) * \tparam Direction indicates the direction of the redux (#Vertical or #Horizontal)
* *
* This class represents an expression of a partial redux operator of a matrix. * This class represents an expression of a partial redux operator of a matrix.
* It is the return type of some VectorwiseOp functions, * It is the return type of some VectorwiseOp functions,
@ -164,7 +164,7 @@ struct member_redux {
* \brief Pseudo expression providing partial reduction operations * \brief Pseudo expression providing partial reduction operations
* *
* \param ExpressionType the type of the object on which to do partial reductions * \param ExpressionType the type of the object on which to do partial reductions
* \param Direction indicates the direction of the redux (Vertical or Horizontal) * \param Direction indicates the direction of the redux (#Vertical or #Horizontal)
* *
* This class represents a pseudo expression with partial reduction features. * This class represents a pseudo expression with partial reduction features.
* It is the return type of DenseBase::colwise() and DenseBase::rowwise() * It is the return type of DenseBase::colwise() and DenseBase::rowwise()

View File

@ -161,23 +161,72 @@ const unsigned int HereditaryBits = RowMajorBit
| EvalBeforeNestingBit | EvalBeforeNestingBit
| EvalBeforeAssigningBit; | EvalBeforeAssigningBit;
// Possible values for the Mode parameter of triangularView() /** \defgroup enums Enumerations
enum { * \ingroup Core_Module
Lower=0x1, Upper=0x2, UnitDiag=0x4, ZeroDiag=0x8, *
UnitLower=UnitDiag|Lower, UnitUpper=UnitDiag|Upper, * Various enumerations used in %Eigen. Many of these are used as template parameters.
StrictlyLower=ZeroDiag|Lower, StrictlyUpper=ZeroDiag|Upper, */
SelfAdjoint=0x10};
/** \ingroup enums
* Enum containing possible values for the \p Mode parameter of
* MatrixBase::selfadjointView() and MatrixBase::triangularView(). */
enum {
/** View matrix as a lower triangular matrix. */
Lower=0x1,
/** View matrix as an upper triangular matrix. */
Upper=0x2,
/** %Matrix has ones on the diagonal; to be used in combination with #Lower or #Upper. */
UnitDiag=0x4,
/** %Matrix has zeros on the diagonal; to be used in combination with #Lower or #Upper. */
ZeroDiag=0x8,
/** View matrix as a lower triangular matrix with ones on the diagonal. */
UnitLower=UnitDiag|Lower,
/** View matrix as an upper triangular matrix with ones on the diagonal. */
UnitUpper=UnitDiag|Upper,
/** View matrix as a lower triangular matrix with zeros on the diagonal. */
StrictlyLower=ZeroDiag|Lower,
/** View matrix as an upper triangular matrix with zeros on the diagonal. */
StrictlyUpper=ZeroDiag|Upper,
/** Used in BandMatrix and SelfAdjointView to indicate that the matrix is self-adjoint. */
SelfAdjoint=0x10
};
/** \ingroup enums
* Enum for indicating whether an object is aligned or not. */
enum {
/** Object is not correctly aligned for vectorization. */
Unaligned=0,
/** Object is aligned for vectorization. */
Aligned=1
};
enum { Unaligned=0, Aligned=1 };
enum { ConditionalJumpCost = 5 }; enum { ConditionalJumpCost = 5 };
/** \ingroup enums
* Enum used by DenseBase::corner() in Eigen2 compatibility mode. */
// FIXME after the corner() API change, this was not needed anymore, except by AlignedBox // FIXME after the corner() API change, this was not needed anymore, except by AlignedBox
// TODO: find out what to do with that. Adapt the AlignedBox API ? // TODO: find out what to do with that. Adapt the AlignedBox API ?
enum CornerType { TopLeft, TopRight, BottomLeft, BottomRight }; enum CornerType { TopLeft, TopRight, BottomLeft, BottomRight };
enum DirectionType { Vertical, Horizontal, BothDirections }; /** \ingroup enums
* Enum containing possible values for the \p Direction parameter of
* Reverse, PartialReduxExpr and VectorwiseOp. */
enum DirectionType {
/** For Reverse, all columns are reversed;
* for PartialReduxExpr and VectorwiseOp, act on columns. */
Vertical,
/** For Reverse, all rows are reversed;
* for PartialReduxExpr and VectorwiseOp, act on rows. */
Horizontal,
/** For Reverse, both rows and columns are reversed;
* not used for PartialReduxExpr and VectorwiseOp. */
BothDirections
};
enum ProductEvaluationMode { NormalProduct, CacheFriendlyProduct }; enum ProductEvaluationMode { NormalProduct, CacheFriendlyProduct };
/** \internal \ingroup enums
* Enum to specify how to traverse the entries of a matrix. */
enum { enum {
/** \internal Default traversal, no vectorization, no index-based access */ /** \internal Default traversal, no vectorization, no index-based access */
DefaultTraversal, DefaultTraversal,
@ -196,14 +245,25 @@ enum {
InvalidTraversal InvalidTraversal
}; };
/** \internal \ingroup enums
* Enum to specify whether to unroll loops when traversing over the entries of a matrix. */
enum { enum {
/** \internal Do not unroll loops. */
NoUnrolling, NoUnrolling,
/** \internal Unroll only the inner loop, but not the outer loop. */
InnerUnrolling, InnerUnrolling,
/** \internal Unroll both the inner and the outer loop. If there is only one loop,
* because linear traversal is used, then unroll that loop. */
CompleteUnrolling CompleteUnrolling
}; };
/** \ingroup enums
* Enum containing possible values for the \p _Options template parameter of
* Matrix, Array and BandMatrix. */
enum { enum {
/** Storage order is column major (see \ref TopicStorageOrders). */
ColMajor = 0, ColMajor = 0,
/** Storage order is row major (see \ref TopicStorageOrders). */
RowMajor = 0x1, // it is only a coincidence that this is equal to RowMajorBit -- don't rely on that RowMajor = 0x1, // it is only a coincidence that this is equal to RowMajorBit -- don't rely on that
/** \internal Align the matrix itself if it is vectorizable fixed-size */ /** \internal Align the matrix itself if it is vectorizable fixed-size */
AutoAlign = 0, AutoAlign = 0,
@ -211,11 +271,13 @@ enum {
DontAlign = 0x2 DontAlign = 0x2
}; };
/** \brief Enum for specifying whether to apply or solve on the left or right. /** \ingroup enums
*/ * Enum for specifying whether to apply or solve on the left or right. */
enum { enum {
OnTheLeft = 1, /**< \brief Apply transformation on the left. */ /** Apply transformation on the left. */
OnTheRight = 2 /**< \brief Apply transformation on the right. */ OnTheLeft = 1,
/** Apply transformation on the right. */
OnTheRight = 2
}; };
/* the following could as well be written: /* the following could as well be written:
@ -239,53 +301,104 @@ namespace {
EIGEN_UNUSED Default_t Default; EIGEN_UNUSED Default_t Default;
} }
/** \internal \ingroup enums
* Used in AmbiVector. */
enum { enum {
IsDense = 0, IsDense = 0,
IsSparse IsSparse
}; };
/** \ingroup enums
* Used as template parameter in DenseCoeffBase and MapBase to indicate
* which accessors should be provided. */
enum AccessorLevels { enum AccessorLevels {
ReadOnlyAccessors, WriteAccessors, DirectAccessors, DirectWriteAccessors /** Read-only access via a member function. */
ReadOnlyAccessors,
/** Read/write access via member functions. */
WriteAccessors,
/** Direct read-only access to the coefficients. */
DirectAccessors,
/** Direct read/write access to the coefficients. */
DirectWriteAccessors
}; };
/** \ingroup enums
* Enum with options to give to various decompositions. */
enum DecompositionOptions { enum DecompositionOptions {
Pivoting = 0x01, // LDLT, /** \internal Not used (meant for LDLT?). */
NoPivoting = 0x02, // LDLT, Pivoting = 0x01,
ComputeFullU = 0x04, // SVD, /** \internal Not used (meant for LDLT?). */
ComputeThinU = 0x08, // SVD, NoPivoting = 0x02,
ComputeFullV = 0x10, // SVD, /** Used in JacobiSVD to indicate that the square matrix U is to be computed. */
ComputeThinV = 0x20, // SVD, ComputeFullU = 0x04,
EigenvaluesOnly = 0x40, // all eigen solvers /** Used in JacobiSVD to indicate that the thin matrix U is to be computed. */
ComputeEigenvectors = 0x80, // all eigen solvers ComputeThinU = 0x08,
/** Used in JacobiSVD to indicate that the square matrix V is to be computed. */
ComputeFullV = 0x10,
/** Used in JacobiSVD to indicate that the thin matrix V is to be computed. */
ComputeThinV = 0x20,
/** Used in SelfAdjointEigenSolver and GeneralizedSelfAdjointEigenSolver to specify
* that only the eigenvalues are to be computed and not the eigenvectors. */
EigenvaluesOnly = 0x40,
/** Used in SelfAdjointEigenSolver and GeneralizedSelfAdjointEigenSolver to specify
* that both the eigenvalues and the eigenvectors are to be computed. */
ComputeEigenvectors = 0x80,
/** \internal */
EigVecMask = EigenvaluesOnly | ComputeEigenvectors, EigVecMask = EigenvaluesOnly | ComputeEigenvectors,
/** Used in GeneralizedSelfAdjointEigenSolver to indicate that it should
* solve the generalized eigenproblem \f$ Ax = \lambda B x \f$. */
Ax_lBx = 0x100, Ax_lBx = 0x100,
/** Used in GeneralizedSelfAdjointEigenSolver to indicate that it should
* solve the generalized eigenproblem \f$ ABx = \lambda x \f$. */
ABx_lx = 0x200, ABx_lx = 0x200,
/** Used in GeneralizedSelfAdjointEigenSolver to indicate that it should
* solve the generalized eigenproblem \f$ BAx = \lambda x \f$. */
BAx_lx = 0x400, BAx_lx = 0x400,
/** \internal */
GenEigMask = Ax_lBx | ABx_lx | BAx_lx GenEigMask = Ax_lBx | ABx_lx | BAx_lx
}; };
/** \ingroup enums
* Possible values for the \p QRPreconditioner template parameter of JacobiSVD. */
enum QRPreconditioners { enum QRPreconditioners {
/** Do not specify what is to be done if the SVD of a non-square matrix is asked for. */
NoQRPreconditioner, NoQRPreconditioner,
/** Use a QR decomposition without pivoting as the first step. */
HouseholderQRPreconditioner, HouseholderQRPreconditioner,
/** Use a QR decomposition with column pivoting as the first step. */
ColPivHouseholderQRPreconditioner, ColPivHouseholderQRPreconditioner,
/** Use a QR decomposition with full pivoting as the first step. */
FullPivHouseholderQRPreconditioner FullPivHouseholderQRPreconditioner
}; };
/** \brief Enum for reporting the status of a computation. /** \ingroups enums
*/ * Enum for reporting the status of a computation. */
enum ComputationInfo { enum ComputationInfo {
Success = 0, /**< \brief Computation was successful. */ /** Computation was successful. */
NumericalIssue = 1, /**< \brief The provided data did not satisfy the prerequisites. */ Success = 0,
NoConvergence = 2 /**< \brief Iterative procedure did not converge. */ /** The provided data did not satisfy the prerequisites. */
NumericalIssue = 1,
/** Iterative procedure did not converge. */
NoConvergence = 2
}; };
/** \ingroup enums
* Enum used to specify how a particular transformation is stored in a matrix.
* \sa Transform, Hyperplane::transform(). */
enum TransformTraits { enum TransformTraits {
/** Transformation is an isometry. */
Isometry = 0x1, Isometry = 0x1,
/** Transformation is an affine transformation stored as a (Dim+1)^2 matrix whose last row is
* assumed to be [0 ... 0 1]. */
Affine = 0x2, Affine = 0x2,
/** Transformation is an affine transformation stored as a (Dim) x (Dim+1) matrix. */
AffineCompact = 0x10 | Affine, AffineCompact = 0x10 | Affine,
/** Transformation is a general projective transformation stored as a (Dim+1)^2 matrix. */
Projective = 0x20 Projective = 0x20
}; };
/** \internal \ingroup enums
* Enum used to choose between implementation depending on the computer architecture. */
namespace Architecture namespace Architecture
{ {
enum Type { enum Type {
@ -302,8 +415,12 @@ namespace Architecture
}; };
} }
/** \internal \ingroup enums
* Enum used as template parameter in GeneralProduct. */
enum { CoeffBasedProductMode, LazyCoeffBasedProductMode, OuterProduct, InnerProduct, GemvProduct, GemmProduct }; enum { CoeffBasedProductMode, LazyCoeffBasedProductMode, OuterProduct, InnerProduct, GemvProduct, GemmProduct };
/** \internal \ingroup enums
* Enum used in experimental parallel implementation. */
enum Action {GetAction, SetAction}; enum Action {GetAction, SetAction};
/** The type used to identify a dense storage. */ /** The type used to identify a dense storage. */

View File

@ -98,8 +98,8 @@ class GeneralizedSelfAdjointEigenSolver : public SelfAdjointEigenSolver<_MatrixT
* Only the lower triangular part of the matrix is referenced. * Only the lower triangular part of the matrix is referenced.
* \param[in] matB Positive-definite matrix in matrix pencil. * \param[in] matB Positive-definite matrix in matrix pencil.
* Only the lower triangular part of the matrix is referenced. * Only the lower triangular part of the matrix is referenced.
* \param[in] options A or-ed set of flags {ComputeEigenvectors,EigenvaluesOnly} | {Ax_lBx,ABx_lx,BAx_lx}. * \param[in] options A or-ed set of flags {#ComputeEigenvectors,#EigenvaluesOnly} | {#Ax_lBx,#ABx_lx,#BAx_lx}.
* Default is ComputeEigenvectors|Ax_lBx. * Default is #ComputeEigenvectors|#Ax_lBx.
* *
* This constructor calls compute(const MatrixType&, const MatrixType&, int) * This constructor calls compute(const MatrixType&, const MatrixType&, int)
* to compute the eigenvalues and (if requested) the eigenvectors of the * to compute the eigenvalues and (if requested) the eigenvectors of the
@ -131,8 +131,8 @@ class GeneralizedSelfAdjointEigenSolver : public SelfAdjointEigenSolver<_MatrixT
* Only the lower triangular part of the matrix is referenced. * Only the lower triangular part of the matrix is referenced.
* \param[in] matB Positive-definite matrix in matrix pencil. * \param[in] matB Positive-definite matrix in matrix pencil.
* Only the lower triangular part of the matrix is referenced. * Only the lower triangular part of the matrix is referenced.
* \param[in] options A or-ed set of flags {ComputeEigenvectors,EigenvaluesOnly} | {Ax_lBx,ABx_lx,BAx_lx}. * \param[in] options A or-ed set of flags {#ComputeEigenvectors,#EigenvaluesOnly} | {#Ax_lBx,#ABx_lx,#BAx_lx}.
* Default is ComputeEigenvectors|Ax_lBx. * Default is #ComputeEigenvectors|#Ax_lBx.
* *
* \returns Reference to \c *this * \returns Reference to \c *this
* *

View File

@ -147,11 +147,11 @@ template<typename _MatrixType> class SelfAdjointEigenSolver
* *
* \param[in] matrix Selfadjoint matrix whose eigendecomposition is to * \param[in] matrix Selfadjoint matrix whose eigendecomposition is to
* be computed. Only the lower triangular part of the matrix is referenced. * be computed. Only the lower triangular part of the matrix is referenced.
* \param[in] options Can be ComputeEigenvectors (default) or EigenvaluesOnly. * \param[in] options Can be #ComputeEigenvectors (default) or #EigenvaluesOnly.
* *
* This constructor calls compute(const MatrixType&, int) to compute the * This constructor calls compute(const MatrixType&, int) to compute the
* eigenvalues of the matrix \p matrix. The eigenvectors are computed if * eigenvalues of the matrix \p matrix. The eigenvectors are computed if
* \p options equals ComputeEigenvectors. * \p options equals #ComputeEigenvectors.
* *
* Example: \include SelfAdjointEigenSolver_SelfAdjointEigenSolver_MatrixType.cpp * Example: \include SelfAdjointEigenSolver_SelfAdjointEigenSolver_MatrixType.cpp
* Output: \verbinclude SelfAdjointEigenSolver_SelfAdjointEigenSolver_MatrixType.out * Output: \verbinclude SelfAdjointEigenSolver_SelfAdjointEigenSolver_MatrixType.out
@ -171,11 +171,11 @@ template<typename _MatrixType> class SelfAdjointEigenSolver
* *
* \param[in] matrix Selfadjoint matrix whose eigendecomposition is to * \param[in] matrix Selfadjoint matrix whose eigendecomposition is to
* be computed. Only the lower triangular part of the matrix is referenced. * be computed. Only the lower triangular part of the matrix is referenced.
* \param[in] options Can be ComputeEigenvectors (default) or EigenvaluesOnly. * \param[in] options Can be #ComputeEigenvectors (default) or #EigenvaluesOnly.
* \returns Reference to \c *this * \returns Reference to \c *this
* *
* This function computes the eigenvalues of \p matrix. The eigenvalues() * This function computes the eigenvalues of \p matrix. The eigenvalues()
* function can be used to retrieve them. If \p options equals ComputeEigenvectors, * function can be used to retrieve them. If \p options equals #ComputeEigenvectors,
* then the eigenvectors are also computed and can be retrieved by * then the eigenvectors are also computed and can be retrieved by
* calling eigenvectors(). * calling eigenvectors().
* *

View File

@ -213,8 +213,8 @@ public:
/** Applies the transformation matrix \a mat to \c *this and returns a reference to \c *this. /** Applies the transformation matrix \a mat to \c *this and returns a reference to \c *this.
* *
* \param mat the Dim x Dim transformation matrix * \param mat the Dim x Dim transformation matrix
* \param traits specifies whether the matrix \a mat represents an Isometry * \param traits specifies whether the matrix \a mat represents an #Isometry
* or a more generic Affine transformation. The default is Affine. * or a more generic #Affine transformation. The default is #Affine.
*/ */
template<typename XprType> template<typename XprType>
inline Hyperplane& transform(const MatrixBase<XprType>& mat, TransformTraits traits = Affine) inline Hyperplane& transform(const MatrixBase<XprType>& mat, TransformTraits traits = Affine)
@ -233,8 +233,8 @@ public:
/** Applies the transformation \a t to \c *this and returns a reference to \c *this. /** Applies the transformation \a t to \c *this and returns a reference to \c *this.
* *
* \param t the transformation of dimension Dim * \param t the transformation of dimension Dim
* \param traits specifies whether the transformation \a t represents an Isometry * \param traits specifies whether the transformation \a t represents an #Isometry
* or a more generic Affine transformation. The default is Affine. * or a more generic #Affine transformation. The default is #Affine.
* Other kind of transformations are not supported. * Other kind of transformations are not supported.
*/ */
template<int TrOptions> template<int TrOptions>

View File

@ -357,7 +357,7 @@ class Map<const Quaternion<_Scalar>, _Options >
* The pointer \a coeffs must reference the four coeffecients of Quaternion in the following order: * The pointer \a coeffs must reference the four coeffecients of Quaternion in the following order:
* \code *coeffs == {x, y, z, w} \endcode * \code *coeffs == {x, y, z, w} \endcode
* *
* If the template parameter _Options is set to Aligned, then the pointer coeffs must be aligned. */ * If the template parameter _Options is set to #Aligned, then the pointer coeffs must be aligned. */
EIGEN_STRONG_INLINE Map(const Scalar* coeffs) : m_coeffs(coeffs) {} EIGEN_STRONG_INLINE Map(const Scalar* coeffs) : m_coeffs(coeffs) {}
inline const Coefficients& coeffs() const { return m_coeffs;} inline const Coefficients& coeffs() const { return m_coeffs;}
@ -393,7 +393,7 @@ class Map<Quaternion<_Scalar>, _Options >
* The pointer \a coeffs must reference the four coeffecients of Quaternion in the following order: * The pointer \a coeffs must reference the four coeffecients of Quaternion in the following order:
* \code *coeffs == {x, y, z, w} \endcode * \code *coeffs == {x, y, z, w} \endcode
* *
* If the template parameter _Options is set to Aligned, then the pointer coeffs must be aligned. */ * If the template parameter _Options is set to #Aligned, then the pointer coeffs must be aligned. */
EIGEN_STRONG_INLINE Map(Scalar* coeffs) : m_coeffs(coeffs) {} EIGEN_STRONG_INLINE Map(Scalar* coeffs) : m_coeffs(coeffs) {}
inline Coefficients& coeffs() { return m_coeffs; } inline Coefficients& coeffs() { return m_coeffs; }

View File

@ -86,10 +86,10 @@ template<typename TransformType> struct transform_take_affine_part;
* \tparam _Scalar the scalar type, i.e., the type of the coefficients * \tparam _Scalar the scalar type, i.e., the type of the coefficients
* \tparam _Dim the dimension of the space * \tparam _Dim the dimension of the space
* \tparam _Mode the type of the transformation. Can be: * \tparam _Mode the type of the transformation. Can be:
* - Affine: the transformation is stored as a (Dim+1)^2 matrix, * - #Affine: the transformation is stored as a (Dim+1)^2 matrix,
* where the last row is assumed to be [0 ... 0 1]. * where the last row is assumed to be [0 ... 0 1].
* - AffineCompact: the transformation is stored as a (Dim)x(Dim+1) matrix. * - #AffineCompact: the transformation is stored as a (Dim)x(Dim+1) matrix.
* - Projective: the transformation is stored as a (Dim+1)^2 matrix * - #Projective: the transformation is stored as a (Dim+1)^2 matrix
* without any assumption. * without any assumption.
* \tparam _Options has the same meaning as in class Matrix. It allows to specify DontAlign and/or RowMajor. * \tparam _Options has the same meaning as in class Matrix. It allows to specify DontAlign and/or RowMajor.
* These Options are passed directly to the underlying matrix type. * These Options are passed directly to the underlying matrix type.
@ -1082,10 +1082,10 @@ struct projective_transform_inverse<TransformType, Projective>
* *
* \param hint allows to optimize the inversion process when the transformation * \param hint allows to optimize the inversion process when the transformation
* is known to be not a general transformation (optional). The possible values are: * is known to be not a general transformation (optional). The possible values are:
* - Projective if the transformation is not necessarily affine, i.e., if the * - #Projective if the transformation is not necessarily affine, i.e., if the
* last row is not guaranteed to be [0 ... 0 1] * last row is not guaranteed to be [0 ... 0 1]
* - Affine if the last row can be assumed to be [0 ... 0 1] * - #Affine if the last row can be assumed to be [0 ... 0 1]
* - Isometry if the transformation is only a concatenations of translations * - #Isometry if the transformation is only a concatenations of translations
* and rotations. * and rotations.
* The default is the template class parameter \c Mode. * The default is the template class parameter \c Mode.
* *

View File

@ -403,8 +403,8 @@ template<typename _MatrixType, int QRPreconditioner> class JacobiSVD
* *
* \param matrix the matrix to decompose * \param matrix the matrix to decompose
* \param computationOptions optional parameter allowing to specify if you want full or thin U or V unitaries to be computed. * \param computationOptions optional parameter allowing to specify if you want full or thin U or V unitaries to be computed.
* By default, none is computed. This is a bit-field, the possible bits are ComputeFullU, ComputeThinU, * By default, none is computed. This is a bit-field, the possible bits are #ComputeFullU, #ComputeThinU,
* ComputeFullV, ComputeThinV. * #ComputeFullV, #ComputeThinV.
* *
* Thin unitaries are only available if your matrix type has a Dynamic number of columns (for example MatrixXf). They also are not * Thin unitaries are only available if your matrix type has a Dynamic number of columns (for example MatrixXf). They also are not
* available with the (non-default) FullPivHouseholderQR preconditioner. * available with the (non-default) FullPivHouseholderQR preconditioner.
@ -422,8 +422,8 @@ template<typename _MatrixType, int QRPreconditioner> class JacobiSVD
* *
* \param matrix the matrix to decompose * \param matrix the matrix to decompose
* \param computationOptions optional parameter allowing to specify if you want full or thin U or V unitaries to be computed. * \param computationOptions optional parameter allowing to specify if you want full or thin U or V unitaries to be computed.
* By default, none is computed. This is a bit-field, the possible bits are ComputeFullU, ComputeThinU, * By default, none is computed. This is a bit-field, the possible bits are #ComputeFullU, #ComputeThinU,
* ComputeFullV, ComputeThinV. * #ComputeFullV, #ComputeThinV.
* *
* Thin unitaries are only available if your matrix type has a Dynamic number of columns (for example MatrixXf). They also are not * Thin unitaries are only available if your matrix type has a Dynamic number of columns (for example MatrixXf). They also are not
* available with the (non-default) FullPivHouseholderQR preconditioner. * available with the (non-default) FullPivHouseholderQR preconditioner.
@ -444,7 +444,7 @@ template<typename _MatrixType, int QRPreconditioner> class JacobiSVD
/** \returns the \a U matrix. /** \returns the \a U matrix.
* *
* For the SVD decomposition of a n-by-p matrix, letting \a m be the minimum of \a n and \a p, * For the SVD decomposition of a n-by-p matrix, letting \a m be the minimum of \a n and \a p,
* the U matrix is n-by-n if you asked for ComputeFullU, and is n-by-m if you asked for ComputeThinU. * the U matrix is n-by-n if you asked for #ComputeFullU, and is n-by-m if you asked for #ComputeThinU.
* *
* The \a m first columns of \a U are the left singular vectors of the matrix being decomposed. * The \a m first columns of \a U are the left singular vectors of the matrix being decomposed.
* *
@ -460,7 +460,7 @@ template<typename _MatrixType, int QRPreconditioner> class JacobiSVD
/** \returns the \a V matrix. /** \returns the \a V matrix.
* *
* For the SVD decomposition of a n-by-p matrix, letting \a m be the minimum of \a n and \a p, * For the SVD decomposition of a n-by-p matrix, letting \a m be the minimum of \a n and \a p,
* the V matrix is p-by-p if you asked for ComputeFullV, and is p-by-m if you asked for ComputeThinV. * the V matrix is p-by-p if you asked for #ComputeFullV, and is p-by-m if you asked for ComputeThinV.
* *
* The \a m first columns of \a V are the right singular vectors of the matrix being decomposed. * The \a m first columns of \a V are the right singular vectors of the matrix being decomposed.
* *

View File

@ -31,7 +31,7 @@
* \brief Pseudo expression to manipulate a triangular sparse matrix as a selfadjoint matrix. * \brief Pseudo expression to manipulate a triangular sparse matrix as a selfadjoint matrix.
* *
* \param MatrixType the type of the dense matrix storing the coefficients * \param MatrixType the type of the dense matrix storing the coefficients
* \param UpLo can be either \c Lower or \c Upper * \param UpLo can be either \c #Lower or \c #Upper
* *
* This class is an expression of a sefladjoint matrix from a triangular part of a matrix * This class is an expression of a sefladjoint matrix from a triangular part of a matrix
* with given dense storage of the coefficients. It is the return type of MatrixBase::selfadjointView() * with given dense storage of the coefficients. It is the return type of MatrixBase::selfadjointView()

View File

@ -287,7 +287,7 @@ The EIGEN_DONT_ALIGN option still exists in Eigen 3, but it has a new cousin: EI
A common issue with Eigen 2 was that when mapping an array with Map, there was no way to tell Eigen that your array was aligned. There was a ForceAligned option but it didn't mean that; it was just confusing and has been removed. A common issue with Eigen 2 was that when mapping an array with Map, there was no way to tell Eigen that your array was aligned. There was a ForceAligned option but it didn't mean that; it was just confusing and has been removed.
New in Eigen3 is the Aligned option. See the documentation of class Map. Use it like this: New in Eigen3 is the #Aligned option. See the documentation of class Map. Use it like this:
\code \code
Map<Vector4f, Aligned> myMappedVector(some_aligned_array); Map<Vector4f, Aligned> myMappedVector(some_aligned_array);
\endcode \endcode

View File

@ -488,7 +488,7 @@ SHOW_FILES = YES
# Namespaces page. This will remove the Namespaces entry from the Quick Index # Namespaces page. This will remove the Namespaces entry from the Quick Index
# and from the Folder Tree View (if specified). The default is YES. # and from the Folder Tree View (if specified). The default is YES.
SHOW_NAMESPACES = NO SHOW_NAMESPACES = YES
# The FILE_VERSION_FILTER tag can be used to specify a program or script that # The FILE_VERSION_FILTER tag can be used to specify a program or script that
# doxygen should invoke to get the current version for each file (typically from # doxygen should invoke to get the current version for each file (typically from

View File

@ -400,7 +400,7 @@ inline void writePacket(int index, const PacketScalar& x)
internal::pstoret<Scalar, PacketScalar, StoreMode>(m_storage.data() + index, x); internal::pstoret<Scalar, PacketScalar, StoreMode>(m_storage.data() + index, x);
} }
\endcode \endcode
Here, \a StoreMode is \a Aligned, indicating that we are doing a 128-bit-aligned write access, \a PacketScalar is a type representing a "SSE packet of 4 floats" and internal::pstoret is a function writing such a packet in memory. Their definitions are architecture-specific, we find them in src/Core/arch/SSE/PacketMath.h: Here, \a StoreMode is \a #Aligned, indicating that we are doing a 128-bit-aligned write access, \a PacketScalar is a type representing a "SSE packet of 4 floats" and internal::pstoret is a function writing such a packet in memory. Their definitions are architecture-specific, we find them in src/Core/arch/SSE/PacketMath.h:
The line in src/Core/arch/SSE/PacketMath.h that determines the PacketScalar type (via a typedef in Matrix.h) is: The line in src/Core/arch/SSE/PacketMath.h that determines the PacketScalar type (via a typedef in Matrix.h) is:
\code \code
@ -442,7 +442,7 @@ class CwiseBinaryOp
} }
}; };
\endcode \endcode
Here, \a m_lhs is the vector \a v, and \a m_rhs is the vector \a w. So the packet() function here is Matrix::packet(). The template parameter \a LoadMode is \a Aligned. So we're looking at Here, \a m_lhs is the vector \a v, and \a m_rhs is the vector \a w. So the packet() function here is Matrix::packet(). The template parameter \a LoadMode is \a #Aligned. So we're looking at
\code \code
class Matrix class Matrix
{ {

View File

@ -594,7 +594,7 @@ unit or null diagonal (read/write):
</td><td>\code </td><td>\code
m.triangularView<Xxx>() m.triangularView<Xxx>()
\endcode \n \endcode \n
\c Xxx = Upper, Lower, StrictlyUpper, StrictlyLower, UnitUpper, UnitLower \c Xxx = ::Upper, ::Lower, ::StrictlyUpper, ::StrictlyLower, ::UnitUpper, ::UnitLower
</td></tr> </td></tr>
<tr><td> <tr><td>
Writing to a specific triangular part:\n (only the referenced triangular part is evaluated) Writing to a specific triangular part:\n (only the referenced triangular part is evaluated)