[SCM] Packaging for Eigen3. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. branch, master, updated. upstream/3.0.0-12-gd6f36bc

Anton Gladky gladky.anton at gmail.com
Wed May 11 19:57:10 UTC 2011


The following commit has been merged in the master branch:
commit 78ebf3daf59481003a982e7d23796a2e550e1c28
Author: Anton Gladky <gladky.anton at gmail.com>
Date:   Wed May 11 21:53:52 2011 +0200

    Better fix for bug (ptrdiff_t)

diff --git a/debian/patches/fix_compile_with_gcc-4-6.patch b/debian/patches/fix_compile_with_gcc-4-6.patch
index 177d4d8..28bc63d 100644
--- a/debian/patches/fix_compile_with_gcc-4-6.patch
+++ b/debian/patches/fix_compile_with_gcc-4-6.patch
@@ -1,77 +1,16 @@
 Description: Fix compilation error with gcc-4.6
-Author: Anton Gladky <gladky.anton at gmail.com>
-Applied-Upstream: https://bitbucket.org/eigen/eigen/changeset/9897c4b5442b
-Last-Update: 2011-05-04
+Author: Eigen team 
+Applied-Upstream: https://bitbucket.org/eigen/eigen/changeset/47098e5d24bc
+Last-Update: 2011-05-11
 
---- a/test/mapstride.cpp
-+++ b/test/mapstride.cpp
-@@ -38,7 +38,7 @@
-   Scalar* a_array = internal::aligned_new<Scalar>(arraysize+1);
-   Scalar* array = a_array;
-   if(Alignment!=Aligned)
--    array = (Scalar*)(ptrdiff_t(a_array) + (internal::packet_traits<Scalar>::AlignedOnScalar?sizeof(Scalar):sizeof(typename NumTraits<Scalar>::Real)));
-+    array = (Scalar*)(std::ptrdiff_t(a_array) + (internal::packet_traits<Scalar>::AlignedOnScalar?sizeof(Scalar):sizeof(typename NumTraits<Scalar>::Real)));
+--- a/Eigen/Core
++++ b/Eigen/Core
+@@ -241,6 +241,8 @@ inline static const char *SimdInstructio
+ // we use size_t frequently and we'll never remember to prepend it with std:: everytime just to
+ // ensure QNX/QCC support
+ using std::size_t;
++// gcc 4.6.0 wants std:: for ptrdiff_t 
++using std::ptrdiff_t;
  
-   {
-     Map<VectorType, Alignment, InnerStride<3> > map(array, size);
-@@ -77,7 +77,7 @@
-   Scalar* a_array = internal::aligned_new<Scalar>(arraysize+1);
-   Scalar* array = a_array;
-   if(Alignment!=Aligned)
--    array = (Scalar*)(ptrdiff_t(a_array) + (internal::packet_traits<Scalar>::AlignedOnScalar?sizeof(Scalar):sizeof(typename NumTraits<Scalar>::Real)));
-+    array = (Scalar*)(std::ptrdiff_t(a_array) + (internal::packet_traits<Scalar>::AlignedOnScalar?sizeof(Scalar):sizeof(typename NumTraits<Scalar>::Real)));
- 
-   // test no inner stride and some dynamic outer stride
-   {
---- a/Eigen/src/Core/arch/AltiVec/Complex.h
-+++ b/Eigen/src/Core/arch/AltiVec/Complex.h
-@@ -70,7 +70,7 @@
- {
-   Packet2cf res;
-   /* On AltiVec we cannot load 64-bit registers, so wa have to take care of alignment */
--  if((ptrdiff_t(&from) % 16) == 0)
-+  if((std::ptrdiff_t(&from) % 16) == 0)
-     res.v = pload<Packet4f>((const float *)&from);
-   else
-     res.v = ploadu<Packet4f>((const float *)&from);
---- a/Eigen/src/Core/arch/AltiVec/PacketMath.h
-+++ b/Eigen/src/Core/arch/AltiVec/PacketMath.h
-@@ -296,14 +296,14 @@
- template<> EIGEN_STRONG_INLINE Packet4f ploaddup<Packet4f>(const float*   from)
- {
-   Packet4f p;
--  if((ptrdiff_t(&from) % 16) == 0)  p = pload<Packet4f>(from);
-+  if((std::ptrdiff_t(&from) % 16) == 0)  p = pload<Packet4f>(from);
-   else                              p = ploadu<Packet4f>(from);
-   return vec_perm(p, p, p16uc_DUPLICATE);
- }
- template<> EIGEN_STRONG_INLINE Packet4i ploaddup<Packet4i>(const int*     from)
- {
-   Packet4i p;
--  if((ptrdiff_t(&from) % 16) == 0)  p = pload<Packet4i>(from);
-+  if((std::ptrdiff_t(&from) % 16) == 0)  p = pload<Packet4i>(from);
-   else                              p = ploadu<Packet4i>(from);
-   return vec_perm(p, p, p16uc_DUPLICATE);
- }
---- a/Eigen/src/StlSupport/details.h
-+++ b/Eigen/src/StlSupport/details.h
-@@ -38,7 +38,7 @@
-   {
-   public:
-     typedef size_t    size_type;
--    typedef ptrdiff_t difference_type;
-+    typedef std::ptrdiff_t difference_type;
-     typedef T*        pointer;
-     typedef const T*  const_pointer;
-     typedef T&        reference;
---- a/unsupported/Eigen/FFT
-+++ b/unsupported/Eigen/FFT
-@@ -393,7 +393,7 @@
-       for (int k=0;k<nx;++k)
-         *x++ *= s;
- #else
--      if ( ((ptrdiff_t)x) & 15 )
-+      if ( ((std::ptrdiff_t)x) & 15 )
-         Matrix<T_Data, Dynamic, 1>::Map(x,nx) *= s;
-       else
-         Matrix<T_Data, Dynamic, 1>::MapAligned(x,nx) *= s;
+ /** \defgroup Core_Module Core module
+   * This is the main module of Eigen providing dense matrix and vector support

-- 
Packaging for Eigen3. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.



More information about the debian-science-commits mailing list