mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-04-19 16:19:37 +08:00
Fix numerous doxygen issues in auto-link generation
This commit is contained in:
parent
162ccb2938
commit
29bb599e03
@ -17,16 +17,16 @@
|
|||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
/** \defgroup Geometry_Module Geometry module
|
/** \defgroup Geometry_Module Geometry module
|
||||||
*
|
|
||||||
*
|
|
||||||
*
|
*
|
||||||
* This module provides support for:
|
* This module provides support for:
|
||||||
* - fixed-size homogeneous transformations
|
* - fixed-size homogeneous transformations
|
||||||
* - translation, scaling, 2D and 3D rotations
|
* - translation, scaling, 2D and 3D rotations
|
||||||
* - quaternions
|
* - \link Quaternion quaternions \endlink
|
||||||
* - \ref MatrixBase::cross() "cross product"
|
* - cross products (\ref MatrixBase::cross, \ref MatrixBase::cross3)
|
||||||
* - \ref MatrixBase::unitOrthogonal() "orthognal vector generation"
|
* - orthognal vector generation (\ref MatrixBase::unitOrthogonal)
|
||||||
* - some linear components: parametrized-lines and hyperplanes
|
* - some linear components: \link ParametrizedLine parametrized-lines \endlink and \link Hyperplane hyperplanes \endlink
|
||||||
|
* - \link AlignedBox axis aligned bounding boxes \endlink
|
||||||
|
* - \link umeyama least-square transformation fitting \endlink
|
||||||
*
|
*
|
||||||
* \code
|
* \code
|
||||||
* #include <Eigen/Geometry>
|
* #include <Eigen/Geometry>
|
||||||
|
@ -358,7 +358,7 @@ class CholmodBase : public SparseSolverBase<Derived>
|
|||||||
*
|
*
|
||||||
* This class supports all kind of SparseMatrix<>: row or column major; upper, lower, or both; compressed or non compressed.
|
* This class supports all kind of SparseMatrix<>: row or column major; upper, lower, or both; compressed or non compressed.
|
||||||
*
|
*
|
||||||
* \sa \ref TutorialSparseDirectSolvers, class CholmodSupernodalLLT, class SimplicialLLT
|
* \sa \ref TutorialSparseSolverConcept, class CholmodSupernodalLLT, class SimplicialLLT
|
||||||
*/
|
*/
|
||||||
template<typename _MatrixType, int _UpLo = Lower>
|
template<typename _MatrixType, int _UpLo = Lower>
|
||||||
class CholmodSimplicialLLT : public CholmodBase<_MatrixType, _UpLo, CholmodSimplicialLLT<_MatrixType, _UpLo> >
|
class CholmodSimplicialLLT : public CholmodBase<_MatrixType, _UpLo, CholmodSimplicialLLT<_MatrixType, _UpLo> >
|
||||||
@ -407,7 +407,7 @@ class CholmodSimplicialLLT : public CholmodBase<_MatrixType, _UpLo, CholmodSimpl
|
|||||||
*
|
*
|
||||||
* This class supports all kind of SparseMatrix<>: row or column major; upper, lower, or both; compressed or non compressed.
|
* This class supports all kind of SparseMatrix<>: row or column major; upper, lower, or both; compressed or non compressed.
|
||||||
*
|
*
|
||||||
* \sa \ref TutorialSparseDirectSolvers, class CholmodSupernodalLLT, class SimplicialLDLT
|
* \sa \ref TutorialSparseSolverConcept, class CholmodSupernodalLLT, class SimplicialLDLT
|
||||||
*/
|
*/
|
||||||
template<typename _MatrixType, int _UpLo = Lower>
|
template<typename _MatrixType, int _UpLo = Lower>
|
||||||
class CholmodSimplicialLDLT : public CholmodBase<_MatrixType, _UpLo, CholmodSimplicialLDLT<_MatrixType, _UpLo> >
|
class CholmodSimplicialLDLT : public CholmodBase<_MatrixType, _UpLo, CholmodSimplicialLDLT<_MatrixType, _UpLo> >
|
||||||
@ -454,7 +454,7 @@ class CholmodSimplicialLDLT : public CholmodBase<_MatrixType, _UpLo, CholmodSimp
|
|||||||
*
|
*
|
||||||
* This class supports all kind of SparseMatrix<>: row or column major; upper, lower, or both; compressed or non compressed.
|
* This class supports all kind of SparseMatrix<>: row or column major; upper, lower, or both; compressed or non compressed.
|
||||||
*
|
*
|
||||||
* \sa \ref TutorialSparseDirectSolvers
|
* \sa \ref TutorialSparseSolverConcept
|
||||||
*/
|
*/
|
||||||
template<typename _MatrixType, int _UpLo = Lower>
|
template<typename _MatrixType, int _UpLo = Lower>
|
||||||
class CholmodSupernodalLLT : public CholmodBase<_MatrixType, _UpLo, CholmodSupernodalLLT<_MatrixType, _UpLo> >
|
class CholmodSupernodalLLT : public CholmodBase<_MatrixType, _UpLo, CholmodSupernodalLLT<_MatrixType, _UpLo> >
|
||||||
@ -503,7 +503,7 @@ class CholmodSupernodalLLT : public CholmodBase<_MatrixType, _UpLo, CholmodSuper
|
|||||||
*
|
*
|
||||||
* This class supports all kind of SparseMatrix<>: row or column major; upper, lower, or both; compressed or non compressed.
|
* This class supports all kind of SparseMatrix<>: row or column major; upper, lower, or both; compressed or non compressed.
|
||||||
*
|
*
|
||||||
* \sa \ref TutorialSparseDirectSolvers
|
* \sa \ref TutorialSparseSolverConcept
|
||||||
*/
|
*/
|
||||||
template<typename _MatrixType, int _UpLo = Lower>
|
template<typename _MatrixType, int _UpLo = Lower>
|
||||||
class CholmodDecomposition : public CholmodBase<_MatrixType, _UpLo, CholmodDecomposition<_MatrixType, _UpLo> >
|
class CholmodDecomposition : public CholmodBase<_MatrixType, _UpLo, CholmodDecomposition<_MatrixType, _UpLo> >
|
||||||
|
@ -328,7 +328,7 @@ EIGEN_STRONG_INLINE void DenseBase<Derived>::fill(const Scalar& val)
|
|||||||
setConstant(val);
|
setConstant(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Sets all coefficients in this expression to \a value.
|
/** Sets all coefficients in this expression to value \a val.
|
||||||
*
|
*
|
||||||
* \sa fill(), setConstant(Index,const Scalar&), setConstant(Index,Index,const Scalar&), setZero(), setOnes(), Constant(), class CwiseNullaryOp, setZero(), setOnes()
|
* \sa fill(), setConstant(Index,const Scalar&), setConstant(Index,Index,const Scalar&), setZero(), setOnes(), Constant(), class CwiseNullaryOp, setZero(), setOnes()
|
||||||
*/
|
*/
|
||||||
@ -338,7 +338,7 @@ EIGEN_STRONG_INLINE Derived& DenseBase<Derived>::setConstant(const Scalar& val)
|
|||||||
return derived() = Constant(rows(), cols(), val);
|
return derived() = Constant(rows(), cols(), val);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Resizes to the given \a size, and sets all coefficients in this expression to the given \a value.
|
/** Resizes to the given \a size, and sets all coefficients in this expression to the given value \a val.
|
||||||
*
|
*
|
||||||
* \only_for_vectors
|
* \only_for_vectors
|
||||||
*
|
*
|
||||||
@ -355,7 +355,7 @@ PlainObjectBase<Derived>::setConstant(Index size, const Scalar& val)
|
|||||||
return setConstant(val);
|
return setConstant(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Resizes to the given size, and sets all coefficients in this expression to the given \a value.
|
/** Resizes to the given size, and sets all coefficients in this expression to the given value \a val.
|
||||||
*
|
*
|
||||||
* \param rows the new number of rows
|
* \param rows the new number of rows
|
||||||
* \param cols the new number of columns
|
* \param cols the new number of columns
|
||||||
|
@ -82,7 +82,7 @@ MatrixBase<Derived>::dot(const MatrixBase<OtherDerived>& other) const
|
|||||||
* In both cases, it consists in the sum of the square of all the matrix entries.
|
* 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 \c *this with itself.
|
* For vectors, this is also equals to the dot product of \c *this with itself.
|
||||||
*
|
*
|
||||||
* \sa dot(), norm()
|
* \sa dot(), norm(), lpNorm()
|
||||||
*/
|
*/
|
||||||
template<typename Derived>
|
template<typename Derived>
|
||||||
EIGEN_STRONG_INLINE typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::squaredNorm() const
|
EIGEN_STRONG_INLINE typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::squaredNorm() const
|
||||||
@ -94,7 +94,7 @@ EIGEN_STRONG_INLINE typename NumTraits<typename internal::traits<Derived>::Scala
|
|||||||
* In both cases, it consists in the square root of the sum of the square of all the matrix entries.
|
* 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 \c *this with itself.
|
* For vectors, this is also equals to the square root of the dot product of \c *this with itself.
|
||||||
*
|
*
|
||||||
* \sa dot(), squaredNorm()
|
* \sa lpNorm(), dot(), squaredNorm()
|
||||||
*/
|
*/
|
||||||
template<typename Derived>
|
template<typename Derived>
|
||||||
inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::norm() const
|
inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::norm() const
|
||||||
@ -188,7 +188,11 @@ struct lpNorm_selector<Derived, Infinity>
|
|||||||
*/
|
*/
|
||||||
template<typename Derived>
|
template<typename Derived>
|
||||||
template<int p>
|
template<int p>
|
||||||
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
||||||
inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
|
inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real
|
||||||
|
#else
|
||||||
|
MatrixBase<Derived>::RealScalar
|
||||||
|
#endif
|
||||||
MatrixBase<Derived>::lpNorm() const
|
MatrixBase<Derived>::lpNorm() const
|
||||||
{
|
{
|
||||||
return internal::lpNorm_selector<Derived, p>::run(*this);
|
return internal::lpNorm_selector<Derived, p>::run(*this);
|
||||||
|
@ -386,7 +386,11 @@ template<typename Derived> class MatrixBase
|
|||||||
#endif // EIGEN_PARSED_BY_DOXYGEN
|
#endif // EIGEN_PARSED_BY_DOXYGEN
|
||||||
template<typename OtherDerived>
|
template<typename OtherDerived>
|
||||||
EIGEN_DEVICE_FUNC
|
EIGEN_DEVICE_FUNC
|
||||||
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
||||||
inline typename cross_product_return_type<OtherDerived>::type
|
inline typename cross_product_return_type<OtherDerived>::type
|
||||||
|
#else
|
||||||
|
inline PlainObject
|
||||||
|
#endif
|
||||||
cross(const MatrixBase<OtherDerived>& other) const;
|
cross(const MatrixBase<OtherDerived>& other) const;
|
||||||
|
|
||||||
template<typename OtherDerived>
|
template<typename OtherDerived>
|
||||||
|
@ -533,7 +533,7 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/** \copydoc MatrixBase::operator=(const EigenBase<OtherDerived>&)
|
/** \copydoc DenseBase::operator=(const EigenBase<OtherDerived>&)
|
||||||
*/
|
*/
|
||||||
template<typename OtherDerived>
|
template<typename OtherDerived>
|
||||||
EIGEN_DEVICE_FUNC
|
EIGEN_DEVICE_FUNC
|
||||||
@ -618,8 +618,8 @@ class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
|
|||||||
//@}
|
//@}
|
||||||
|
|
||||||
using Base::setConstant;
|
using Base::setConstant;
|
||||||
EIGEN_DEVICE_FUNC Derived& setConstant(Index size, const Scalar& value);
|
EIGEN_DEVICE_FUNC Derived& setConstant(Index size, const Scalar& val);
|
||||||
EIGEN_DEVICE_FUNC Derived& setConstant(Index rows, Index cols, const Scalar& value);
|
EIGEN_DEVICE_FUNC Derived& setConstant(Index rows, Index cols, const Scalar& val);
|
||||||
|
|
||||||
using Base::setZero;
|
using Base::setZero;
|
||||||
EIGEN_DEVICE_FUNC Derived& setZero(Index size);
|
EIGEN_DEVICE_FUNC Derived& setZero(Index size);
|
||||||
|
@ -224,7 +224,7 @@ enum {
|
|||||||
|
|
||||||
/** \ingroup enums
|
/** \ingroup enums
|
||||||
* Enum for indicating whether a buffer is aligned or not. */
|
* Enum for indicating whether a buffer is aligned or not. */
|
||||||
enum {
|
enum Foo {
|
||||||
Unaligned=0, /**< Data pointer has no specific alignment. */
|
Unaligned=0, /**< Data pointer has no specific alignment. */
|
||||||
Aligned8=8, /**< Data pointer is aligned on a 8 bytes boundary. */
|
Aligned8=8, /**< Data pointer is aligned on a 8 bytes boundary. */
|
||||||
Aligned16=16, /**< Data pointer is aligned on a 16 bytes boundary. */
|
Aligned16=16, /**< Data pointer is aligned on a 16 bytes boundary. */
|
||||||
|
@ -228,6 +228,7 @@ template<typename _MatrixType> class SelfAdjointEigenSolver
|
|||||||
*
|
*
|
||||||
* \param[in] diag The vector containing the diagonal of the matrix.
|
* \param[in] diag The vector containing the diagonal of the matrix.
|
||||||
* \param[in] subdiag The subdiagonal of the matrix.
|
* \param[in] subdiag The subdiagonal of the matrix.
|
||||||
|
* \param[in] options Can be #ComputeEigenvectors (default) or #EigenvaluesOnly.
|
||||||
* \returns Reference to \c *this
|
* \returns Reference to \c *this
|
||||||
*
|
*
|
||||||
* This function assumes that the matrix has been reduced to tridiagonal form.
|
* This function assumes that the matrix has been reduced to tridiagonal form.
|
||||||
@ -299,8 +300,7 @@ template<typename _MatrixType> class SelfAdjointEigenSolver
|
|||||||
* Example: \include SelfAdjointEigenSolver_operatorSqrt.cpp
|
* Example: \include SelfAdjointEigenSolver_operatorSqrt.cpp
|
||||||
* Output: \verbinclude SelfAdjointEigenSolver_operatorSqrt.out
|
* Output: \verbinclude SelfAdjointEigenSolver_operatorSqrt.out
|
||||||
*
|
*
|
||||||
* \sa operatorInverseSqrt(),
|
* \sa operatorInverseSqrt(), <a href="unsupported/group__MatrixFunctions__Module.html">MatrixFunctions Module</a>
|
||||||
* \ref MatrixFunctions_Module "MatrixFunctions Module"
|
|
||||||
*/
|
*/
|
||||||
EIGEN_DEVICE_FUNC
|
EIGEN_DEVICE_FUNC
|
||||||
MatrixType operatorSqrt() const
|
MatrixType operatorSqrt() const
|
||||||
@ -325,8 +325,7 @@ template<typename _MatrixType> class SelfAdjointEigenSolver
|
|||||||
* Example: \include SelfAdjointEigenSolver_operatorInverseSqrt.cpp
|
* Example: \include SelfAdjointEigenSolver_operatorInverseSqrt.cpp
|
||||||
* Output: \verbinclude SelfAdjointEigenSolver_operatorInverseSqrt.out
|
* Output: \verbinclude SelfAdjointEigenSolver_operatorInverseSqrt.out
|
||||||
*
|
*
|
||||||
* \sa operatorSqrt(), MatrixBase::inverse(),
|
* \sa operatorSqrt(), MatrixBase::inverse(), <a href="unsupported/group__MatrixFunctions__Module.html">MatrixFunctions Module</a>
|
||||||
* \ref MatrixFunctions_Module "MatrixFunctions Module"
|
|
||||||
*/
|
*/
|
||||||
EIGEN_DEVICE_FUNC
|
EIGEN_DEVICE_FUNC
|
||||||
MatrixType operatorInverseSqrt() const
|
MatrixType operatorInverseSqrt() const
|
||||||
|
@ -112,7 +112,7 @@ template<typename MatrixType,int _Direction> class Homogeneous
|
|||||||
typename MatrixType::Nested m_matrix;
|
typename MatrixType::Nested m_matrix;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** \geometry_module
|
/** \geometry_module \ingroup Geometry_Module
|
||||||
*
|
*
|
||||||
* \return an expression of the equivalent homogeneous vector
|
* \return an expression of the equivalent homogeneous vector
|
||||||
*
|
*
|
||||||
@ -131,7 +131,7 @@ MatrixBase<Derived>::homogeneous() const
|
|||||||
return HomogeneousReturnType(derived());
|
return HomogeneousReturnType(derived());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \geometry_module
|
/** \geometry_module \ingroup Geometry_Module
|
||||||
*
|
*
|
||||||
* \returns a matrix expression of homogeneous column (or row) vectors
|
* \returns a matrix expression of homogeneous column (or row) vectors
|
||||||
*
|
*
|
||||||
@ -146,7 +146,7 @@ VectorwiseOp<ExpressionType,Direction>::homogeneous() const
|
|||||||
return HomogeneousReturnType(_expression());
|
return HomogeneousReturnType(_expression());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \geometry_module
|
/** \geometry_module \ingroup Geometry_Module
|
||||||
*
|
*
|
||||||
* \returns an expression of the homogeneous normalized vector of \c *this
|
* \returns an expression of the homogeneous normalized vector of \c *this
|
||||||
*
|
*
|
||||||
@ -164,7 +164,7 @@ MatrixBase<Derived>::hnormalized() const
|
|||||||
ColsAtCompileTime==1?1:size()-1) / coeff(size()-1);
|
ColsAtCompileTime==1?1:size()-1) / coeff(size()-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \geometry_module
|
/** \geometry_module \ingroup Geometry_Module
|
||||||
*
|
*
|
||||||
* \returns an expression of the homogeneous normalized vector of \c *this
|
* \returns an expression of the homogeneous normalized vector of \c *this
|
||||||
*
|
*
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
namespace Eigen {
|
namespace Eigen {
|
||||||
|
|
||||||
/** \geometry_module
|
/** \geometry_module \ingroup Geometry_Module
|
||||||
*
|
*
|
||||||
* \returns the cross product of \c *this and \a other
|
* \returns the cross product of \c *this and \a other
|
||||||
*
|
*
|
||||||
@ -26,7 +26,11 @@ namespace Eigen {
|
|||||||
*/
|
*/
|
||||||
template<typename Derived>
|
template<typename Derived>
|
||||||
template<typename OtherDerived>
|
template<typename OtherDerived>
|
||||||
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
||||||
inline typename MatrixBase<Derived>::template cross_product_return_type<OtherDerived>::type
|
inline typename MatrixBase<Derived>::template cross_product_return_type<OtherDerived>::type
|
||||||
|
#else
|
||||||
|
inline typename MatrixBase<Derived>::PlainObject
|
||||||
|
#endif
|
||||||
MatrixBase<Derived>::cross(const MatrixBase<OtherDerived>& other) const
|
MatrixBase<Derived>::cross(const MatrixBase<OtherDerived>& other) const
|
||||||
{
|
{
|
||||||
EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Derived,3)
|
EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Derived,3)
|
||||||
@ -63,7 +67,7 @@ struct cross3_impl {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \geometry_module
|
/** \geometry_module \ingroup Geometry_Module
|
||||||
*
|
*
|
||||||
* \returns the cross product of \c *this and \a other using only the x, y, and z coefficients
|
* \returns the cross product of \c *this and \a other using only the x, y, and z coefficients
|
||||||
*
|
*
|
||||||
@ -90,14 +94,14 @@ MatrixBase<Derived>::cross3(const MatrixBase<OtherDerived>& other) const
|
|||||||
typename internal::remove_all<OtherDerivedNested>::type>::run(lhs,rhs);
|
typename internal::remove_all<OtherDerivedNested>::type>::run(lhs,rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \returns a matrix expression of the cross product of each column or row
|
/** \geometry_module \ingroup Geometry_Module
|
||||||
|
*
|
||||||
|
* \returns a matrix expression of the cross product of each column or row
|
||||||
* of the referenced expression with the \a other vector.
|
* of the referenced expression with the \a other vector.
|
||||||
*
|
*
|
||||||
* The referenced matrix must have one dimension equal to 3.
|
* The referenced matrix must have one dimension equal to 3.
|
||||||
* The result matrix has the same dimensions than the referenced one.
|
* The result matrix has the same dimensions than the referenced one.
|
||||||
*
|
*
|
||||||
* \geometry_module
|
|
||||||
*
|
|
||||||
* \sa MatrixBase::cross() */
|
* \sa MatrixBase::cross() */
|
||||||
template<typename ExpressionType, int Direction>
|
template<typename ExpressionType, int Direction>
|
||||||
template<typename OtherDerived>
|
template<typename OtherDerived>
|
||||||
@ -207,7 +211,9 @@ struct unitOrthogonal_selector<Derived,2>
|
|||||||
|
|
||||||
} // end namespace internal
|
} // end namespace internal
|
||||||
|
|
||||||
/** \returns a unit vector which is orthogonal to \c *this
|
/** \geometry_module \ingroup Geometry_Module
|
||||||
|
*
|
||||||
|
* \returns a unit vector which is orthogonal to \c *this
|
||||||
*
|
*
|
||||||
* The size of \c *this must be at least 2. If the size is exactly 2,
|
* The size of \c *this must be at least 2. If the size is exactly 2,
|
||||||
* then the returned vector is a counter clock wise rotation of \c *this, i.e., (-y,x).normalized().
|
* then the returned vector is a counter clock wise rotation of \c *this, i.e., (-y,x).normalized().
|
||||||
|
@ -104,6 +104,9 @@ public:
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** \addtogroup Geometry_Module */
|
||||||
|
//@{
|
||||||
|
|
||||||
/** Concatenates a linear transformation matrix and a uniform scaling */
|
/** Concatenates a linear transformation matrix and a uniform scaling */
|
||||||
// NOTE this operator is defiend in MatrixBase and not as a friend function
|
// NOTE this operator is defiend in MatrixBase and not as a friend function
|
||||||
// of UniformScaling to fix an internal crash of Intel's ICC
|
// of UniformScaling to fix an internal crash of Intel's ICC
|
||||||
@ -136,8 +139,6 @@ template<typename Derived>
|
|||||||
static inline const DiagonalWrapper<const Derived> Scaling(const MatrixBase<Derived>& coeffs)
|
static inline const DiagonalWrapper<const Derived> Scaling(const MatrixBase<Derived>& coeffs)
|
||||||
{ return coeffs.asDiagonal(); }
|
{ return coeffs.asDiagonal(); }
|
||||||
|
|
||||||
/** \addtogroup Geometry_Module */
|
|
||||||
//@{
|
|
||||||
/** \deprecated */
|
/** \deprecated */
|
||||||
typedef DiagonalMatrix<float, 2> AlignedScaling2f;
|
typedef DiagonalMatrix<float, 2> AlignedScaling2f;
|
||||||
/** \deprecated */
|
/** \deprecated */
|
||||||
|
@ -405,7 +405,7 @@ bool PastixBase<Base>::_solve_impl(const MatrixBase<Rhs> &b, MatrixBase<Dest> &x
|
|||||||
*
|
*
|
||||||
* \implsparsesolverconcept
|
* \implsparsesolverconcept
|
||||||
*
|
*
|
||||||
* \sa \ref TutorialSparseDirectSolvers
|
* \sa \ref TutorialSparseSolverConcept, class SparseLU
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
template<typename _MatrixType, bool IsStrSym>
|
template<typename _MatrixType, bool IsStrSym>
|
||||||
@ -518,7 +518,7 @@ class PastixLU : public PastixBase< PastixLU<_MatrixType> >
|
|||||||
*
|
*
|
||||||
* \implsparsesolverconcept
|
* \implsparsesolverconcept
|
||||||
*
|
*
|
||||||
* \sa \ref TutorialSparseDirectSolvers
|
* \sa \ref TutorialSparseSolverConcept, class SimplicialLLT
|
||||||
*/
|
*/
|
||||||
template<typename _MatrixType, int _UpLo>
|
template<typename _MatrixType, int _UpLo>
|
||||||
class PastixLLT : public PastixBase< PastixLLT<_MatrixType, _UpLo> >
|
class PastixLLT : public PastixBase< PastixLLT<_MatrixType, _UpLo> >
|
||||||
@ -601,7 +601,7 @@ class PastixLLT : public PastixBase< PastixLLT<_MatrixType, _UpLo> >
|
|||||||
*
|
*
|
||||||
* \implsparsesolverconcept
|
* \implsparsesolverconcept
|
||||||
*
|
*
|
||||||
* \sa \ref TutorialSparseDirectSolvers
|
* \sa \ref TutorialSparseSolverConcept, class SimplicialLDLT
|
||||||
*/
|
*/
|
||||||
template<typename _MatrixType, int _UpLo>
|
template<typename _MatrixType, int _UpLo>
|
||||||
class PastixLDLT : public PastixBase< PastixLDLT<_MatrixType, _UpLo> >
|
class PastixLDLT : public PastixBase< PastixLDLT<_MatrixType, _UpLo> >
|
||||||
|
@ -375,7 +375,7 @@ void PardisoImpl<Derived>::_solve_impl(const MatrixBase<BDerived> &b, MatrixBase
|
|||||||
*
|
*
|
||||||
* \implsparsesolverconcept
|
* \implsparsesolverconcept
|
||||||
*
|
*
|
||||||
* \sa \ref TutorialSparseDirectSolvers
|
* \sa \ref TutorialSparseSolverConcept, class SparseLU
|
||||||
*/
|
*/
|
||||||
template<typename MatrixType>
|
template<typename MatrixType>
|
||||||
class PardisoLU : public PardisoImpl< PardisoLU<MatrixType> >
|
class PardisoLU : public PardisoImpl< PardisoLU<MatrixType> >
|
||||||
@ -427,7 +427,7 @@ class PardisoLU : public PardisoImpl< PardisoLU<MatrixType> >
|
|||||||
*
|
*
|
||||||
* \implsparsesolverconcept
|
* \implsparsesolverconcept
|
||||||
*
|
*
|
||||||
* \sa \ref TutorialSparseDirectSolvers
|
* \sa \ref TutorialSparseSolverConcept, class SimplicialLLT
|
||||||
*/
|
*/
|
||||||
template<typename MatrixType, int _UpLo>
|
template<typename MatrixType, int _UpLo>
|
||||||
class PardisoLLT : public PardisoImpl< PardisoLLT<MatrixType,_UpLo> >
|
class PardisoLLT : public PardisoImpl< PardisoLLT<MatrixType,_UpLo> >
|
||||||
@ -487,7 +487,7 @@ class PardisoLLT : public PardisoImpl< PardisoLLT<MatrixType,_UpLo> >
|
|||||||
*
|
*
|
||||||
* \implsparsesolverconcept
|
* \implsparsesolverconcept
|
||||||
*
|
*
|
||||||
* \sa \ref TutorialSparseDirectSolvers
|
* \sa \ref TutorialSparseSolverConcept, class SimplicialLDLT
|
||||||
*/
|
*/
|
||||||
template<typename MatrixType, int Options>
|
template<typename MatrixType, int Options>
|
||||||
class PardisoLDLT : public PardisoImpl< PardisoLDLT<MatrixType,Options> >
|
class PardisoLDLT : public PardisoImpl< PardisoLDLT<MatrixType,Options> >
|
||||||
|
@ -42,7 +42,7 @@ namespace Eigen {
|
|||||||
*
|
*
|
||||||
* If the input matrix has inf or nan coefficients, the result of the computation is undefined, but the computation is guaranteed to
|
* If the input matrix has inf or nan coefficients, the result of the computation is undefined, but the computation is guaranteed to
|
||||||
* terminate in finite (and reasonable) time.
|
* terminate in finite (and reasonable) time.
|
||||||
* \sa MatrixBase::genericSvd()
|
* \sa class BDCSVD, class JacobiSVD
|
||||||
*/
|
*/
|
||||||
template<typename Derived>
|
template<typename Derived>
|
||||||
class SVDBase
|
class SVDBase
|
||||||
@ -74,7 +74,7 @@ public:
|
|||||||
/** \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 \link Eigen::ComputeFullU ComputeFullU \endlink, and is n-by-m if you asked for \link Eigen::ComputeThinU ComputeThinU \endlink.
|
||||||
*
|
*
|
||||||
* 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.
|
||||||
*
|
*
|
||||||
@ -90,7 +90,7 @@ public:
|
|||||||
/** \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 \link Eigen::ComputeFullV ComputeFullV \endlink, and is p-by-m if you asked for \link Eigen::ComputeThinV ComputeThinV \endlink.
|
||||||
*
|
*
|
||||||
* 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.
|
||||||
*
|
*
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
namespace Eigen {
|
namespace Eigen {
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
StandardCompressedFormat = 2
|
StandardCompressedFormat = 2 /**< used by Ref<SparseMatrix> to specify whether the input storage must be in standard compressed form */
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace internal {
|
namespace internal {
|
||||||
|
@ -67,7 +67,7 @@ template <typename MatrixLType, typename MatrixUType> struct SparseLUMatrixURetu
|
|||||||
*
|
*
|
||||||
* \implsparsesolverconcept
|
* \implsparsesolverconcept
|
||||||
*
|
*
|
||||||
* \sa \ref TutorialSparseDirectSolvers
|
* \sa \ref TutorialSparseSolverConcept
|
||||||
* \sa \ref OrderingMethods_Module
|
* \sa \ref OrderingMethods_Module
|
||||||
*/
|
*/
|
||||||
template <typename _MatrixType, typename _OrderingType>
|
template <typename _MatrixType, typename _OrderingType>
|
||||||
|
@ -456,7 +456,7 @@ class SuperLUBase : public SparseSolverBase<Derived>
|
|||||||
*
|
*
|
||||||
* \implsparsesolverconcept
|
* \implsparsesolverconcept
|
||||||
*
|
*
|
||||||
* \sa \ref TutorialSparseDirectSolvers
|
* \sa \ref TutorialSparseSolverConcept, class SparseLU
|
||||||
*/
|
*/
|
||||||
template<typename _MatrixType>
|
template<typename _MatrixType>
|
||||||
class SuperLU : public SuperLUBase<_MatrixType,SuperLU<_MatrixType> >
|
class SuperLU : public SuperLUBase<_MatrixType,SuperLU<_MatrixType> >
|
||||||
@ -809,7 +809,7 @@ typename SuperLU<MatrixType>::Scalar SuperLU<MatrixType>::determinant() const
|
|||||||
*
|
*
|
||||||
* \implsparsesolverconcept
|
* \implsparsesolverconcept
|
||||||
*
|
*
|
||||||
* \sa \ref TutorialSparseDirectSolvers, class ConjugateGradient, class BiCGSTAB
|
* \sa \ref TutorialSparseSolverConcept, class IncompleteLUT, class ConjugateGradient, class BiCGSTAB
|
||||||
*/
|
*/
|
||||||
|
|
||||||
template<typename _MatrixType>
|
template<typename _MatrixType>
|
||||||
|
@ -126,7 +126,9 @@ inline int umfpack_get_determinant(std::complex<double> *Mx, double *Ex, void *N
|
|||||||
* Otherwise an expensive copy will be made. You can call the inexpensive makeCompressed() to get a compressed matrix.
|
* Otherwise an expensive copy will be made. You can call the inexpensive makeCompressed() to get a compressed matrix.
|
||||||
* \tparam _MatrixType the type of the sparse matrix A, it must be a SparseMatrix<>
|
* \tparam _MatrixType the type of the sparse matrix A, it must be a SparseMatrix<>
|
||||||
*
|
*
|
||||||
* \sa \ref TutorialSparseDirectSolvers
|
* \implsparsesolverconcept
|
||||||
|
*
|
||||||
|
* \sa \ref TutorialSparseSolverConcept, class SparseLU
|
||||||
*/
|
*/
|
||||||
template<typename _MatrixType>
|
template<typename _MatrixType>
|
||||||
class UmfPackLU : public SparseSolverBase<UmfPackLU<_MatrixType> >
|
class UmfPackLU : public SparseSolverBase<UmfPackLU<_MatrixType> >
|
||||||
|
@ -21,7 +21,7 @@ The Eigen library is divided in a Core module and several additional modules. Ea
|
|||||||
<tr class="alt"><td>\link SVD_Module SVD \endlink</td><td>\code#include <Eigen/SVD>\endcode</td><td>SVD decompositions with least-squares solver (JacobiSVD, BDCSVD)</td></tr>
|
<tr class="alt"><td>\link SVD_Module SVD \endlink</td><td>\code#include <Eigen/SVD>\endcode</td><td>SVD decompositions with least-squares solver (JacobiSVD, BDCSVD)</td></tr>
|
||||||
<tr ><td>\link QR_Module QR \endlink</td><td>\code#include <Eigen/QR>\endcode</td><td>QR decomposition with solver (HouseholderQR, ColPivHouseholderQR, FullPivHouseholderQR)</td></tr>
|
<tr ><td>\link QR_Module QR \endlink</td><td>\code#include <Eigen/QR>\endcode</td><td>QR decomposition with solver (HouseholderQR, ColPivHouseholderQR, FullPivHouseholderQR)</td></tr>
|
||||||
<tr class="alt"><td>\link Eigenvalues_Module Eigenvalues \endlink</td><td>\code#include <Eigen/Eigenvalues>\endcode</td><td>Eigenvalue, eigenvector decompositions (EigenSolver, SelfAdjointEigenSolver, ComplexEigenSolver)</td></tr>
|
<tr class="alt"><td>\link Eigenvalues_Module Eigenvalues \endlink</td><td>\code#include <Eigen/Eigenvalues>\endcode</td><td>Eigenvalue, eigenvector decompositions (EigenSolver, SelfAdjointEigenSolver, ComplexEigenSolver)</td></tr>
|
||||||
<tr ><td>\link Sparse_modules Sparse \endlink</td><td>\code#include <Eigen/Sparse>\endcode</td><td>%Sparse matrix storage and related basic linear algebra (SparseMatrix, SparseVector) \n (see \ref SparseQuickRefPage for details on sparse modules)</td></tr>
|
<tr ><td>\link Sparse_Module Sparse \endlink</td><td>\code#include <Eigen/Sparse>\endcode</td><td>%Sparse matrix storage and related basic linear algebra (SparseMatrix, SparseVector) \n (see \ref SparseQuickRefPage for details on sparse modules)</td></tr>
|
||||||
<tr class="alt"><td></td><td>\code#include <Eigen/Dense>\endcode</td><td>Includes Core, Geometry, LU, Cholesky, SVD, QR, and Eigenvalues header files</td></tr>
|
<tr class="alt"><td></td><td>\code#include <Eigen/Dense>\endcode</td><td>Includes Core, Geometry, LU, Cholesky, SVD, QR, and Eigenvalues header files</td></tr>
|
||||||
<tr ><td></td><td>\code#include <Eigen/Eigen>\endcode</td><td>Includes %Dense and %Sparse header files (the whole Eigen library)</td></tr>
|
<tr ><td></td><td>\code#include <Eigen/Eigen>\endcode</td><td>Includes %Dense and %Sparse header files (the whole Eigen library)</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
@ -15,20 +15,20 @@ They are summarized in the following tables:
|
|||||||
<tr><th>Class</th><th>Solver kind</th><th>Matrix kind</th><th>Features related to performance</th>
|
<tr><th>Class</th><th>Solver kind</th><th>Matrix kind</th><th>Features related to performance</th>
|
||||||
<th>License</th><th class="width20em"><p>Notes</p></th></tr>
|
<th>License</th><th class="width20em"><p>Notes</p></th></tr>
|
||||||
|
|
||||||
<tr><td>SimplicialLLT \n <tt>#include<Eigen/\link SparseCholesky_Module SparseCholesky\endlink></tt></td><td>Direct LLt factorization</td><td>SPD</td><td>Fill-in reducing</td>
|
<tr><td>SimplicialLLT \n <tt>\#include<Eigen/\link SparseCholesky_Module SparseCholesky\endlink></tt></td><td>Direct LLt factorization</td><td>SPD</td><td>Fill-in reducing</td>
|
||||||
<td>LGPL</td>
|
<td>LGPL</td>
|
||||||
<td>SimplicialLDLT is often preferable</td></tr>
|
<td>SimplicialLDLT is often preferable</td></tr>
|
||||||
|
|
||||||
<tr><td>SimplicialLDLT \n <tt>#include<Eigen/\link SparseCholesky_Module SparseCholesky\endlink></tt></td><td>Direct LDLt factorization</td><td>SPD</td><td>Fill-in reducing</td>
|
<tr><td>SimplicialLDLT \n <tt>\#include<Eigen/\link SparseCholesky_Module SparseCholesky\endlink></tt></td><td>Direct LDLt factorization</td><td>SPD</td><td>Fill-in reducing</td>
|
||||||
<td>LGPL</td>
|
<td>LGPL</td>
|
||||||
<td>Recommended for very sparse and not too large problems (e.g., 2D Poisson eq.)</td></tr>
|
<td>Recommended for very sparse and not too large problems (e.g., 2D Poisson eq.)</td></tr>
|
||||||
|
|
||||||
<tr><td>SparseLU \n <tt>#include<Eigen/\link SparseLU_Module SparseLU\endlink></tt></td> <td>LU factorization </td>
|
<tr><td>SparseLU \n <tt>\#include<Eigen/\link SparseLU_Module SparseLU\endlink></tt></td> <td>LU factorization </td>
|
||||||
<td>Square </td><td>Fill-in reducing, Leverage fast dense algebra</td>
|
<td>Square </td><td>Fill-in reducing, Leverage fast dense algebra</td>
|
||||||
<td>MPL2</td>
|
<td>MPL2</td>
|
||||||
<td>optimized for small and large problems with irregular patterns </td></tr>
|
<td>optimized for small and large problems with irregular patterns </td></tr>
|
||||||
|
|
||||||
<tr><td>SparseQR \n <tt>#include<Eigen/\link SparseQR_Module SparseQR\endlink></tt></td> <td> QR factorization</td>
|
<tr><td>SparseQR \n <tt>\#include<Eigen/\link SparseQR_Module SparseQR\endlink></tt></td> <td> QR factorization</td>
|
||||||
<td>Any, rectangular</td><td> Fill-in reducing</td>
|
<td>Any, rectangular</td><td> Fill-in reducing</td>
|
||||||
<td>MPL2</td>
|
<td>MPL2</td>
|
||||||
<td>recommended for least-square problems, has a basic rank-revealing feature</td></tr>
|
<td>recommended for least-square problems, has a basic rank-revealing feature</td></tr>
|
||||||
@ -40,17 +40,17 @@ They are summarized in the following tables:
|
|||||||
<tr><th>Class</th><th>Solver kind</th><th>Matrix kind</th><th>Supported preconditioners, [default]</th>
|
<tr><th>Class</th><th>Solver kind</th><th>Matrix kind</th><th>Supported preconditioners, [default]</th>
|
||||||
<th>License</th><th class="width20em"><p>Notes</p></th></tr>
|
<th>License</th><th class="width20em"><p>Notes</p></th></tr>
|
||||||
|
|
||||||
<tr><td>ConjugateGradient \n <tt>#include<Eigen/\link IterativeLinearSolvers_Module IterativeLinearSolvers\endlink></tt></td> <td>Classic iterative CG</td><td>SPD</td>
|
<tr><td>ConjugateGradient \n <tt>\#include<Eigen/\link IterativeLinearSolvers_Module IterativeLinearSolvers\endlink></tt></td> <td>Classic iterative CG</td><td>SPD</td>
|
||||||
<td>IdentityPreconditioner, [DiagonalPreconditioner], IncompleteCholesky</td>
|
<td>IdentityPreconditioner, [DiagonalPreconditioner], IncompleteCholesky</td>
|
||||||
<td>MPL2</td>
|
<td>MPL2</td>
|
||||||
<td>Recommended for large symmetric problems (e.g., 3D Poisson eq.)</td></tr>
|
<td>Recommended for large symmetric problems (e.g., 3D Poisson eq.)</td></tr>
|
||||||
|
|
||||||
<tr><td>LeastSquaresConjugateGradient \n <tt>#include<Eigen/\link IterativeLinearSolvers_Module IterativeLinearSolvers\endlink></tt></td><td>CG for rectangular least-square problem</td><td>Rectangular</td>
|
<tr><td>LeastSquaresConjugateGradient \n <tt>\#include<Eigen/\link IterativeLinearSolvers_Module IterativeLinearSolvers\endlink></tt></td><td>CG for rectangular least-square problem</td><td>Rectangular</td>
|
||||||
<td>IdentityPreconditioner, [LeastSquareDiagonalPreconditioner]</td>
|
<td>IdentityPreconditioner, [LeastSquareDiagonalPreconditioner]</td>
|
||||||
<td>MPL2</td>
|
<td>MPL2</td>
|
||||||
<td>Solve for min |A'Ax-b|^2 without forming A'A</td></tr>
|
<td>Solve for min |A'Ax-b|^2 without forming A'A</td></tr>
|
||||||
|
|
||||||
<tr><td>BiCGSTAB \n <tt>#include<Eigen/\link IterativeLinearSolvers_Module IterativeLinearSolvers\endlink></tt></td><td>Iterative stabilized bi-conjugate gradient</td><td>Square</td>
|
<tr><td>BiCGSTAB \n <tt>\#include<Eigen/\link IterativeLinearSolvers_Module IterativeLinearSolvers\endlink></tt></td><td>Iterative stabilized bi-conjugate gradient</td><td>Square</td>
|
||||||
<td>IdentityPreconditioner, [DiagonalPreconditioner], IncompleteLUT</td>
|
<td>IdentityPreconditioner, [DiagonalPreconditioner], IncompleteLUT</td>
|
||||||
<td>MPL2</td>
|
<td>MPL2</td>
|
||||||
<td>To speedup the convergence, try it with the \ref IncompleteLUT preconditioner.</td></tr>
|
<td>To speedup the convergence, try it with the \ref IncompleteLUT preconditioner.</td></tr>
|
||||||
|
@ -6,7 +6,7 @@ namespace Eigen {
|
|||||||
|
|
||||||
\section StructHavingEigenMembers_summary Executive Summary
|
\section StructHavingEigenMembers_summary Executive Summary
|
||||||
|
|
||||||
If you define a structure having members of \ref TopicFixedSizeVectorizable "fixed-size vectorizable Eigen types", you must overload its "operator new" so that it generates 16-bytes-aligned pointers. Fortunately, Eigen provides you with a macro EIGEN_MAKE_ALIGNED_OPERATOR_NEW that does that for you.
|
If you define a structure having members of \ref TopicFixedSizeVectorizable "fixed-size vectorizable Eigen types", you must overload its "operator new" so that it generates 16-bytes-aligned pointers. Fortunately, %Eigen provides you with a macro EIGEN_MAKE_ALIGNED_OPERATOR_NEW that does that for you.
|
||||||
|
|
||||||
\section StructHavingEigenMembers_what What kind of code needs to be changed?
|
\section StructHavingEigenMembers_what What kind of code needs to be changed?
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ Foo *foo = new Foo;
|
|||||||
|
|
||||||
This macro makes "new Foo" always return an aligned pointer.
|
This macro makes "new Foo" always return an aligned pointer.
|
||||||
|
|
||||||
If this approach is too intrusive, see also the \ref othersolutions.
|
If this approach is too intrusive, see also the \ref StructHavingEigenMembers_othersolutions "other solutions".
|
||||||
|
|
||||||
\section StructHavingEigenMembers_why Why is this needed?
|
\section StructHavingEigenMembers_why Why is this needed?
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ class Foo
|
|||||||
Foo *foo = new Foo;
|
Foo *foo = new Foo;
|
||||||
\endcode
|
\endcode
|
||||||
|
|
||||||
A Eigen::Vector2d consists of 2 doubles, which is 128 bits. Which is exactly the size of a SSE packet, which makes it possible to use SSE for all sorts of operations on this vector. But SSE instructions (at least the ones that Eigen uses, which are the fast ones) require 128-bit alignment. Otherwise you get a segmentation fault.
|
A Eigen::Vector2d consists of 2 doubles, which is 128 bits. Which is exactly the size of a SSE packet, which makes it possible to use SSE for all sorts of operations on this vector. But SSE instructions (at least the ones that %Eigen uses, which are the fast ones) require 128-bit alignment. Otherwise you get a segmentation fault.
|
||||||
|
|
||||||
For this reason, Eigen takes care by itself to require 128-bit alignment for Eigen::Vector2d, by doing two things:
|
For this reason, Eigen takes care by itself to require 128-bit alignment for Eigen::Vector2d, by doing two things:
|
||||||
\li Eigen requires 128-bit alignment for the Eigen::Vector2d's array (of 2 doubles). With GCC, this is done with a __attribute__ ((aligned(16))).
|
\li Eigen requires 128-bit alignment for the Eigen::Vector2d's array (of 2 doubles). With GCC, this is done with a __attribute__ ((aligned(16))).
|
||||||
|
@ -36,7 +36,7 @@ Here is now a more involved example:
|
|||||||
|
|
||||||
Eigen chooses lazy evaluation at every stage in that example, which is clearly the correct choice. In fact, lazy evaluation is the "default choice" and Eigen will choose it except in a few circumstances.
|
Eigen chooses lazy evaluation at every stage in that example, which is clearly the correct choice. In fact, lazy evaluation is the "default choice" and Eigen will choose it except in a few circumstances.
|
||||||
|
|
||||||
<b>The first circumstance</b> in which Eigen chooses immediate evaluation, is when it sees an assignment <tt>a = b;</tt> and the expression \c b has the evaluate-before-assigning \link flags flag\endlink. The most important example of such an expression is the \link GeneralProduct matrix product expression\endlink. For example, when you do
|
<b>The first circumstance</b> in which Eigen chooses immediate evaluation, is when it sees an assignment <tt>a = b;</tt> and the expression \c b has the evaluate-before-assigning \link flags flag\endlink. The most important example of such an expression is the \link Product matrix product expression\endlink. For example, when you do
|
||||||
|
|
||||||
\code matrix = matrix * matrix; \endcode
|
\code matrix = matrix * matrix; \endcode
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ What if you know that the result does no alias the operand of the product and wa
|
|||||||
|
|
||||||
Here, since we know that matrix2 is not the same matrix as matrix1, we know that lazy evaluation is not dangerous, so we may force lazy evaluation. Concretely, the effect of noalias() here is to bypass the evaluate-before-assigning \link flags flag\endlink.
|
Here, since we know that matrix2 is not the same matrix as matrix1, we know that lazy evaluation is not dangerous, so we may force lazy evaluation. Concretely, the effect of noalias() here is to bypass the evaluate-before-assigning \link flags flag\endlink.
|
||||||
|
|
||||||
<b>The second circumstance</b> in which Eigen chooses immediate evaluation, is when it sees a nested expression such as <tt>a + b</tt> where \c b is already an expression having the evaluate-before-nesting \link flags flag\endlink. Again, the most important example of such an expression is the \link GeneralProduct matrix product expression\endlink. For example, when you do
|
<b>The second circumstance</b> in which Eigen chooses immediate evaluation, is when it sees a nested expression such as <tt>a + b</tt> where \c b is already an expression having the evaluate-before-nesting \link flags flag\endlink. Again, the most important example of such an expression is the \link Product matrix product expression\endlink. For example, when you do
|
||||||
|
|
||||||
\code matrix1 = matrix2 + matrix3 * matrix4; \endcode
|
\code matrix1 = matrix2 + matrix3 * matrix4; \endcode
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ The following example shows how to use array operations on a Matrix object by em
|
|||||||
* to multiply them coefficient-wise and assigns the result to the matrix variable \c result (this is legal
|
* to multiply them coefficient-wise and assigns the result to the matrix variable \c result (this is legal
|
||||||
because Eigen allows assigning array expressions to matrix variables).
|
because Eigen allows assigning array expressions to matrix variables).
|
||||||
|
|
||||||
As a matter of fact, this usage case is so common that Eigen provides a \link MatrixBase::cwiseProduct() const
|
As a matter of fact, this usage case is so common that Eigen provides a \link MatrixBase::cwiseProduct const
|
||||||
.cwiseProduct(.) \endlink method for matrices to compute the coefficient-wise product. This is also shown in
|
.cwiseProduct(.) \endlink method for matrices to compute the coefficient-wise product. This is also shown in
|
||||||
the example program.
|
the example program.
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ Eigen also provides the \link MatrixBase::norm() norm() \endlink method, which r
|
|||||||
|
|
||||||
These operations can also operate on matrices; in that case, a n-by-p matrix is seen as a vector of size (n*p), so for example the \link MatrixBase::norm() norm() \endlink method returns the "Frobenius" or "Hilbert-Schmidt" norm. We refrain from speaking of the \f$\ell^2\f$ norm of a matrix because that can mean different things.
|
These operations can also operate on matrices; in that case, a n-by-p matrix is seen as a vector of size (n*p), so for example the \link MatrixBase::norm() norm() \endlink method returns the "Frobenius" or "Hilbert-Schmidt" norm. We refrain from speaking of the \f$\ell^2\f$ norm of a matrix because that can mean different things.
|
||||||
|
|
||||||
If you want other coefficient-wise \f$\ell^p\f$ norms, use the \link MatrixBase::lpNorm() lpNorm<p>() \endlink method. The template parameter \a p can take the special value \a Infinity if you want the \f$\ell^\infty\f$ norm, which is the maximum of the absolute values of the coefficients.
|
If you want other coefficient-wise \f$\ell^p\f$ norms, use the \link MatrixBase::lpNorm lpNorm<p>() \endlink method. The template parameter \a p can take the special value \a Infinity if you want the \f$\ell^\infty\f$ norm, which is the maximum of the absolute values of the coefficients.
|
||||||
|
|
||||||
The following example demonstrates these methods.
|
The following example demonstrates these methods.
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ Array.
|
|||||||
|
|
||||||
The arguments passed to a visitor are pointers to the variables where the
|
The arguments passed to a visitor are pointers to the variables where the
|
||||||
row and column position are to be stored. These variables should be of type
|
row and column position are to be stored. These variables should be of type
|
||||||
\link DenseBase::Index Index \endlink, as shown below:
|
\link Eigen::Index Index \endlink, as shown below:
|
||||||
|
|
||||||
<table class="example">
|
<table class="example">
|
||||||
<tr><th>Example:</th><th>Output:</th></tr>
|
<tr><th>Example:</th><th>Output:</th></tr>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user