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-06-04 22:44:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/armadillo (Old) and /work/SRC/openSUSE:Factory/.armadillo.new.1898 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "armadillo" Fri Jun 4 22:44:00 2021 rev:148 rq:897392 version:10.5.1 Changes: -------- --- /work/SRC/openSUSE:Factory/armadillo/armadillo.changes 2021-06-02 22:11:36.316124535 +0200 +++ /work/SRC/openSUSE:Factory/.armadillo.new.1898/armadillo.changes 2021-06-04 22:44:23.075185597 +0200 @@ -1,0 +2,6 @@ +Thu Jun 3 16:13:02 UTC 2021 - Ferdinand Thiessen <[email protected]> + +- Update to version 10.5.1 + * Minor bug fixes + +------------------------------------------------------------------- Old: ---- armadillo-10.5.0.tar.xz New: ---- armadillo-10.5.1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ armadillo.spec ++++++ --- /var/tmp/diff_new_pack.m6qz8K/_old 2021-06-04 22:44:23.831186695 +0200 +++ /var/tmp/diff_new_pack.m6qz8K/_new 2021-06-04 22:44:23.835186701 +0200 @@ -18,7 +18,7 @@ %define soname libarmadillo10 Name: armadillo -Version: 10.5.0 +Version: 10.5.1 Release: 0 Summary: C++ matrix library with interfaces to LAPACK and ATLAS License: Apache-2.0 ++++++ armadillo-10.5.0.tar.xz -> armadillo-10.5.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-10.5.0/docs.html new/armadillo-10.5.1/docs.html --- old/armadillo-10.5.0/docs.html 2016-06-16 18:23:00.000000000 +0200 +++ new/armadillo-10.5.1/docs.html 2016-06-16 18:23:01.000000000 +0200 @@ -19187,7 +19187,8 @@ <li>expanded the standalone <a href="#clamp">clamp()</a> function to handle complex values</li> <li>more efficient use of OpenMP</li> <li>vector, matrix and cube constructors now initialise elements to zero by default; -<br>use the <code>fill::none</code> specifier, eg. <code>mat X(4,5,fill::none)</code>, to disable element initialisation +<br>element initialisation can be disabled via the <code>fill::none</code> specifier, eg. <code>mat X(4,5,fill::none)</code> +</li> </ul> </li> <br> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-10.5.0/include/armadillo_bits/Cube_meat.hpp new/armadillo-10.5.1/include/armadillo_bits/Cube_meat.hpp --- old/armadillo-10.5.0/include/armadillo_bits/Cube_meat.hpp 2016-06-16 18:23:00.000000000 +0200 +++ new/armadillo-10.5.1/include/armadillo_bits/Cube_meat.hpp 2016-06-16 18:23:01.000000000 +0200 @@ -4177,7 +4177,7 @@ } else { - fill(Datum<eT>::nan); + zeros(); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-10.5.0/include/armadillo_bits/Mat_meat.hpp new/armadillo-10.5.1/include/armadillo_bits/Mat_meat.hpp --- old/armadillo-10.5.0/include/armadillo_bits/Mat_meat.hpp 2016-06-16 18:23:00.000000000 +0200 +++ new/armadillo-10.5.1/include/armadillo_bits/Mat_meat.hpp 2016-06-16 18:23:01.000000000 +0200 @@ -7218,7 +7218,6 @@ } else { - // fill(Datum<eT>::nan); zeros(); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-10.5.0/include/armadillo_bits/arma_rng.hpp new/armadillo-10.5.1/include/armadillo_bits/arma_rng.hpp --- old/armadillo-10.5.0/include/armadillo_bits/arma_rng.hpp 2016-06-16 18:23:00.000000000 +0200 +++ new/armadillo-10.5.1/include/armadillo_bits/arma_rng.hpp 2016-06-16 18:23:01.000000000 +0200 @@ -36,6 +36,16 @@ // #endif +// NOTE: workaround for another thread_local issue on macOS +// NOTE: where GCC (not Clang) may not have support for thread_local + +#if (defined(__APPLE__) && defined(__GNUG__) && !defined(__clang__)) + #if !defined(ARMA_DONT_DISABLE_EXTERN_RNG) + #undef ARMA_USE_EXTERN_RNG + #endif +#endif + + #if defined(ARMA_USE_EXTERN_RNG) extern thread_local std::mt19937_64 mt19937_64_instance; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-10.5.0/include/armadillo_bits/arma_version.hpp new/armadillo-10.5.1/include/armadillo_bits/arma_version.hpp --- old/armadillo-10.5.0/include/armadillo_bits/arma_version.hpp 2016-06-16 18:23:00.000000000 +0200 +++ new/armadillo-10.5.1/include/armadillo_bits/arma_version.hpp 2016-06-16 18:23:01.000000000 +0200 @@ -21,7 +21,7 @@ #define ARMA_VERSION_MAJOR 10 #define ARMA_VERSION_MINOR 5 -#define ARMA_VERSION_PATCH 0 +#define ARMA_VERSION_PATCH 1 #define ARMA_VERSION_NAME "Antipodean Fortress" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-10.5.0/include/armadillo_bits/diskio_meat.hpp new/armadillo-10.5.1/include/armadillo_bits/diskio_meat.hpp --- old/armadillo-10.5.0/include/armadillo_bits/diskio_meat.hpp 2016-06-16 18:23:00.000000000 +0200 +++ new/armadillo-10.5.1/include/armadillo_bits/diskio_meat.hpp 2016-06-16 18:23:01.000000000 +0200 @@ -1352,7 +1352,7 @@ f.clear(); f.seekg(pos1); - x.set_size(f_n_rows, f_n_cols); + try { x.set_size(f_n_rows, f_n_cols); } catch(...) { err_msg = "not enough memory"; return false; } for(uword row=0; ((row < x.n_rows) && load_okay); ++row) for(uword col=0; ((col < x.n_cols) && load_okay); ++col) @@ -1408,7 +1408,6 @@ diskio::load_raw_binary(Mat<eT>& x, std::istream& f, std::string& err_msg) { arma_extra_debug_sigprint(); - arma_ignore(err_msg); f.clear(); const std::streampos pos1 = f.tellg(); @@ -1425,7 +1424,7 @@ //f.seekg(0, ios::beg); f.seekg(pos1); - x.set_size(N / uword(sizeof(eT)), 1); + try { x.set_size(N / uword(sizeof(eT)), 1); } catch(...) { err_msg = "not enough memory"; return false; } f.clear(); f.read( reinterpret_cast<char *>(x.memptr()), std::streamsize(x.n_elem * uword(sizeof(eT))) ); @@ -1482,7 +1481,7 @@ if(f_header == diskio::gen_txt_header(x)) { - x.zeros(f_n_rows, f_n_cols); + try { x.zeros(f_n_rows, f_n_cols); } catch(...) { err_msg = "not enough memory"; return false; } std::string token; @@ -1611,13 +1610,13 @@ template<typename eT> inline bool -diskio::load_csv_ascii(Mat<eT>& x, std::istream& f, std::string&) +diskio::load_csv_ascii(Mat<eT>& x, std::istream& f, std::string& err_msg) { arma_extra_debug_sigprint(); // TODO: replace with more efficient implementation - bool load_okay = f.good(); + if(f.good() == false) { return false; } f.clear(); const std::fstream::pos_type pos1 = f.tellg(); @@ -1633,7 +1632,7 @@ std::string token; - while( f.good() && load_okay ) + while(f.good()) { std::getline(f, line_string); @@ -1658,7 +1657,7 @@ f.clear(); f.seekg(pos1); - x.zeros(f_n_rows, f_n_cols); + try { x.zeros(f_n_rows, f_n_cols); } catch(...) { err_msg = "not enough memory"; return false; } uword row = 0; @@ -1685,7 +1684,7 @@ ++row; } - return load_okay; + return true; } @@ -1694,13 +1693,13 @@ template<typename T> inline bool -diskio::load_csv_ascii(Mat< std::complex<T> >& x, std::istream& f, std::string&) +diskio::load_csv_ascii(Mat< std::complex<T> >& x, std::istream& f, std::string& err_msg) { arma_extra_debug_sigprint(); // TODO: replace with more efficient implementation - bool load_okay = f.good(); + if(f.good() == false) { return false; } f.clear(); const std::fstream::pos_type pos1 = f.tellg(); @@ -1716,7 +1715,7 @@ std::string token; - while( f.good() && load_okay ) + while(f.good()) { std::getline(f, line_string); @@ -1741,7 +1740,7 @@ f.clear(); f.seekg(pos1); - x.zeros(f_n_rows, f_n_cols); + try { x.zeros(f_n_rows, f_n_cols); } catch(...) { err_msg = "not enough memory"; return false; } uword row = 0; @@ -1915,7 +1914,7 @@ ++row; } - return load_okay; + return true; } @@ -1954,7 +1953,7 @@ { arma_extra_debug_sigprint(); - bool load_okay = f.good(); + if(f.good() == false) { return false; } f.clear(); const std::fstream::pos_type pos1 = f.tellg(); @@ -1971,7 +1970,7 @@ std::string token; - while( f.good() && load_okay ) + while(f.good()) { std::getline(f, line_string); @@ -1987,7 +1986,7 @@ line_stream >> line_row; - if(line_stream.good() == false) { load_okay = false; break; } + if(line_stream.good() == false) { err_msg = "incorrect format"; return false; } line_stream >> line_col; @@ -1997,19 +1996,15 @@ if(f_n_cols < line_col) { f_n_cols = line_col; } } - // take into account that indices start at 0 if(size_found) { ++f_n_rows; ++f_n_cols; } + f.clear(); + f.seekg(pos1); - if(load_okay) + try { - f.clear(); - f.seekg(pos1); - - Mat<eT> tmp; - - try { tmp.zeros(f_n_rows, f_n_cols); } catch(...) { err_msg = "not enough memory"; return false; } + Mat<eT> tmp(f_n_rows, f_n_cols, arma_zeros_indicator()); while(f.good()) { @@ -2040,8 +2035,13 @@ x.steal_mem(tmp); } + catch(...) + { + err_msg = "not enough memory"; + return false; + } - return load_okay; + return true; } @@ -2053,7 +2053,7 @@ { arma_extra_debug_sigprint(); - bool load_okay = f.good(); + if(f.good() == false) { return false; } f.clear(); const std::fstream::pos_type pos1 = f.tellg(); @@ -2071,7 +2071,7 @@ std::string token_real; std::string token_imag; - while( f.good() && load_okay ) + while(f.good()) { std::getline(f, line_string); @@ -2087,7 +2087,7 @@ line_stream >> line_row; - if(line_stream.good() == false) { load_okay = false; break; } + if(line_stream.good() == false) { err_msg = "incorrect format"; return false; } line_stream >> line_col; @@ -2100,14 +2100,12 @@ // take into account that indices start at 0 if(size_found) { ++f_n_rows; ++f_n_cols; } - if(load_okay) + f.clear(); + f.seekg(pos1); + + try { - f.clear(); - f.seekg(pos1); - - Mat< std::complex<T> > tmp; - - try { tmp.zeros(f_n_rows, f_n_cols); } catch(...) { err_msg = "not enough memory"; return false; } + Mat< std::complex<T> > tmp(f_n_rows, f_n_cols, arma_zeros_indicator()); while(f.good()) { @@ -2150,8 +2148,13 @@ x.steal_mem(tmp); } + catch(...) + { + err_msg = "not enough memory"; + return false; + } - return load_okay; + return true; } @@ -2205,7 +2208,8 @@ //f.seekg(1, ios::cur); // NOTE: this may not be portable, as on a Windows machine a newline could be two characters f.get(); - x.set_size(f_n_rows,f_n_cols); + try { x.set_size(f_n_rows,f_n_cols); } catch(...) { err_msg = "not enough memory"; return false; } + f.read( reinterpret_cast<char *>(x.memptr()), std::streamsize(x.n_elem*sizeof(eT)) ); load_okay = f.good(); @@ -2325,7 +2329,7 @@ if( (f_maxval > 0) && (f_maxval <= 65535) ) { - x.set_size(f_n_rows,f_n_cols); + try { x.set_size(f_n_rows,f_n_cols); } catch(...) { err_msg = "not enough memory"; return false; } if(f_maxval <= 255) { @@ -2481,7 +2485,7 @@ if(ndims == 1) { dims[1] = 1; } // Vector case; fake second dimension (one column). - x.set_size(dims[1], dims[0]); + try { x.set_size(dims[1], dims[0]); } catch(...) { err_msg = "not enough memory"; return false; } // Now we have to see what type is stored to figure out how to load it. hid_t datatype = arma_H5Dget_type(dataset); @@ -2990,11 +2994,10 @@ diskio::load_csv_ascii(SpMat<eT>& x, std::istream& f, std::string& err_msg) { arma_extra_debug_sigprint(); - arma_ignore(err_msg); // TODO: replace with more efficient implementation - bool load_okay = f.good(); + if(f.good() == false) { return false; } f.clear(); const std::fstream::pos_type pos1 = f.tellg(); @@ -3010,7 +3013,7 @@ std::string token; - while( f.good() && load_okay ) + while(f.good()) { std::getline(f, line_string); @@ -3035,38 +3038,48 @@ f.clear(); f.seekg(pos1); - x.zeros(f_n_rows, f_n_cols); - - uword row = 0; - - while(f.good()) + try { - std::getline(f, line_string); - - if(line_string.size() == 0) { break; } - - line_stream.clear(); - line_stream.str(line_string); + MapMat<eT> tmp(f_n_rows, f_n_cols); - uword col = 0; + uword row = 0; - while(line_stream.good()) + while(f.good()) { - std::getline(line_stream, token, ','); + std::getline(f, line_string); - eT val = eT(0); + if(line_string.size() == 0) { break; } - diskio::convert_token( val, token ); + line_stream.clear(); + line_stream.str(line_string); - if(val != eT(0)) { x(row,col) = val; } + uword col = 0; - ++col; + while(line_stream.good()) + { + std::getline(line_stream, token, ','); + + eT val = eT(0); + + diskio::convert_token( val, token ); + + if(val != eT(0)) { tmp(row,col) = val; } + + ++col; + } + + ++row; } - ++row; + x = tmp; + } + catch(...) + { + err_msg = "not enough memory"; + return false; } - return load_okay; + return true; } @@ -3118,9 +3131,8 @@ diskio::load_coord_ascii(SpMat<eT>& x, std::istream& f, std::string& err_msg) { arma_extra_debug_sigprint(); - arma_ignore(err_msg); - bool load_okay = f.good(); + if(f.good() == false) { return false; } f.clear(); const std::fstream::pos_type pos1 = f.tellg(); @@ -3137,7 +3149,7 @@ std::string token; - while( f.good() && load_okay ) + while(f.good()) { std::getline(f, line_string); @@ -3153,7 +3165,7 @@ line_stream >> line_row; - if(line_stream.good() == false) { load_okay = false; break; } + if(line_stream.good() == false) { err_msg = "incorrect format"; return false; } line_stream >> line_col; @@ -3163,16 +3175,14 @@ if(f_n_cols < line_col) { f_n_cols = line_col; } } - // take into account that indices start at 0 if(size_found) { ++f_n_rows; ++f_n_cols; } + f.clear(); + f.seekg(pos1); - if(load_okay) + try { - f.clear(); - f.seekg(pos1); - MapMat<eT> tmp(f_n_rows, f_n_cols); while(f.good()) @@ -3204,8 +3214,13 @@ x = tmp; } + catch(...) + { + err_msg = "not enough memory"; + return false; + } - return load_okay; + return true; } @@ -3216,9 +3231,8 @@ diskio::load_coord_ascii(SpMat< std::complex<T> >& x, std::istream& f, std::string& err_msg) { arma_extra_debug_sigprint(); - arma_ignore(err_msg); - bool load_okay = f.good(); + if(f.good() == false) { return false; } f.clear(); const std::fstream::pos_type pos1 = f.tellg(); @@ -3236,7 +3250,7 @@ std::string token_real; std::string token_imag; - while( f.good() && load_okay ) + while(f.good()) { std::getline(f, line_string); @@ -3252,7 +3266,7 @@ line_stream >> line_row; - if(line_stream.good() == false) { load_okay = false; break; } + if(line_stream.good() == false) { err_msg = "incorrect format"; return false; } line_stream >> line_col; @@ -3265,11 +3279,11 @@ // take into account that indices start at 0 if(size_found) { ++f_n_rows; ++f_n_cols; } - if(load_okay) + f.clear(); + f.seekg(pos1); + + try { - f.clear(); - f.seekg(pos1); - MapMat< std::complex<T> > tmp(f_n_rows, f_n_cols); while(f.good()) @@ -3313,8 +3327,13 @@ x = tmp; } + catch(...) + { + err_msg = "not enough memory"; + return false; + } - return load_okay; + return true; } @@ -3370,7 +3389,7 @@ //f.seekg(1, ios::cur); // NOTE: this may not be portable, as on a Windows machine a newline could be two characters f.get(); - x.reserve(f_n_rows, f_n_cols, f_n_nz); + try { x.reserve(f_n_rows, f_n_cols, f_n_nz); } catch(...) { err_msg = "not enough memory"; return false; } f.read( reinterpret_cast<char*>(access::rwp(x.values)), std::streamsize(x.n_nonzero*sizeof(eT)) ); @@ -3807,7 +3826,7 @@ { if(tmp.is_empty() == false) { - x.set_size(tmp.n_rows, tmp.n_cols, 1); + try { x.set_size(tmp.n_rows, tmp.n_cols, 1); } catch(...) { err_msg = "not enough memory"; return false; } x.slice(0) = tmp; } @@ -3838,7 +3857,7 @@ { if(tmp.is_empty() == false) { - x.set_size(tmp.n_rows, tmp.n_cols, 1); + try { x.set_size(tmp.n_rows, tmp.n_cols, 1); } catch(...) { err_msg = "not enough memory"; return false; } x.slice(0) = tmp; } @@ -3884,7 +3903,6 @@ diskio::load_raw_binary(Cube<eT>& x, std::istream& f, std::string& err_msg) { arma_extra_debug_sigprint(); - arma_ignore(err_msg); f.clear(); const std::streampos pos1 = f.tellg(); @@ -3901,7 +3919,7 @@ //f.seekg(0, ios::beg); f.seekg(pos1); - x.set_size(N / uword(sizeof(eT)), 1, 1); + try { x.set_size(N / uword(sizeof(eT)), 1, 1); } catch(...) { err_msg = "not enough memory"; return false; } f.clear(); f.read( reinterpret_cast<char *>(x.memptr()), std::streamsize(x.n_elem * uword(sizeof(eT))) ); @@ -3960,7 +3978,7 @@ if(f_header == diskio::gen_txt_header(x)) { - x.set_size(f_n_rows, f_n_cols, f_n_slices); + try { x.set_size(f_n_rows, f_n_cols, f_n_slices); } catch(...) { err_msg = "not enough memory"; return false; } for(uword slice = 0; slice < x.n_slices; ++slice) for(uword row = 0; row < x.n_rows; ++row ) @@ -4065,7 +4083,8 @@ //f.seekg(1, ios::cur); // NOTE: this may not be portable, as on a Windows machine a newline could be two characters f.get(); - x.set_size(f_n_rows, f_n_cols, f_n_slices); + try { x.set_size(f_n_rows, f_n_cols, f_n_slices); } catch(...) { err_msg = "not enough memory"; return false; } + f.read( reinterpret_cast<char *>(x.memptr()), std::streamsize(x.n_elem*sizeof(eT)) ); load_okay = f.good(); @@ -4177,7 +4196,7 @@ if(ndims == 1) { dims[1] = 1; dims[2] = 1; } // Vector case; one row/colum, several slices if(ndims == 2) { dims[2] = 1; } // Matrix case; one column, several rows/slices - x.set_size(dims[2], dims[1], dims[0]); + try { x.set_size(dims[2], dims[1], dims[0]); } catch(...) { err_msg = "not enough memory"; return false; } // Now we have to see what type is stored to figure out how to load it. hid_t datatype = arma_H5Dget_type(dataset); @@ -4451,7 +4470,7 @@ f >> f_n_rows; f >> f_n_cols; - x.set_size(f_n_rows, f_n_cols); + try { x.set_size(f_n_rows, f_n_cols); } catch(...) { err_msg = "not enough memory"; return false; } f.get(); @@ -4473,7 +4492,7 @@ f >> f_n_cols; f >> f_n_slices; - x.set_size(f_n_rows, f_n_cols, f_n_slices); + try { x.set_size(f_n_rows, f_n_cols, f_n_slices); } catch(...) { err_msg = "not enough memory"; return false; } f.get(); @@ -4623,7 +4642,7 @@ f.seekg(0, ios::beg); //f.seekg(start); - x.set_size(f_n_rows, f_n_cols); + try { x.set_size(f_n_rows, f_n_cols); } catch(...) { err_msg = "not enough memory"; return false; } for(uword row=0; row < x.n_rows; ++row) for(uword col=0; col < x.n_cols; ++col) @@ -4772,7 +4791,7 @@ if( (f_maxval > 0) && (f_maxval <= 65535) ) { - x.set_size(f_n_rows, f_n_cols, 3); + try { x.set_size(f_n_rows, f_n_cols, 3); } catch(...) { err_msg = "not enough memory"; return false; } if(f_maxval <= 255) { @@ -4966,9 +4985,9 @@ Mat<eT>& G = x(1); Mat<eT>& B = x(2); - R.set_size(f_n_rows,f_n_cols); - G.set_size(f_n_rows,f_n_cols); - B.set_size(f_n_rows,f_n_cols); + try { R.set_size(f_n_rows,f_n_cols); } catch(...) { err_msg = "not enough memory"; return false; } + try { G.set_size(f_n_rows,f_n_cols); } catch(...) { err_msg = "not enough memory"; return false; } + try { B.set_size(f_n_rows,f_n_cols); } catch(...) { err_msg = "not enough memory"; return false; } if(f_maxval <= 255) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-10.5.0/include/armadillo_bits/fn_spsolve.hpp new/armadillo-10.5.1/include/armadillo_bits/fn_spsolve.hpp --- old/armadillo-10.5.0/include/armadillo_bits/fn_spsolve.hpp 2016-06-16 18:23:00.000000000 +0200 +++ new/armadillo-10.5.1/include/armadillo_bits/fn_spsolve.hpp 2016-06-16 18:23:01.000000000 +0200 @@ -87,7 +87,7 @@ conversion_ok = true; } - catch(std::bad_alloc&) + catch(...) { arma_debug_warn_level(1, "spsolve(): not enough memory to use LAPACK based solver"); }
