Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package armadillo for openSUSE:Factory 
checked in at 2021-11-18 10:33:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/armadillo (Old)
 and      /work/SRC/openSUSE:Factory/.armadillo.new.1895 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "armadillo"

Thu Nov 18 10:33:38 2021 rev:155 rq:931973 version:10.7.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/armadillo/armadillo.changes      2021-10-21 
23:56:01.232040740 +0200
+++ /work/SRC/openSUSE:Factory/.armadillo.new.1895/armadillo.changes    
2021-11-18 10:33:52.343909568 +0100
@@ -1,0 +2,6 @@
+Fri Nov 12 22:51:10 UTC 2021 - Atri Bhattacharya <[email protected]>
+
+- Update to version 10.7.3:
+  * Undocumented bug fixes.
+
+-------------------------------------------------------------------

Old:
----
  armadillo-10.7.1.tar.xz

New:
----
  armadillo-10.7.3.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ armadillo.spec ++++++
--- /var/tmp/diff_new_pack.w6HJAd/_old  2021-11-18 10:33:52.911910097 +0100
+++ /var/tmp/diff_new_pack.w6HJAd/_new  2021-11-18 10:33:52.911910097 +0100
@@ -18,7 +18,7 @@
 
 %define soname libarmadillo10
 Name:           armadillo
-Version:        10.7.1
+Version:        10.7.3
 Release:        0
 Summary:        C++ matrix library with interfaces to LAPACK and ATLAS
 License:        Apache-2.0

++++++ armadillo-10.7.1.tar.xz -> armadillo-10.7.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/armadillo-10.7.1/README.md 
new/armadillo-10.7.3/README.md
--- old/armadillo-10.7.1/README.md      2016-06-16 18:24:01.000000000 +0200
+++ new/armadillo-10.7.3/README.md      2016-06-16 18:24:03.000000000 +0200
@@ -477,6 +477,6 @@
 * RcppArmadillo: integration of Armadillo with the R system and environment  
   http://dirk.eddelbuettel.com/code/rcpp.armadillo.html
 
-* PyArmadillo: linear algebra library for Python  
+* PyArmadillo: streamlined linear algebra library for Python  
   https://pyarma.sourceforge.io
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/armadillo-10.7.1/include/armadillo_bits/arma_version.hpp 
new/armadillo-10.7.3/include/armadillo_bits/arma_version.hpp
--- old/armadillo-10.7.1/include/armadillo_bits/arma_version.hpp        
2016-06-16 18:24:01.000000000 +0200
+++ new/armadillo-10.7.3/include/armadillo_bits/arma_version.hpp        
2016-06-16 18:24:03.000000000 +0200
@@ -23,7 +23,7 @@
 
 #define ARMA_VERSION_MAJOR 10
 #define ARMA_VERSION_MINOR 7
-#define ARMA_VERSION_PATCH 1
+#define ARMA_VERSION_PATCH 3
 #define ARMA_VERSION_NAME  "Entropy Maximiser"
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/armadillo-10.7.1/include/armadillo_bits/compiler_check.hpp 
new/armadillo-10.7.3/include/armadillo_bits/compiler_check.hpp
--- old/armadillo-10.7.1/include/armadillo_bits/compiler_check.hpp      
2016-06-16 18:24:01.000000000 +0200
+++ new/armadillo-10.7.3/include/armadillo_bits/compiler_check.hpp      
2016-06-16 18:24:03.000000000 +0200
@@ -64,7 +64,7 @@
 
 // warn about ignored option used in old versions of Armadillo
 #if defined(ARMA_DONT_USE_CXX11)
-  #pragma message ("WARNING: ARMA_DONT_USE_CXX11 ignored")
+  #pragma message ("WARNING: option ARMA_DONT_USE_CXX11 ignored")
 #endif
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/armadillo-10.7.1/include/armadillo_bits/op_flip_meat.hpp 
new/armadillo-10.7.3/include/armadillo_bits/op_flip_meat.hpp
--- old/armadillo-10.7.1/include/armadillo_bits/op_flip_meat.hpp        
2016-06-16 18:24:01.000000000 +0200
+++ new/armadillo-10.7.3/include/armadillo_bits/op_flip_meat.hpp        
2016-06-16 18:24:03.000000000 +0200
@@ -28,17 +28,32 @@
   {
   arma_extra_debug_sigprint();
   
-  const Proxy<T1> P(in.m);
+  typedef typename T1::elem_type eT;
   
-  if(is_Mat<typename Proxy<T1>::stored_type>::value || P.is_alias(out))
+  if(is_Mat<T1>::value)
     {
-    const unwrap<typename Proxy<T1>::stored_type> U(P.Q);
+    // allow detection of in-place operation
+    
+    const unwrap<T1> U(in.m);
     
     op_flipud::apply_direct(out, U.M);
     }
   else
     {
-    op_flipud::apply_proxy_noalias(out, P);
+    const Proxy<T1> P(in.m);
+    
+    if(P.is_alias(out))
+      {
+      Mat<eT> tmp;
+      
+      op_flipud::apply_proxy_noalias(tmp, P);
+      
+      out.steal_mem(tmp);
+      }
+    else
+      {
+      op_flipud::apply_proxy_noalias(out, P);
+      }
     }
   }
 
@@ -123,6 +138,17 @@
   
   typedef typename T1::elem_type eT;
   
+  typedef typename Proxy<T1>::stored_type P_stored_type;
+  
+  if(is_Mat<P_stored_type>::value)
+    {
+    const unwrap<P_stored_type> U(P.Q);
+    
+    op_flipud::apply_direct(out, U.M);
+    
+    return;
+    }
+  
   const uword P_n_rows = P.get_n_rows();
   const uword P_n_cols = P.get_n_cols();
   
@@ -168,17 +194,32 @@
   {
   arma_extra_debug_sigprint();
   
-  const Proxy<T1> P(in.m);
+  typedef typename T1::elem_type eT;
   
-  if(is_Mat<typename Proxy<T1>::stored_type>::value || P.is_alias(out))
+  if(is_Mat<T1>::value)
     {
-    const unwrap<typename Proxy<T1>::stored_type> U(P.Q);
+    // allow detection of in-place operation
+    
+    const unwrap<T1> U(in.m);
     
     op_fliplr::apply_direct(out, U.M);
     }
   else
     {
-    op_fliplr::apply_proxy_noalias(out, P);
+    const Proxy<T1> P(in.m);
+    
+    if(P.is_alias(out))
+      {
+      Mat<eT> tmp;
+      
+      op_fliplr::apply_proxy_noalias(tmp, P);
+      
+      out.steal_mem(tmp);
+      }
+    else
+      {
+      op_fliplr::apply_proxy_noalias(out, P);
+      }
     }
   }
 
@@ -252,6 +293,17 @@
   
   typedef typename T1::elem_type eT;
   
+  typedef typename Proxy<T1>::stored_type P_stored_type;
+  
+  if(is_Mat<P_stored_type>::value)
+    {
+    const unwrap<P_stored_type> U(P.Q);
+    
+    op_fliplr::apply_direct(out, U.M);
+    
+    return;
+    }
+  
   const uword P_n_rows = P.get_n_rows();
   const uword P_n_cols = P.get_n_cols();
   
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/armadillo-10.7.1/include/armadillo_bits/op_pinv_meat.hpp 
new/armadillo-10.7.3/include/armadillo_bits/op_pinv_meat.hpp
--- old/armadillo-10.7.1/include/armadillo_bits/op_pinv_meat.hpp        
2016-06-16 18:24:01.000000000 +0200
+++ new/armadillo-10.7.3/include/armadillo_bits/op_pinv_meat.hpp        
2016-06-16 18:24:03.000000000 +0200
@@ -68,6 +68,45 @@
   
   if(A.is_empty())  { out.set_size(n_cols,n_rows); return true; }
   
+  if(A.is_diagmat())
+    {
+    arma_extra_debug_print("op_pinv: detected diagonal matrix");
+    
+    out.zeros(n_cols, n_rows);
+    
+    const uword N = (std::min)(n_rows, n_cols);
+    
+    podarray<T> diag_abs_vals(N);
+    
+    T max_abs_Aii = T(0);
+    
+    for(uword i=0; i<N; ++i)
+      {
+      const eT     Aii = A.at(i,i);
+      const  T abs_Aii = std::abs(Aii);
+      
+      if(arma_isnan(Aii))  { return false; }
+      
+      diag_abs_vals[i] = abs_Aii;
+      
+      max_abs_Aii = (abs_Aii > max_abs_Aii) ? abs_Aii : max_abs_Aii;
+      }
+    
+    if(tol == T(0))  { tol = (std::max)(n_rows, n_cols) * max_abs_Aii * 
std::numeric_limits<T>::epsilon(); }
+    
+    for(uword i=0; i<N; ++i)
+      {
+      if(diag_abs_vals[i] >= tol)
+        {
+        const eT Aii = A.at(i,i);
+        
+        if(Aii != eT(0))  { out.at(i,i) = eT(eT(1) / Aii); }
+        }
+      }
+    
+    return true;
+    }
+    
   #if defined(ARMA_OPTIMISE_SYMPD)
     const bool try_sympd = (auxlib::crippled_lapack(A) == false) && (tol == 
T(0)) && (method_id == uword(0)) && sympd_helper::guess_sympd_anysize(A);
   #else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/armadillo-10.7.1/include/armadillo_bits/op_reverse_meat.hpp 
new/armadillo-10.7.3/include/armadillo_bits/op_reverse_meat.hpp
--- old/armadillo-10.7.1/include/armadillo_bits/op_reverse_meat.hpp     
2016-06-16 18:24:01.000000000 +0200
+++ new/armadillo-10.7.3/include/armadillo_bits/op_reverse_meat.hpp     
2016-06-16 18:24:03.000000000 +0200
@@ -28,36 +28,38 @@
   {
   arma_extra_debug_sigprint();
   
+  typedef typename T1::elem_type eT;
+  
   const uword dim = in.aux_uword_a;
   
   arma_debug_check( (dim > 1), "reverse(): parameter 'dim' must be 0 or 1" );
   
-  const Proxy<T1> P(in.m);
-  
-  if(is_Mat<typename Proxy<T1>::stored_type>::value || P.is_alias(out))
+  if(is_Mat<T1>::value)
     {
-    const unwrap<typename Proxy<T1>::stored_type> U(P.Q);
+    // allow detection of in-place operation
     
-    if(dim == 0)
-      {
-      op_flipud::apply_direct(out, U.M);
-      }
-    else
-    if(dim == 1)
-      {
-      op_fliplr::apply_direct(out, U.M);
-      }
+    const unwrap<T1> U(in.m);
+    
+    if(dim == 0)  { op_flipud::apply_direct(out, U.M); }
+    if(dim == 1)  { op_fliplr::apply_direct(out, U.M); }
     }
   else
     {
-    if(dim == 0)
+    const Proxy<T1> P(in.m);
+    
+    if(P.is_alias(out))
       {
-      op_flipud::apply_proxy_noalias(out, P);
+      Mat<eT> tmp;
+      
+      if(dim == 0)  { op_flipud::apply_proxy_noalias(tmp, P); }
+      if(dim == 1)  { op_fliplr::apply_proxy_noalias(tmp, P); }
+      
+      out.steal_mem(tmp);
       }
     else
-    if(dim == 1)
       {
-      op_fliplr::apply_proxy_noalias(out, P);
+      if(dim == 0)  { op_flipud::apply_proxy_noalias(out, P); }
+      if(dim == 1)  { op_fliplr::apply_proxy_noalias(out, P); }
       }
     }
   }
@@ -71,11 +73,13 @@
   {
   arma_extra_debug_sigprint();
   
-  const Proxy<T1> P(in.m);
+  typedef typename T1::elem_type eT;
   
-  if(is_Mat<typename Proxy<T1>::stored_type>::value || P.is_alias(out))
+  if(is_Mat<T1>::value)
     {
-    const unwrap<typename Proxy<T1>::stored_type> U(P.Q);
+    // allow detection of in-place operation
+    
+    const unwrap<T1> U(in.m);
     
     if((T1::is_xvec) ? bool(U.M.is_rowvec()) : bool(T1::is_row))
       {
@@ -88,13 +92,33 @@
     }
   else
     {
-    if((T1::is_xvec) ? bool(P.get_n_rows() == 1) : bool(T1::is_row))
+    const Proxy<T1> P(in.m);
+    
+    if(P.is_alias(out))
       {
-      op_fliplr::apply_proxy_noalias(out, P);
+      Mat<eT> tmp;
+      
+      if((T1::is_xvec) ? bool(P.get_n_rows() == 1) : bool(T1::is_row))
+        {
+        op_fliplr::apply_proxy_noalias(tmp, P);
+        }
+      else
+        {
+        op_flipud::apply_proxy_noalias(tmp, P);
+        }
+      
+      out.steal_mem(tmp);
       }
     else
       {
-      op_flipud::apply_proxy_noalias(out, P);
+      if((T1::is_xvec) ? bool(P.get_n_rows() == 1) : bool(T1::is_row))
+        {
+        op_fliplr::apply_proxy_noalias(out, P);
+        }
+      else
+        {
+        op_flipud::apply_proxy_noalias(out, P);
+        }
       }
     }
   }

Reply via email to