[eigen] compilation failed with devel branch (works fine with 2.0.5)

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


Hi,

I have the following example that compiles fine using 2.0.5 but failed with devel branch.

#include <eigen2/Eigen/Core>
#include <eigen2/Eigen/Array>
#include <eigen2/Eigen/LU>

static const int NMaxTinyMatrixDimension = 7;

typedef Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic,
Eigen::RowMajor | Eigen::DontAlign,
NMaxTinyMatrixDimension, NMaxTinyMatrixDimension>
TinyRMatrix;

void TestInverseCompilation()
{
TinyRMatrix m;
m.setIdentity(5, 5);
TinyRMatrix inverse = m.inverse();
}


The error message is:

In file included from /usr/include/eigen2/Eigen/Core:179,
                from test.cpp:3:
/usr/include/eigen2/Eigen/src/Core/Visitor.h: In member function ‘typename Eigen::ei_traits<T>::Scalar Eigen::MatrixBase<Derived>::maxCoeff(int*) const [with Derived = Eigen::CwiseUnaryOp<Eigen::ei_scalar_abs_op<double>, Eigen::Block<Eigen::Block<Eigen::Map<Eigen::Matrix<double, 33331, 33331, 1, 33331, 33331>, 1>, 33331, 33331, 1, 32>, 33331, 33331, 1, 32> >]’:
/usr/include/eigen2/Eigen/src/LU/PartialLU.h:236:   instantiated from ‘static void Eigen::ei_partial_lu_impl<Scalar, StorageOrder>::unblocked_lu(Eigen::Block<Eigen::Map<Eigen::Matrix<Scalar, 33331, 33331, StorageOrder, 33331, 33331>, 1>, 33331, 33331, 1, ((Eigen::ei_traits::Flags & Eigen::DirectAccessBit) ? Eigen::DirectAccessBit : (Eigen::ei_traits::Flags & Eigen::SparseBit))>&, int*, int&) [with Scalar = double, int StorageOrder = 1]’
/usr/include/eigen2/Eigen/src/LU/PartialLU.h:280:   instantiated from ‘static void Eigen::ei_partial_lu_impl<Scalar, StorageOrder>::blocked_lu(int, int, Scalar*, int, int*, int&, int) [with Scalar = double, int StorageOrder = 1]’
/usr/include/eigen2/Eigen/src/LU/PartialLU.h:348:   instantiated from ‘void Eigen::ei_partial_lu_inplace(MatrixType&, IntVector&, int&) [with MatrixType = Eigen::Matrix<double, 33331, 33331, 1, 7, 7>, IntVector = Eigen::Matrix<int, 33331, 1, 0, 33331, 1>]’
/usr/include/eigen2/Eigen/src/LU/PartialLU.h:365:   instantiated from ‘Eigen::PartialLU<MatrixType>& Eigen::PartialLU<MatrixType>::compute(const MatrixType&) [with MatrixType = Eigen::Matrix<double, 33331, 33331, 1, 7, 7>]’
/usr/include/eigen2/Eigen/src/LU/PartialLU.h:202:   instantiated from ‘Eigen::PartialLU<MatrixType>::PartialLU(const MatrixType&) [with MatrixType = Eigen::Matrix<double, 33331, 33331, 1, 7, 7>]’
/usr/include/eigen2/Eigen/src/LU/PartialLU.h:424:   instantiated from ‘const Eigen::PartialLU<typename Eigen::MatrixBase<Derived>::PlainMatrixType> Eigen::MatrixBase<Derived>::partialLu() const [with Derived = Eigen::Matrix<double, 33331, 33331, 1, 7, 7>]’
/usr/include/eigen2/Eigen/src/LU/Inverse.h:203:   instantiated from ‘static void Eigen::ei_compute_inverse<MatrixType, Size>::run(const MatrixType&, MatrixType*) [with MatrixType = Eigen::Matrix<double, 33331, 33331, 1, 7, 7>, int Size = 33331]’
/usr/include/eigen2/Eigen/src/LU/Inverse.h:263:   instantiated from ‘void Eigen::MatrixBase<Derived>::computeInverse(typename Eigen::ei_plain_matrix_type<Derived>::type*) const [with Derived = Eigen::Matrix<double, 33331, 33331, 3, 7, 7>]’
/usr/include/eigen2/Eigen/src/LU/Inverse.h:285:   instantiated from ‘const typename Eigen::MatrixBase<Derived>::PlainMatrixType Eigen::MatrixBase<Derived>::inverse() const [with Derived = Eigen::Matrix<double, 33331, 33331, 3, 7, 7>]’
test.cpp:17:   instantiated from here
/usr/include/eigen2/Eigen/src/Core/Visitor.h:221: error: ‘YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX’ is not a member of ‘Eigen::ei_static_assert<false>’

I don't think that the function inverse is deprecated so I wonder if this is a regression or I should modify my code(but I don't know how though)

thanks,

Xuewen




Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/