mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-01-30 17:40:05 +08:00
fix a couple of ICE with gcc 4.0.1
This commit is contained in:
parent
1701a5d1f8
commit
a76950bdab
@ -62,7 +62,7 @@ class DenseStorageBase : public _Base<Derived>
|
|||||||
typedef class Eigen::Map<Derived, Aligned> AlignedMapType;
|
typedef class Eigen::Map<Derived, Aligned> AlignedMapType;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ei_matrix_storage<Scalar, MaxSizeAtCompileTime, RowsAtCompileTime, ColsAtCompileTime, Options> m_storage;
|
ei_matrix_storage<Scalar, Base::MaxSizeAtCompileTime, Base::RowsAtCompileTime, Base::ColsAtCompileTime, Options> m_storage;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum { NeedsToAlign = (!(Options&DontAlign))
|
enum { NeedsToAlign = (!(Options&DontAlign))
|
||||||
|
@ -45,7 +45,7 @@ void makeTrivialHouseholder(
|
|||||||
template<typename Derived>
|
template<typename Derived>
|
||||||
void MatrixBase<Derived>::makeHouseholderInPlace(Scalar& tau, RealScalar& beta)
|
void MatrixBase<Derived>::makeHouseholderInPlace(Scalar& tau, RealScalar& beta)
|
||||||
{
|
{
|
||||||
VectorBlock<Derived, ei_decrement_size<SizeAtCompileTime>::ret> essentialPart(derived(), 1, size()-1);
|
VectorBlock<Derived, ei_decrement_size<Base::SizeAtCompileTime>::ret> essentialPart(derived(), 1, size()-1);
|
||||||
makeHouseholder(essentialPart, tau, beta);
|
makeHouseholder(essentialPart, tau, beta);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,7 +99,7 @@ void MatrixBase<Derived>::applyHouseholderOnTheLeft(
|
|||||||
const Scalar& tau,
|
const Scalar& tau,
|
||||||
Scalar* workspace)
|
Scalar* workspace)
|
||||||
{
|
{
|
||||||
Map<Matrix<Scalar, 1, ColsAtCompileTime, PlainMatrixType::Options, 1, MaxColsAtCompileTime> > tmp(workspace,cols());
|
Map<Matrix<Scalar, 1, Base::ColsAtCompileTime, PlainMatrixType::Options, 1, Base::MaxColsAtCompileTime> > tmp(workspace,cols());
|
||||||
Block<Derived, EssentialPart::SizeAtCompileTime, Derived::ColsAtCompileTime> bottom(derived(), 1, 0, rows()-1, cols());
|
Block<Derived, EssentialPart::SizeAtCompileTime, Derived::ColsAtCompileTime> bottom(derived(), 1, 0, rows()-1, cols());
|
||||||
tmp.noalias() = essential.adjoint() * bottom;
|
tmp.noalias() = essential.adjoint() * bottom;
|
||||||
tmp += this->row(0);
|
tmp += this->row(0);
|
||||||
@ -114,7 +114,7 @@ void MatrixBase<Derived>::applyHouseholderOnTheRight(
|
|||||||
const Scalar& tau,
|
const Scalar& tau,
|
||||||
Scalar* workspace)
|
Scalar* workspace)
|
||||||
{
|
{
|
||||||
Map<Matrix<Scalar, RowsAtCompileTime, 1, PlainMatrixType::Options, MaxRowsAtCompileTime, 1> > tmp(workspace,rows());
|
Map<Matrix<Scalar, Base::RowsAtCompileTime, 1, PlainMatrixType::Options, Base::MaxRowsAtCompileTime, 1> > tmp(workspace,rows());
|
||||||
Block<Derived, Derived::RowsAtCompileTime, EssentialPart::SizeAtCompileTime> right(derived(), 0, 1, rows(), cols()-1);
|
Block<Derived, Derived::RowsAtCompileTime, EssentialPart::SizeAtCompileTime> right(derived(), 0, 1, rows(), cols()-1);
|
||||||
tmp.noalias() = right * essential.conjugate();
|
tmp.noalias() = right * essential.conjugate();
|
||||||
tmp += this->col(0);
|
tmp += this->col(0);
|
||||||
|
@ -99,7 +99,7 @@ template<typename Derived>
|
|||||||
inline typename ei_traits<Derived>::Scalar MatrixBase<Derived>::determinant() const
|
inline typename ei_traits<Derived>::Scalar MatrixBase<Derived>::determinant() const
|
||||||
{
|
{
|
||||||
assert(rows() == cols());
|
assert(rows() == cols());
|
||||||
typedef typename ei_nested<Derived,RowsAtCompileTime>::type Nested;
|
typedef typename ei_nested<Derived,Base::RowsAtCompileTime>::type Nested;
|
||||||
Nested nested(derived());
|
Nested nested(derived());
|
||||||
return ei_determinant_impl<typename ei_cleantype<Nested>::type>::run(nested);
|
return ei_determinant_impl<typename ei_cleantype<Nested>::type>::run(nested);
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,7 @@ template<typename MatrixType> void product_notemporary(const MatrixType& m)
|
|||||||
// Zero temporaries for lazy products ...
|
// Zero temporaries for lazy products ...
|
||||||
VERIFY_EVALUATION_COUNT( Scalar tmp = 0; tmp += Scalar(RealScalar(1)) / (m3.transpose().lazyProduct(m3)).diagonal().sum(), 0 );
|
VERIFY_EVALUATION_COUNT( Scalar tmp = 0; tmp += Scalar(RealScalar(1)) / (m3.transpose().lazyProduct(m3)).diagonal().sum(), 0 );
|
||||||
|
|
||||||
// ... and even no temporary for even deeply (>=2) nested products
|
// ... and even no temporary for even deeply (>=2) nested products
|
||||||
VERIFY_EVALUATION_COUNT( Scalar tmp = 0; tmp += Scalar(RealScalar(1)) / (m3.transpose() * m3).diagonal().sum(), 0 );
|
VERIFY_EVALUATION_COUNT( Scalar tmp = 0; tmp += Scalar(RealScalar(1)) / (m3.transpose() * m3).diagonal().sum(), 0 );
|
||||||
VERIFY_EVALUATION_COUNT( Scalar tmp = 0; tmp += Scalar(RealScalar(1)) / (m3.transpose() * m3).diagonal().array().abs().sum(), 0 );
|
VERIFY_EVALUATION_COUNT( Scalar tmp = 0; tmp += Scalar(RealScalar(1)) / (m3.transpose() * m3).diagonal().array().abs().sum(), 0 );
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user