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); + } } } }
