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

Reply via email to