[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