mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
meagre outcome for so much time spent!
* fix inverse() bug discovered by Gael's test * fix warnings introduced by the new Diagonal stuff * update Doxyfile to v1.5.6
This commit is contained in:
@@ -42,15 +42,15 @@ template<typename CoeffsVectorType>
|
|||||||
struct ei_traits<DiagonalMatrix<CoeffsVectorType> >
|
struct ei_traits<DiagonalMatrix<CoeffsVectorType> >
|
||||||
{
|
{
|
||||||
typedef typename CoeffsVectorType::Scalar Scalar;
|
typedef typename CoeffsVectorType::Scalar Scalar;
|
||||||
typedef typename ei_nested<CoeffsVectorType>::type CoeffsVectorTypeTypeNested;
|
typedef typename ei_nested<CoeffsVectorType>::type CoeffsVectorTypeNested;
|
||||||
typedef typename ei_unref<CoeffsVectorTypeTypeNested>::type _CoeffsVectorTypeTypeNested;
|
typedef typename ei_unref<CoeffsVectorTypeNested>::type _CoeffsVectorTypeNested;
|
||||||
enum {
|
enum {
|
||||||
RowsAtCompileTime = CoeffsVectorType::SizeAtCompileTime,
|
RowsAtCompileTime = CoeffsVectorType::SizeAtCompileTime,
|
||||||
ColsAtCompileTime = CoeffsVectorType::SizeAtCompileTime,
|
ColsAtCompileTime = CoeffsVectorType::SizeAtCompileTime,
|
||||||
MaxRowsAtCompileTime = CoeffsVectorType::MaxSizeAtCompileTime,
|
MaxRowsAtCompileTime = CoeffsVectorType::MaxSizeAtCompileTime,
|
||||||
MaxColsAtCompileTime = CoeffsVectorType::MaxSizeAtCompileTime,
|
MaxColsAtCompileTime = CoeffsVectorType::MaxSizeAtCompileTime,
|
||||||
Flags = _CoeffsVectorTypeTypeNested::Flags & HereditaryBits | Diagonal,
|
Flags = (_CoeffsVectorTypeNested::Flags & HereditaryBits) | Diagonal,
|
||||||
CoeffReadCost = _CoeffsVectorTypeTypeNested::CoeffReadCost
|
CoeffReadCost = _CoeffsVectorTypeNested::CoeffReadCost
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ class Matrix : public MatrixBase<Matrix<_Scalar, _Rows, _Cols, _Flags, _MaxRows,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
ei_assert(x > 0 && (RowsAtCompileTime == Dynamic || RowsAtCompileTime == x)
|
ei_assert(x > 0 && (RowsAtCompileTime == Dynamic || RowsAtCompileTime == x)
|
||||||
&& y > 0 && (ColsAtCompileTime == Dynamic || ColsAtCompileTime == y));
|
&& y > 0 && (ColsAtCompileTime == Dynamic || ColsAtCompileTime == y));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/** constructs an initialized 2D vector with given coefficients */
|
/** constructs an initialized 2D vector with given coefficients */
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ template<typename Lhs, typename Rhs> struct ei_product_eval_mode
|
|||||||
enum{ value = Lhs::MaxRowsAtCompileTime >= EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD
|
enum{ value = Lhs::MaxRowsAtCompileTime >= EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD
|
||||||
&& Rhs::MaxColsAtCompileTime >= EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD
|
&& Rhs::MaxColsAtCompileTime >= EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD
|
||||||
&& Lhs::MaxColsAtCompileTime >= EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD
|
&& Lhs::MaxColsAtCompileTime >= EIGEN_CACHEFRIENDLY_PRODUCT_THRESHOLD
|
||||||
&& Rhs::Flags&Diagonal!=Diagonal
|
&& (Rhs::Flags&Diagonal)!=Diagonal
|
||||||
? CacheFriendlyProduct : NormalProduct };
|
? CacheFriendlyProduct : NormalProduct };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -60,9 +60,9 @@ template<typename MatrixType, bool CheckExistence> class Inverse : ei_no_assignm
|
|||||||
EIGEN_GENERIC_PUBLIC_INTERFACE(Inverse)
|
EIGEN_GENERIC_PUBLIC_INTERFACE(Inverse)
|
||||||
|
|
||||||
Inverse(const MatrixType& matrix)
|
Inverse(const MatrixType& matrix)
|
||||||
: m_exists(true),
|
: m_inverse(MatrixType::identity(matrix.rows(), matrix.cols()))
|
||||||
m_inverse(MatrixType::identity(matrix.rows(), matrix.cols()))
|
|
||||||
{
|
{
|
||||||
|
if(CheckExistence) m_exists = true;
|
||||||
ei_assert(matrix.rows() == matrix.cols());
|
ei_assert(matrix.rows() == matrix.cols());
|
||||||
_compute(matrix);
|
_compute(matrix);
|
||||||
}
|
}
|
||||||
@@ -269,7 +269,7 @@ template<typename Derived>
|
|||||||
const Inverse<typename ei_eval<Derived>::type, true>
|
const Inverse<typename ei_eval<Derived>::type, true>
|
||||||
MatrixBase<Derived>::inverse() const
|
MatrixBase<Derived>::inverse() const
|
||||||
{
|
{
|
||||||
return Inverse<typename ei_eval<Derived>::type, true>(derived());
|
return Inverse<typename ei_eval<Derived>::type, true>(eval());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \return the matrix inverse of \c *this, which is assumed to exist.
|
/** \return the matrix inverse of \c *this, which is assumed to exist.
|
||||||
@@ -283,7 +283,7 @@ template<typename Derived>
|
|||||||
const Inverse<typename ei_eval<Derived>::type, false>
|
const Inverse<typename ei_eval<Derived>::type, false>
|
||||||
MatrixBase<Derived>::quickInverse() const
|
MatrixBase<Derived>::quickInverse() const
|
||||||
{
|
{
|
||||||
return Inverse<typename ei_eval<Derived>::type, false>(derived());
|
return Inverse<typename ei_eval<Derived>::type, false>(eval());
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // EIGEN_INVERSE_H
|
#endif // EIGEN_INVERSE_H
|
||||||
|
|||||||
1272
doc/Doxyfile.in
1272
doc/Doxyfile.in
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user