diff --git a/Solver_interface/include/CGAL/Eigen_diagonalize_traits.h b/Solver_interface/include/CGAL/Eigen_diagonalize_traits.h index 9c6281e8188..eb2bb042b2f 100644 --- a/Solver_interface/include/CGAL/Eigen_diagonalize_traits.h +++ b/Solver_interface/include/CGAL/Eigen_diagonalize_traits.h @@ -30,6 +30,15 @@ namespace CGAL { +namespace internal { + +template +struct Restricted_FT { typedef double type; }; +template <> +struct Restricted_FT { typedef float type; }; + +} + /// \ingroup PkgSolverInterfaceRef /// /// The class `Eigen_diagonalize_traits` provides an interface to the @@ -47,14 +56,15 @@ namespace CGAL { template class Eigen_diagonalize_traits { + typedef typename internal::Restricted_FT::type RFT; public: typedef std::array Vector; typedef std::array Matrix; typedef std::array Covariance_matrix; private: - typedef Eigen::Matrix EigenMatrix; - typedef Eigen::Matrix EigenVector; + typedef Eigen::Matrix EigenMatrix; + typedef Eigen::Matrix EigenVector; /// Construct the covariance matrix static EigenMatrix construct_covariance_matrix(const Covariance_matrix& cov) @@ -65,7 +75,7 @@ private: { for(std::size_t j=i; j(cov[(dim * i) + j - ((i * (i+1)) / 2)]); + m(i,j) = static_cast(CGAL::to_double(cov[(dim * i) + j - ((i * (i+1)) / 2)])); if(i != j) m(j,i) = m(i,j);