This bugzilla service is closed. All entries have been migrated to
Bug 1033 - Eigen with ceres solver problem
Summary: Eigen with ceres solver problem
Alias: None
Product: Eigen
Classification: Unclassified
Component: Interoperability (show other bugs)
Version: 3.2
Hardware: All All
: Normal Compilation Problem
Assignee: Nobody
Depends on:
Reported: 2015-07-02 09:16 UTC by liu liu
Modified: 2019-12-04 14:43 UTC (History)
4 users (show)


Description liu liu 2015-07-02 09:16:23 UTC
the bug occurs when I try to implement the costfunction using ceres solver.

template <typename T>
bool operator()(const T*  q_cam_odo, const T* t_cam_odo, T* residuals) const

JacobiSVD<Matrix <T, 4, 4>> svd(Anorm, ComputeFullU | ComputeFullV);


but it reports a compilation error :

cannot covert the first argument from int to JetT

Then I follow the instructions to file <MathFunctions.h>

* Implementation of hypot                                                *

template<typename Scalar>
struct hypot_impl
  typedef typename NumTraits<Scalar>::Real RealScalar;
  static inline RealScalar run(const Scalar& x, const Scalar& y)
    using std::max;
    using std::min;
    using std::abs;
    using std::sqrt;
    RealScalar _x = abs(x);
    RealScalar _y = abs(y);
    RealScalar p = (max)(_x, _y);
    if(p==RealScalar(0)) return 0;
    RealScalar q = (min)(_x, _y);
    RealScalar qp = q/p;
    return p * sqrt(RealScalar(1) + qp*qp);

I just change the expression:
 if(p==RealScalar(0)) return 0;
 if(p==RealScalar(0)) return RealScalar(0);

Thanks god, it's OK.
Comment 1 Christoph Hertzberg 2015-07-17 11:24:01 UTC
Thanks for the report. Fixed here:
Comment 2 Nobody 2019-12-04 14:43:35 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance:

Note You need to log in before you can comment on or make changes to this bug.