[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Please help porting cufflinks to latest libboost



* Andreas Tille <andreas@an3as.eu>, 2016-07-12, 11:12:
In file included from /usr/include/eigen3/Eigen/Core:297:0,
                from /usr/include/eigen3/Eigen/Dense:1,
                from abundances.h:21,
                from abundances.cpp:16:
/usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h: In instantiation of 'Eigen::DenseCoeffsBase<Derived, 0>::CoeffReturnType Eigen::DenseCoeffsBase<Derived, 0>::coeff(Eigen::Index) const [with Derived = Eigen
/usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:181:19:   required from 'Eigen::DenseCoeffsBase<Derived, 0>::CoeffReturnType Eigen::DenseCoeffsBase<Derived, 0>::operator()(Eigen::Index) const [with Derived
abundances.cpp:3815:28:   required from here
/usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:141:7: error: 'THIS_COEFFICIENT_ACCESSOR_TAKING_ONE_ACCESS_IS_ONLY_FOR_EXPRESSIONS_ALLOWING_LINEAR_ACCESS' is not a member of 'Eigen::internal::static_assert
      EIGEN_STATIC_ASSERT(internal::evaluator<Derived>::Flags & LinearAccessBit,
      ^
Makefile:1627: recipe for target 'abundances.o' failed

The relevant code in src/abundances.cpp looks like this:

	Eigen::VectorXd v;
	double m = 0;
	v = U.rowwise().sum();
	m = v.colwise().sum()(0);

For some reason Eigen thinks that v.colwise().sum() cannot be treated as a one-dimensional vector, which smells like a bug in Eigen. Changing the last line to

	m = v.colwise().sum()(0, 0);

seems to do the trick.

Upstream bug report:
https://github.com/cole-trapnell-lab/cufflinks/issues/61

--
Jakub Wilk


Reply to: