From 766a65e1c0b50bca5783298d7f76a669c81684e5 Mon Sep 17 00:00:00 2001 From: Marc Glisse Date: Wed, 27 Jan 2021 12:33:45 +0100 Subject: [PATCH 1/2] Fix NewKernel_d/Eigen compatibility some bitrot... --- .../include/CGAL/NewKernel_d/LA_eigen/constructors.h | 8 +++----- Number_types/include/CGAL/Interval_nt.h | 10 ++++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/NewKernel_d/include/CGAL/NewKernel_d/LA_eigen/constructors.h b/NewKernel_d/include/CGAL/NewKernel_d/LA_eigen/constructors.h index 9fb8ef02107..1bb4b2a33ef 100644 --- a/NewKernel_d/include/CGAL/NewKernel_d/LA_eigen/constructors.h +++ b/NewKernel_d/include/CGAL/NewKernel_d/LA_eigen/constructors.h @@ -91,11 +91,9 @@ namespace CGAL { }; struct Initializer_list { - // Fix T==NT? - template - result_type operator()(std::initializer_list l) const { - return Iterator()(l.size(),l.begin(),l.end()); - } + result_type operator()(std::initializer_list l) const { + return Iterator()(l.size(),l.begin(),l.end()); + } }; struct Values { diff --git a/Number_types/include/CGAL/Interval_nt.h b/Number_types/include/CGAL/Interval_nt.h index ec9f7288966..8a51e7cd860 100644 --- a/Number_types/include/CGAL/Interval_nt.h +++ b/Number_types/include/CGAL/Interval_nt.h @@ -1594,6 +1594,16 @@ namespace Eigen { }; }; + templatestruct ScalarBinaryOpTraits; + template + struct ScalarBinaryOpTraits, double, BinaryOp> { + typedef CGAL::Interval_nt ReturnType; + }; + template + struct ScalarBinaryOpTraits, BinaryOp> { + typedef CGAL::Interval_nt ReturnType; + }; + namespace internal { template struct significant_decimals_impl; template From bdc0ce34cd38243db19ae1e02e6306af5252813c Mon Sep 17 00:00:00 2001 From: Marc Glisse Date: Wed, 27 Jan 2021 16:33:59 +0100 Subject: [PATCH 2/2] test with eigen --- .../include/CGAL/NewKernel_d/Cartesian_LA_base.h | 10 ++++++---- NewKernel_d/test/NewKernel_d/Epick_d_eigen.cpp | 6 ++++++ 2 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 NewKernel_d/test/NewKernel_d/Epick_d_eigen.cpp diff --git a/NewKernel_d/include/CGAL/NewKernel_d/Cartesian_LA_base.h b/NewKernel_d/include/CGAL/NewKernel_d/Cartesian_LA_base.h index 180101e7867..b5de315b902 100644 --- a/NewKernel_d/include/CGAL/NewKernel_d/Cartesian_LA_base.h +++ b/NewKernel_d/include/CGAL/NewKernel_d/Cartesian_LA_base.h @@ -34,16 +34,18 @@ namespace CGAL { template < typename FT_, typename Dim_, -#if 1 +#ifndef CGAL_NEWKERNEL_D_USE_EIGEN_VECTOR +# if 1 typename Vec_=Mix_vector, Vector_vector, FT_, Dim_>, -#elif 0 +# elif 0 typename Vec_=Array_vector, -#elif 0 +# else typename Vec_=Vector_vector, +# endif #else - // Dangerous because of alignment. Ok on x86_64 without AVX. + // Dangerous before C++17 because of alignment. Ok on x86_64 without AVX. typename Vec_=LA_eigen, #endif typename LA_=LA_eigen > diff --git a/NewKernel_d/test/NewKernel_d/Epick_d_eigen.cpp b/NewKernel_d/test/NewKernel_d/Epick_d_eigen.cpp new file mode 100644 index 00000000000..ad71d0ba46b --- /dev/null +++ b/NewKernel_d/test/NewKernel_d/Epick_d_eigen.cpp @@ -0,0 +1,6 @@ +#if __cpp_aligned_new >= 201606L +# define CGAL_NEWKERNEL_D_USE_EIGEN_VECTOR 1 +# include "Epick_d.cpp" +#else +int main(){} +#endif