Hello community, here is the log from the commit of package armadillo for openSUSE:Factory checked in at 2013-06-14 15:42:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/armadillo (Old) and /work/SRC/openSUSE:Factory/.armadillo.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "armadillo" Changes: -------- --- /work/SRC/openSUSE:Factory/armadillo/armadillo.changes 2013-06-05 11:37:40.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.armadillo.new/armadillo.changes 2013-06-14 15:42:53.000000000 +0200 @@ -1,0 +2,8 @@ +Thu Jun 13 05:50:37 UTC 2013 - badshah...@gmail.com + +- Update to version 3.900.4: + + Minor corrections for compilation issues under GCC 4.8+ +- Changes from version 3.900.1, 3.900.2 and 3.900.3 not + documented by upstream. + +------------------------------------------------------------------- Old: ---- armadillo-3.900.0.tar.gz New: ---- armadillo-3.900.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ armadillo.spec ++++++ --- /var/tmp/diff_new_pack.qgHSzK/_old 2013-06-14 15:42:55.000000000 +0200 +++ /var/tmp/diff_new_pack.qgHSzK/_new 2013-06-14 15:42:55.000000000 +0200 @@ -17,13 +17,13 @@ Name: armadillo -Version: 3.900.0 +Version: 3.900.4 Release: 0 Summary: Fast C++ matrix library with interfaces to LAPACK and ATLAS License: MPL-2.0 Group: Development/Libraries/C and C++ Url: http://arma.sourceforge.net/ -Source: http://download.sourceforge.net/arma/%{name}-%{version}.tar.gz +Source: http://downloads.sourceforge.net/arma/%{name}-%{version}.tar.gz Source2: baselibs.conf BuildRequires: blas-devel BuildRequires: boost-devel ++++++ armadillo-3.900.0.tar.gz -> armadillo-3.900.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/CMakeLists.txt new/armadillo-3.900.4/CMakeLists.txt --- old/armadillo-3.900.0/CMakeLists.txt 2013-06-04 07:05:22.000000000 +0200 +++ new/armadillo-3.900.4/CMakeLists.txt 2013-06-12 13:54:56.000000000 +0200 @@ -13,7 +13,7 @@ set(ARMA_MAJOR 3) set(ARMA_MINOR 900) -set(ARMA_PATCH 0) +set(ARMA_PATCH 4) message(STATUS "Configuring Armadillo ${ARMA_MAJOR}.${ARMA_MINOR}.${ARMA_PATCH}") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/README.txt new/armadillo-3.900.4/README.txt --- old/armadillo-3.900.0/README.txt 2013-05-29 03:01:07.000000000 +0200 +++ new/armadillo-3.900.4/README.txt 2013-06-12 05:42:01.000000000 +0200 @@ -463,6 +463,7 @@ - Jeremy Mason - Nikolay Mayorov - Carlos Mendes +- Sergey Nenakhov - Artem Novikov - Martin Orlob - Ken Panici diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo new/armadillo-3.900.4/include/armadillo --- old/armadillo-3.900.0/include/armadillo 2013-05-27 17:28:29.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo 2013-06-12 13:43:46.000000000 +0200 @@ -534,6 +534,9 @@ #include "armadillo_bits/spglue_minus_meat.hpp" #include "armadillo_bits/spglue_times_meat.hpp" } - -#endif + + +#include "armadillo_bits/compiler_setup_post.hpp" + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/Cube_bones.hpp new/armadillo-3.900.4/include/armadillo_bits/Cube_bones.hpp --- old/armadillo-3.900.0/include/armadillo_bits/Cube_bones.hpp 2013-06-03 09:22:41.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/Cube_bones.hpp 2013-06-12 04:08:06.000000000 +0200 @@ -46,7 +46,7 @@ arma_aligned const eT* const mem; //!< pointer to the memory used by the cube (memory is read-only) protected: - arma_aligned Mat<eT>* mat_ptrs_local[ Cube_prealloc::mat_ptrs_size ]; + arma_align_mem Mat<eT>* mat_ptrs_local[ Cube_prealloc::mat_ptrs_size ]; arma_align_mem eT mem_local[ Cube_prealloc::mem_n_elem ]; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/GenCube_bones.hpp new/armadillo-3.900.4/include/armadillo_bits/GenCube_bones.hpp --- old/armadillo-3.900.0/include/armadillo_bits/GenCube_bones.hpp 2013-06-03 09:22:41.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/GenCube_bones.hpp 2013-06-05 03:38:35.000000000 +0200 @@ -20,6 +20,7 @@ typedef typename get_pod_type<elem_type>::result pod_type; static const bool prefer_at_accessor = false; + static const bool is_simple = (is_same_type<gen_type, gen_ones_full>::value) || (is_same_type<gen_type, gen_zeros>::value); arma_aligned const uword n_rows; arma_aligned const uword n_cols; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/Gen_bones.hpp new/armadillo-3.900.4/include/armadillo_bits/Gen_bones.hpp --- old/armadillo-3.900.0/include/armadillo_bits/Gen_bones.hpp 2013-06-03 06:49:14.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/Gen_bones.hpp 2013-06-05 03:38:35.000000000 +0200 @@ -20,6 +20,7 @@ typedef typename get_pod_type<elem_type>::result pod_type; static const bool prefer_at_accessor = (is_same_type<gen_type, gen_ones_diag>::value) ? true : false; + static const bool is_simple = (is_same_type<gen_type, gen_ones_full>::value) || (is_same_type<gen_type, gen_zeros>::value); static const bool is_row = T1::is_row; static const bool is_col = T1::is_col; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/Mat_bones.hpp new/armadillo-3.900.4/include/armadillo_bits/Mat_bones.hpp --- old/armadillo-3.900.0/include/armadillo_bits/Mat_bones.hpp 2013-06-02 18:01:09.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/Mat_bones.hpp 2013-06-12 04:08:06.000000000 +0200 @@ -22,10 +22,6 @@ typedef eT elem_type; //!< the type of elements stored in the matrix typedef typename get_pod_type<eT>::result pod_type; //!< if eT is non-complex, pod_type is same as eT. otherwise, pod_type is the underlying type used by std::complex - static const bool is_col = false; - static const bool is_row = false; - - const uword n_rows; //!< number of rows in the matrix (read-only) const uword n_cols; //!< number of columns in the matrix (read-only) const uword n_elem; //!< number of elements in the matrix (read-only) @@ -45,6 +41,9 @@ public: + static const bool is_col = false; + static const bool is_row = false; + inline ~Mat(); inline Mat(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/Proxy.hpp new/armadillo-3.900.4/include/armadillo_bits/Proxy.hpp --- old/armadillo-3.900.0/include/armadillo_bits/Proxy.hpp 2013-06-03 09:31:05.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/Proxy.hpp 2013-06-06 09:29:30.000000000 +0200 @@ -279,7 +279,7 @@ template<typename eT2> arma_inline bool is_alias(const Mat<eT2>&) const { return false; } - arma_inline bool is_aligned() const { return false; } + arma_inline bool is_aligned() const { return Gen<T1, gen_type>::is_simple; } }; @@ -1458,6 +1458,52 @@ }; + +template<typename eT> +class Proxy< xvec_htrans<eT> > + { + public: + + typedef eT elem_type; + typedef typename get_pod_type<elem_type>::result pod_type; + typedef Mat<eT> stored_type; + typedef const eT* ea_type; + typedef const Mat<eT>& aligned_ea_type; + + static const bool prefer_at_accessor = false; + static const bool has_subview = false; + static const bool is_fixed = false; + static const bool fake_mat = false; + + static const bool is_row = false; + static const bool is_col = false; + + arma_aligned const Mat<eT> Q; + + inline explicit Proxy(const xvec_htrans<eT>& A) + : Q(A) + { + arma_extra_debug_sigprint(); + } + + arma_inline uword get_n_rows() const { return Q.n_rows; } + arma_inline uword get_n_cols() const { return Q.n_cols; } + arma_inline uword get_n_elem() const { return Q.n_elem; } + + arma_inline elem_type operator[] (const uword i) const { return Q[i]; } + arma_inline elem_type at (const uword row, const uword col) const { return Q.at(row,col); } + arma_inline elem_type at_alt (const uword i) const { return Q.at_alt(i); } + + arma_inline ea_type get_ea() const { return Q.memptr(); } + arma_inline aligned_ea_type get_aligned_ea() const { return Q; } + + template<typename eT2> + arma_inline bool is_alias(const Mat<eT2>& X) const { return false; } + + arma_inline bool is_aligned() const { return memory::is_aligned(Q.memptr()); } + }; + + template<typename eT, typename T1> class Proxy< subview_elem1<eT,T1> > diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/ProxyCube.hpp new/armadillo-3.900.4/include/armadillo_bits/ProxyCube.hpp --- old/armadillo-3.900.0/include/armadillo_bits/ProxyCube.hpp 2013-06-03 09:22:41.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/ProxyCube.hpp 2013-06-05 03:38:35.000000000 +0200 @@ -99,7 +99,7 @@ arma_inline elem_type operator[] (const uword i) const { return Q[i]; } arma_inline elem_type at (const uword row, const uword col, const uword slice) const { return Q.at(row, col, slice); } - arma_inline elem_type at_alt (const uword i) const { return Q.at_alt(i); } + arma_inline elem_type at_alt (const uword i) const { return Q[i]; } arma_inline ea_type get_ea() const { return Q; } arma_inline aligned_ea_type get_aligned_ea() const { return Q; } @@ -107,7 +107,7 @@ template<typename eT2> arma_inline bool is_alias(const Cube<eT2>&) const { return false; } - arma_inline bool is_aligned() const { return false; } + arma_inline bool is_aligned() const { return GenCube<eT, gen_type>::is_simple; } }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/SpMat_meat.hpp new/armadillo-3.900.4/include/armadillo_bits/SpMat_meat.hpp --- old/armadillo-3.900.0/include/armadillo_bits/SpMat_meat.hpp 2013-05-07 17:10:58.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/SpMat_meat.hpp 2013-06-12 10:57:39.000000000 +0200 @@ -3199,7 +3199,7 @@ eop_aux_randu<eT>::fill( access::rwp(values), n_nonzero ); - uvec indices = linspace<uvec>( 0, in_rows*in_cols-1, n_nonzero ); + uvec indices = linspace<uvec>( 0u, in_rows*in_cols-1, n_nonzero ); // perturb the indices for(uword i=1; i < n_nonzero-1; ++i) @@ -3276,7 +3276,7 @@ eop_aux_randn<eT>::fill( access::rwp(values), n_nonzero ); - uvec indices = linspace<uvec>( 0, in_rows*in_cols-1, n_nonzero ); + uvec indices = linspace<uvec>( 0u, in_rows*in_cols-1, n_nonzero ); // perturb the indices for(uword i=1; i < n_nonzero-1; ++i) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/SpValProxy_bones.hpp new/armadillo-3.900.4/include/armadillo_bits/SpValProxy_bones.hpp --- old/armadillo-3.900.0/include/armadillo_bits/SpValProxy_bones.hpp 2013-02-21 08:16:35.000000000 +0100 +++ new/armadillo-3.900.4/include/armadillo_bits/SpValProxy_bones.hpp 2013-06-12 14:08:00.000000000 +0200 @@ -45,8 +45,8 @@ arma_inline SpValProxy& operator++(); arma_inline SpValProxy& operator--(); - arma_inline eT operator++(const int unused); - arma_inline eT operator--(const int unused); + arma_inline eT operator++(const int); + arma_inline eT operator--(const int); //! This will work for any other operations that do not modify a value. arma_inline operator eT() const; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/SpValProxy_meat.hpp new/armadillo-3.900.4/include/armadillo_bits/SpValProxy_meat.hpp --- old/armadillo-3.900.0/include/armadillo_bits/SpValProxy_meat.hpp 2013-02-21 08:16:35.000000000 +0100 +++ new/armadillo-3.900.4/include/armadillo_bits/SpValProxy_meat.hpp 2013-06-12 14:08:00.000000000 +0200 @@ -258,7 +258,7 @@ template<typename T1> arma_inline typename T1::elem_type -SpValProxy<T1>::operator++(const int unused) +SpValProxy<T1>::operator++(const int) { if (val_ptr) { @@ -286,7 +286,7 @@ template<typename T1> arma_inline typename T1::elem_type -SpValProxy<T1>::operator--(const int unused) +SpValProxy<T1>::operator--(const int) { if (val_ptr) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/arma_version.hpp new/armadillo-3.900.4/include/armadillo_bits/arma_version.hpp --- old/armadillo-3.900.0/include/armadillo_bits/arma_version.hpp 2013-06-04 07:05:22.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/arma_version.hpp 2013-06-12 13:54:56.000000000 +0200 @@ -13,7 +13,7 @@ #define ARMA_VERSION_MAJOR 3 #define ARMA_VERSION_MINOR 900 -#define ARMA_VERSION_PATCH 0 +#define ARMA_VERSION_PATCH 4 #define ARMA_VERSION_NAME "Bavarian Sunflower" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/compiler_setup.hpp new/armadillo-3.900.4/include/armadillo_bits/compiler_setup.hpp --- old/armadillo-3.900.0/include/armadillo_bits/compiler_setup.hpp 2013-06-03 17:27:07.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/compiler_setup.hpp 2013-06-12 14:45:01.000000000 +0200 @@ -83,11 +83,16 @@ #undef ARMA_HAVE_STD_ISFINITE #endif - #undef arma_aligned - #undef arma_align_mem + // #undef arma_aligned + // #define arma_aligned __attribute__((aligned(16))) - #define arma_aligned __attribute__((aligned(16))); - #define arma_align_mem __attribute__((aligned(16))); + #if defined(_MSC_VER) + #undef arma_align_mem + #define arma_align_mem __declspec(align(16)) + #else + #undef arma_align_mem + #define arma_align_mem __attribute__((aligned(16))) + #endif #define ARMA_HAVE_ALIGNED_ATTRIBUTE #define ARMA_HAVE_ICC_ASSUME_ALIGNED @@ -186,16 +191,43 @@ #undef ARMA_HAVE_STD_ISNAN #undef ARMA_HAVE_STD_TR1 - #undef arma_inline - #define arma_inline inline __forceinline + // #undef arma_inline + // #define arma_inline inline __forceinline - #undef arma_aligned - #undef arma_align_mem + #pragma warning(push) - #define arma_aligned __declspec(align(16)) - #define arma_align_mem __declspec(align(16)) + #pragma warning(disable: 4127) // conditional expression is constant + #pragma warning(disable: 4510) // default constructor could not be generated + #pragma warning(disable: 4511) // copy constructor can't be generated + #pragma warning(disable: 4512) // assignment operator can't be generated + #pragma warning(disable: 4513) // destructor can't be generated + #pragma warning(disable: 4514) // unreferenced inline function has been removed + #pragma warning(disable: 4522) // multiple assignment operators specified + #pragma warning(disable: 4623) // default constructor can't be generated + #pragma warning(disable: 4624) // destructor can't be generated + #pragma warning(disable: 4625) // copy constructor can't be generated + #pragma warning(disable: 4626) // assignment operator can't be generated + #pragma warning(disable: 4710) // function not inlined + #pragma warning(disable: 4711) // call was inlined + #pragma warning(disable: 4714) // __forceinline can't be inlined - #define ARMA_HAVE_ALIGNED_ATTRIBUTE + #if (_MANAGED == 1) || (_M_CEE == 1) + + // don't do any alignment when compiling in "managed code" mode + + #else + // #undef arma_aligned + // #define arma_aligned __declspec(align(16)) + + #undef arma_align_mem + #define arma_align_mem __declspec(align(16)) + + #define ARMA_HAVE_ALIGNED_ATTRIBUTE + + // disable warnings: "structure was padded due to __declspec(align(16))" + #pragma warning(disable: 4324) + + #endif #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/compiler_setup_post.hpp new/armadillo-3.900.4/include/armadillo_bits/compiler_setup_post.hpp --- old/armadillo-3.900.0/include/armadillo_bits/compiler_setup_post.hpp 1970-01-01 01:00:00.000000000 +0100 +++ new/armadillo-3.900.4/include/armadillo_bits/compiler_setup_post.hpp 2013-06-12 14:45:01.000000000 +0200 @@ -0,0 +1,14 @@ +// Copyright (C) 2013 NICTA (www.nicta.com.au) +// Copyright (C) 2013 Conrad Sanderson +// +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + + + +#if defined(_MSC_VER) + + #pragma warning(pop) + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/eGlueCube_meat.hpp new/armadillo-3.900.4/include/armadillo_bits/eGlueCube_meat.hpp --- old/armadillo-3.900.0/include/armadillo_bits/eGlueCube_meat.hpp 2013-06-03 09:22:41.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/eGlueCube_meat.hpp 2013-06-12 10:57:39.000000000 +0200 @@ -95,10 +95,13 @@ { // the optimiser will keep only one return statement + typedef typename T1::elem_type eT; + if(is_same_type<eglue_type, eglue_plus >::value == true) { return P1[i] + P2[i]; } else if(is_same_type<eglue_type, eglue_minus>::value == true) { return P1[i] - P2[i]; } else if(is_same_type<eglue_type, eglue_div >::value == true) { return P1[i] / P2[i]; } else if(is_same_type<eglue_type, eglue_schur>::value == true) { return P1[i] * P2[i]; } + else return eT(0); } @@ -109,10 +112,13 @@ { // the optimiser will keep only one return statement + typedef typename T1::elem_type eT; + if(is_same_type<eglue_type, eglue_plus >::value == true) { return P1.at(row,col,slice) + P2.at(row,col,slice); } else if(is_same_type<eglue_type, eglue_minus>::value == true) { return P1.at(row,col,slice) - P2.at(row,col,slice); } else if(is_same_type<eglue_type, eglue_div >::value == true) { return P1.at(row,col,slice) / P2.at(row,col,slice); } else if(is_same_type<eglue_type, eglue_schur>::value == true) { return P1.at(row,col,slice) * P2.at(row,col,slice); } + else return eT(0); } @@ -124,10 +130,13 @@ { // the optimiser will keep only one return statement + typedef typename T1::elem_type eT; + if(is_same_type<eglue_type, eglue_plus >::value == true) { return P1.at_alt(i) + P2.at_alt(i); } else if(is_same_type<eglue_type, eglue_minus>::value == true) { return P1.at_alt(i) - P2.at_alt(i); } else if(is_same_type<eglue_type, eglue_div >::value == true) { return P1.at_alt(i) / P2.at_alt(i); } else if(is_same_type<eglue_type, eglue_schur>::value == true) { return P1.at_alt(i) * P2.at_alt(i); } + else return eT(0); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/eGlue_meat.hpp new/armadillo-3.900.4/include/armadillo_bits/eGlue_meat.hpp --- old/armadillo-3.900.0/include/armadillo_bits/eGlue_meat.hpp 2013-06-03 06:49:14.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/eGlue_meat.hpp 2013-06-12 10:57:39.000000000 +0200 @@ -76,13 +76,17 @@ { // the optimiser will keep only one return statement + typedef typename T1::elem_type eT; + if(is_same_type<eglue_type, eglue_plus >::value == true) { return P1[ii] + P2[ii]; } else if(is_same_type<eglue_type, eglue_minus>::value == true) { return P1[ii] - P2[ii]; } else if(is_same_type<eglue_type, eglue_div >::value == true) { return P1[ii] / P2[ii]; } else if(is_same_type<eglue_type, eglue_schur>::value == true) { return P1[ii] * P2[ii]; } + else return eT(0); } + template<typename T1, typename T2, typename eglue_type> arma_inline typename T1::elem_type @@ -90,10 +94,13 @@ { // the optimiser will keep only one return statement + typedef typename T1::elem_type eT; + if(is_same_type<eglue_type, eglue_plus >::value == true) { return P1.at(row,col) + P2.at(row,col); } else if(is_same_type<eglue_type, eglue_minus>::value == true) { return P1.at(row,col) - P2.at(row,col); } else if(is_same_type<eglue_type, eglue_div >::value == true) { return P1.at(row,col) / P2.at(row,col); } else if(is_same_type<eglue_type, eglue_schur>::value == true) { return P1.at(row,col) * P2.at(row,col); } + else return eT(0); } @@ -105,10 +112,13 @@ { // the optimiser will keep only one return statement + typedef typename T1::elem_type eT; + if(is_same_type<eglue_type, eglue_plus >::value == true) { return P1.at_alt(ii) + P2.at_alt(ii); } else if(is_same_type<eglue_type, eglue_minus>::value == true) { return P1.at_alt(ii) - P2.at_alt(ii); } else if(is_same_type<eglue_type, eglue_div >::value == true) { return P1.at_alt(ii) / P2.at_alt(ii); } else if(is_same_type<eglue_type, eglue_schur>::value == true) { return P1.at_alt(ii) * P2.at_alt(ii); } + else return eT(0); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/eglue_core_meat.hpp new/armadillo-3.900.4/include/armadillo_bits/eglue_core_meat.hpp --- old/armadillo-3.900.0/include/armadillo_bits/eglue_core_meat.hpp 2013-06-04 03:29:51.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/eglue_core_meat.hpp 2013-06-10 18:00:13.000000000 +0200 @@ -174,7 +174,8 @@ { const uword n_elem = (Proxy<T1>::is_fixed || Proxy<T2>::is_fixed) ? x.get_n_elem() : out.n_elem; - if(memory::is_aligned(out_mem)) + //if( memory::is_aligned(out_mem) ) + if( memory::is_aligned(out_mem) && ((Proxy<T1>::is_fixed && Proxy<T2>::is_fixed) ? (x.get_n_elem() >= 32) : true) ) { memory::mark_as_aligned(out_mem); @@ -192,7 +193,7 @@ { typename Proxy<T1>::ea_type P1 = x.P1.get_ea(); typename Proxy<T2>::ea_type P2 = x.P2.get_ea(); - + if(is_same_type<eglue_type, eglue_plus >::value == true) { arma_applier_1u(=, +); } else if(is_same_type<eglue_type, eglue_minus>::value == true) { arma_applier_1u(=, -); } else if(is_same_type<eglue_type, eglue_div >::value == true) { arma_applier_1u(=, /); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/eop_aux.hpp new/armadillo-3.900.4/include/armadillo_bits/eop_aux.hpp --- old/armadillo-3.900.0/include/armadillo_bits/eop_aux.hpp 2013-02-22 02:00:53.000000000 +0100 +++ new/armadillo-3.900.4/include/armadillo_bits/eop_aux.hpp 2013-06-12 05:38:57.000000000 +0200 @@ -1,5 +1,5 @@ -// Copyright (C) 2010-2012 NICTA (www.nicta.com.au) -// Copyright (C) 2010-2012 Conrad Sanderson +// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) +// Copyright (C) 2010-2013 Conrad Sanderson // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -17,7 +17,10 @@ arma_inline operator eT () { - return eT(std::rand()) * ( eT(1) / eT(RAND_MAX) ); + // make sure we are internally using at least floats + typedef typename promote_type<eT,float>::result eTp; + + return eT( eTp(std::rand()) * ( eTp(1) / eTp(RAND_MAX) ) ); } @@ -138,8 +141,8 @@ const eTp k = std::sqrt( (eTp(-2) * std::log(w)) / w); - out1 = tmp1*k; - out2 = tmp2*k; + out1 = eT(tmp1*k); + out2 = eT(tmp2*k); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/eop_core_meat.hpp new/armadillo-3.900.4/include/armadillo_bits/eop_core_meat.hpp --- old/armadillo-3.900.0/include/armadillo_bits/eop_core_meat.hpp 2013-06-03 09:22:41.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/eop_core_meat.hpp 2013-06-10 18:08:53.000000000 +0200 @@ -155,7 +155,8 @@ { const uword n_elem = (Proxy<T1>::is_fixed) ? x.get_n_elem() : out.n_elem; - if(memory::is_aligned(out_mem)) + //if(memory::is_aligned(out_mem)) + if( memory::is_aligned(out_mem) && ((Proxy<T1>::is_fixed) ? (x.get_n_elem() >= 32) : true) ) { memory::mark_as_aligned(out_mem); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/fn_as_scalar.hpp new/armadillo-3.900.4/include/armadillo_bits/fn_as_scalar.hpp --- old/armadillo-3.900.0/include/armadillo_bits/fn_as_scalar.hpp 2013-05-25 17:54:13.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/fn_as_scalar.hpp 2013-06-06 08:20:59.000000000 +0200 @@ -45,7 +45,7 @@ { arma_extra_debug_sigprint(); - typedef typename T1::elem_type eT; + // typedef typename T1::elem_type eT; const Proxy<T1> P(X); @@ -316,7 +316,7 @@ { arma_extra_debug_sigprint(); - typedef typename T1::elem_type eT; + // typedef typename T1::elem_type eT; const Proxy<T1> P(X.get_ref()); @@ -380,7 +380,7 @@ { arma_extra_debug_sigprint(); - typedef typename T1::elem_type eT; + // typedef typename T1::elem_type eT; const ProxyCube<T1> P(X.get_ref()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/glue_cross_meat.hpp new/armadillo-3.900.4/include/armadillo_bits/glue_cross_meat.hpp --- old/armadillo-3.900.0/include/armadillo_bits/glue_cross_meat.hpp 2013-02-21 08:16:35.000000000 +0100 +++ new/armadillo-3.900.4/include/armadillo_bits/glue_cross_meat.hpp 2013-06-10 17:58:48.000000000 +0200 @@ -1,5 +1,5 @@ -// Copyright (C) 2010-2011 NICTA (www.nicta.com.au) -// Copyright (C) 2010-2011 Conrad Sanderson +// Copyright (C) 2010-2013 NICTA (www.nicta.com.au) +// Copyright (C) 2010-2013 Conrad Sanderson // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -19,32 +19,54 @@ { arma_extra_debug_sigprint(); - typedef typename T1::elem_type eT; - typedef typename Proxy<T1>::ea_type ea_type1; - typedef typename Proxy<T2>::ea_type ea_type2; + typedef typename T1::elem_type eT; - const Proxy<T1> A(X.A); - const Proxy<T2> B(X.B); + const Proxy<T1> PA(X.A); + const Proxy<T2> PB(X.B); - arma_debug_check( ((A.get_n_elem() != 3) || (B.get_n_elem() != 3)), "cross(): input vectors must have 3 elements" ); + arma_debug_check( ((PA.get_n_elem() != 3) || (PB.get_n_elem() != 3)), "cross(): input vectors must have 3 elements" ); - out.set_size(A.get_n_rows(), A.get_n_cols()); - - eT* out_mem = out.memptr(); - ea_type1 PA = A.get_ea(); - ea_type2 PB = B.get_ea(); - - const eT ax = PA[0]; - const eT ay = PA[1]; - const eT az = PA[2]; - - const eT bx = PB[0]; - const eT by = PB[1]; - const eT bz = PB[2]; - - out_mem[0] = ay*bz - az*by; - out_mem[1] = az*bx - ax*bz; - out_mem[2] = ax*by - ay*bx; + const uword PA_n_rows = Proxy<T1>::is_row ? 1 : PA.get_n_rows(); + const uword PA_n_cols = Proxy<T1>::is_col ? 1 : PA.get_n_cols(); + + out.set_size(PA_n_rows, PA_n_cols); + + eT* out_mem = out.memptr(); + + if( (Proxy<T1>::prefer_at_accessor == false) && (Proxy<T2>::prefer_at_accessor == false) ) + { + typename Proxy<T1>::ea_type A = PA.get_ea(); + typename Proxy<T2>::ea_type B = PB.get_ea(); + + const eT ax = A[0]; + const eT ay = A[1]; + const eT az = A[2]; + + const eT bx = B[0]; + const eT by = B[1]; + const eT bz = B[2]; + + out_mem[0] = ay*bz - az*by; + out_mem[1] = az*bx - ax*bz; + out_mem[2] = ax*by - ay*bx; + } + else + { + const bool PA_is_col = Proxy<T1>::is_col ? true : (PA_n_cols == 1); + const bool PB_is_col = Proxy<T2>::is_col ? true : (PB.get_n_cols() == 1); + + const eT ax = PA.at(0,0); + const eT ay = PA_is_col ? PA.at(1,0) : PA.at(0,1); + const eT az = PA_is_col ? PA.at(2,0) : PA.at(0,2); + + const eT bx = PB.at(0,0); + const eT by = PB_is_col ? PB.at(1,0) : PB.at(0,1); + const eT bz = PB_is_col ? PB.at(2,0) : PB.at(0,2); + + out_mem[0] = ay*bz - az*by; + out_mem[1] = az*bx - ax*bz; + out_mem[2] = ax*by - ay*bx; + } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/glue_mixed_meat.hpp new/armadillo-3.900.4/include/armadillo_bits/glue_mixed_meat.hpp --- old/armadillo-3.900.0/include/armadillo_bits/glue_mixed_meat.hpp 2013-05-07 14:10:32.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/glue_mixed_meat.hpp 2013-06-12 06:20:57.000000000 +0200 @@ -1,5 +1,5 @@ -// Copyright (C) 2009-2012 NICTA (www.nicta.com.au) -// Copyright (C) 2009-2012 Conrad Sanderson +// Copyright (C) 2009-2013 NICTA (www.nicta.com.au) +// Copyright (C) 2009-2013 Conrad Sanderson // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -72,9 +72,21 @@ typename Proxy<T1>::ea_type AA = A.get_ea(); typename Proxy<T2>::ea_type BB = B.get_ea(); - for(uword i=0; i<n_elem; ++i) + if(memory::is_aligned(out_mem)) { - out_mem[i] = upgrade_val<eT1,eT2>::apply(AA[i]) + upgrade_val<eT1,eT2>::apply(BB[i]); + memory::mark_as_aligned(out_mem); + + for(uword i=0; i<n_elem; ++i) + { + out_mem[i] = upgrade_val<eT1,eT2>::apply(AA[i]) + upgrade_val<eT1,eT2>::apply(BB[i]); + } + } + else + { + for(uword i=0; i<n_elem; ++i) + { + out_mem[i] = upgrade_val<eT1,eT2>::apply(AA[i]) + upgrade_val<eT1,eT2>::apply(BB[i]); + } } } else @@ -127,9 +139,21 @@ typename Proxy<T1>::ea_type AA = A.get_ea(); typename Proxy<T2>::ea_type BB = B.get_ea(); - for(uword i=0; i<n_elem; ++i) + if(memory::is_aligned(out_mem)) + { + memory::mark_as_aligned(out_mem); + + for(uword i=0; i<n_elem; ++i) + { + out_mem[i] = upgrade_val<eT1,eT2>::apply(AA[i]) - upgrade_val<eT1,eT2>::apply(BB[i]); + } + } + else { - out_mem[i] = upgrade_val<eT1,eT2>::apply(AA[i]) - upgrade_val<eT1,eT2>::apply(BB[i]); + for(uword i=0; i<n_elem; ++i) + { + out_mem[i] = upgrade_val<eT1,eT2>::apply(AA[i]) - upgrade_val<eT1,eT2>::apply(BB[i]); + } } } else @@ -182,9 +206,21 @@ typename Proxy<T1>::ea_type AA = A.get_ea(); typename Proxy<T2>::ea_type BB = B.get_ea(); - for(uword i=0; i<n_elem; ++i) + if(memory::is_aligned(out_mem)) { - out_mem[i] = upgrade_val<eT1,eT2>::apply(AA[i]) / upgrade_val<eT1,eT2>::apply(BB[i]); + memory::mark_as_aligned(out_mem); + + for(uword i=0; i<n_elem; ++i) + { + out_mem[i] = upgrade_val<eT1,eT2>::apply(AA[i]) / upgrade_val<eT1,eT2>::apply(BB[i]); + } + } + else + { + for(uword i=0; i<n_elem; ++i) + { + out_mem[i] = upgrade_val<eT1,eT2>::apply(AA[i]) / upgrade_val<eT1,eT2>::apply(BB[i]); + } } } else @@ -237,9 +273,21 @@ typename Proxy<T1>::ea_type AA = A.get_ea(); typename Proxy<T2>::ea_type BB = B.get_ea(); - for(uword i=0; i<n_elem; ++i) + if(memory::is_aligned(out_mem)) + { + memory::mark_as_aligned(out_mem); + + for(uword i=0; i<n_elem; ++i) + { + out_mem[i] = upgrade_val<eT1,eT2>::apply(AA[i]) * upgrade_val<eT1,eT2>::apply(BB[i]); + } + } + else { - out_mem[i] = upgrade_val<eT1,eT2>::apply(AA[i]) * upgrade_val<eT1,eT2>::apply(BB[i]); + for(uword i=0; i<n_elem; ++i) + { + out_mem[i] = upgrade_val<eT1,eT2>::apply(AA[i]) * upgrade_val<eT1,eT2>::apply(BB[i]); + } } } else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/memory.hpp new/armadillo-3.900.4/include/armadillo_bits/memory.hpp --- old/armadillo-3.900.0/include/armadillo_bits/memory.hpp 2013-06-04 03:24:22.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/memory.hpp 2013-06-12 05:38:57.000000000 +0200 @@ -142,6 +142,8 @@ } #else { + arma_ignore(mem); + return false; } #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/op_median_meat.hpp new/armadillo-3.900.4/include/armadillo_bits/op_median_meat.hpp --- old/armadillo-3.900.0/include/armadillo_bits/op_median_meat.hpp 2013-05-28 16:25:56.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/op_median_meat.hpp 2013-06-12 14:30:18.000000000 +0200 @@ -362,7 +362,7 @@ { arma_extra_debug_sigprint(); - const uword n_elem = X.size(); + const uword n_elem = uword(X.size()); const uword half = n_elem/2; std::nth_element(X.begin(), X.begin() + half, X.end()); @@ -391,7 +391,7 @@ { arma_extra_debug_sigprint(); - const uword n_elem = X.size(); + const uword n_elem = uword(X.size()); const uword half = n_elem/2; std::nth_element(X.begin(), X.begin() + half, X.end()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/xvec_htrans_bones.hpp new/armadillo-3.900.4/include/armadillo_bits/xvec_htrans_bones.hpp --- old/armadillo-3.900.0/include/armadillo_bits/xvec_htrans_bones.hpp 2013-06-03 06:49:14.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/xvec_htrans_bones.hpp 2013-06-06 09:29:30.000000000 +0200 @@ -33,6 +33,8 @@ inline eT operator[](const uword ii) const; inline eT at_alt (const uword ii) const; + + inline eT at (const uword in_row, const uword in_col) const; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-3.900.0/include/armadillo_bits/xvec_htrans_meat.hpp new/armadillo-3.900.4/include/armadillo_bits/xvec_htrans_meat.hpp --- old/armadillo-3.900.0/include/armadillo_bits/xvec_htrans_meat.hpp 2013-06-03 06:49:14.000000000 +0200 +++ new/armadillo-3.900.4/include/armadillo_bits/xvec_htrans_meat.hpp 2013-06-06 09:29:30.000000000 +0200 @@ -64,4 +64,16 @@ +template<typename eT> +inline +eT +xvec_htrans<eT>::at(const uword in_row, const uword in_col) const + { + //return (n_rows == 1) ? access::alt_conj( mem[in_col] ) : access::alt_conj( mem[in_row] ); + + return access::alt_conj( mem[in_row + in_col] ); // either in_row or in_col must be zero, as we're storing a vector + } + + + //! @} -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org