Opened 5 years ago

Last modified 5 years ago

#13021 new Bugs

Odeint: Eigen upgrade to v 3.3.3 breaks compatibility

Reported by: speku.gmt@… Owned by: karsten
Milestone: To Be Determined Component: odeint
Version: Boost 1.64.0 Severity: Problem
Keywords: odeint eigen include Cc:

Description

In order to combine odeint with the Eigen library I use, among other things, #include "boost/numeric/odeint/external/eigen/eigen.hpp"

This used to work perfectly with Eigen version 3.2 , but fails after an upgrade of the Eigen libraries to version 3.3.3. The code does not compile, generating a large amount of error messages, beginning with:

In file included from /usr/include/boost/numeric/odeint/external/eigen/eigen.hpp:22:0,
                 from minimal.cpp:3:
/usr/include/boost/numeric/odeint/external/eigen/eigen_algebra.hpp:35:37: error: ‘scalar_add_op’ in namespace ‘Eigen::internal’ does not name a template type
(...) 

A minimal reproducible example is:

#include <Eigen/Dense>
#include <boost/numeric/odeint.hpp>
#include "boost/numeric/odeint/external/eigen/eigen.hpp"
int main() {}

This code does not compile with Eigen 3.3.3. The only functioning workaround I found was downgrading to Eigen 3.3.2.

I noticed the problem while using Boost version 1.58.0, ubuntu 16.04, g++ version 5.4.0. Upgraded to Boost version 1.64.0; to no avail. The error messages differ after the Boost upgrade but the problem persists.

Change History (2)

comment:1 by speku.gmt@…, 5 years ago

My apologies for a mistake that I just noticed concerning the version number: The workaround consisted in downgrading the Eigen library to version 3.2, and not to 3.3.2, as erroneously stated in the ticket. Perhaps an admin could edit and correct this in the ticket to avoid (further) confusion. Thanks in advance for your help.

comment:2 by speku.gmt@…, 5 years ago

Component: Noneodeint
Owner: set to karsten
Note: See TracTickets for help on using tickets.