Hello community, here is the log from the commit of package armadillo for openSUSE:Factory checked in at 2015-11-16 18:52:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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 2015-11-12 19:40:33.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.armadillo.new/armadillo.changes 2015-11-16 18:52:02.000000000 +0100 @@ -1,0 +2,6 @@ +Sun Nov 15 10:11:08 UTC 2015 - badshah...@gmail.com + +- Update to version 6.200.4: + + Bug fixes (undocumented by upstream). + +------------------------------------------------------------------- Old: ---- armadillo-6.200.3.tar.gz New: ---- armadillo-6.200.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ armadillo.spec ++++++ --- /var/tmp/diff_new_pack.bfOtwe/_old 2015-11-16 18:52:03.000000000 +0100 +++ /var/tmp/diff_new_pack.bfOtwe/_new 2015-11-16 18:52:03.000000000 +0100 @@ -19,7 +19,7 @@ %define soname libarmadillo6 Name: armadillo -Version: 6.200.3 +Version: 6.200.4 Release: 0 Summary: Fast C++ matrix library with interfaces to LAPACK and ATLAS License: MPL-2.0 ++++++ armadillo-6.200.3.tar.gz -> armadillo-6.200.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.200.3/CMakeLists.txt new/armadillo-6.200.4/CMakeLists.txt --- old/armadillo-6.200.3/CMakeLists.txt 2015-11-10 05:42:43.000000000 +0100 +++ new/armadillo-6.200.4/CMakeLists.txt 2015-11-11 12:04:09.000000000 +0100 @@ -16,7 +16,7 @@ set(ARMA_MAJOR 6) set(ARMA_MINOR 200) -set(ARMA_PATCH 3) +set(ARMA_PATCH 4) set(ARMADILLO_VERSION ${ARMA_MAJOR}.${ARMA_MINOR}.${ARMA_PATCH}) message(STATUS "Configuring Armadillo ${ARMADILLO_VERSION}") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.200.3/README.txt new/armadillo-6.200.4/README.txt --- old/armadillo-6.200.3/README.txt 2015-11-10 05:42:43.000000000 +0100 +++ new/armadillo-6.200.4/README.txt 2015-11-11 12:29:42.000000000 +0100 @@ -192,7 +192,7 @@ If you want to use Armadillo without installation, or you're getting linking errors, compile along these lines: - g++ example1.cpp -o example1 -O2 -I /home/blah/armadillo-6.200.3/include -DARMA_DONT_USE_WRAPPER -lblas -llapack + g++ example1.cpp -o example1 -O2 -I /home/blah/armadillo-6.200.4/include -DARMA_DONT_USE_WRAPPER -lblas -llapack The above command line assumes that you have unpacked the armadillo archive into /home/blah/ You will need to adjust this for later versions of Armadillo, @@ -434,76 +434,20 @@ Main developers: - Conrad Sanderson - http://conradsanderson.id.au - Ryan Curtin - http://www.ratml.org -- Ian Cullinan -- Dimitrios Bouzas -- Stanislav Funiak -Contributors: +Notable contributors: - Matthew Amidon -- Eric R. Anderson -- Kipton Barros -- BenoƮt Bayol -- Salim Bcoin -- Justin Bedo -- Evan Bollig -- Darius Braziunas -- Filip Bruman -- Ted Campbell -- James Cline -- Chris Cooper +- Dimitrios Bouzas +- Ian Cullinan - Clement Creusot -- Chris Davey -- Patrick Dondl - Alexandre Drouin -- Dirk Eddelbuettel -- Carles Fernandez -- Romain Francois - Michael McNeil Forbes -- Piotr Gawron -- Charles Gretton -- Franz Gritschneder -- Benjamin Herzog - Szabolcs Horvat -- Friedrich Hust -- Ping-Keng Jao -- Jacques-Henri Jourdan -- Yaron Keren -- Kshitij Kulshreshtha -- Oka Kurniawan -- Simen Kvaal -- David Lawrence -- Jussi Lehtola -- Jeremy Mason -- Nikolay Mayorov -- Carlos Mendes -- Sergey Nenakhov -- Artem Novikov - Keith O'Hara -- James Oldfield -- Martin Orlob -- Ken Panici -- Adam Piatyszek -- Jayden Platell -- Vikas Reddy -- Ola Rinta-Koski -- Boris Sabanin - James Sanders -- Pierre-Andre Savalle -- Alexander Scherbatey -- Gerhard Schreiber -- Shane Stainsby -- Petter Strandmark - Eric Jon Sundstrom -- Paul Torfs -- Martin Uhrin -- Simon Urbanek -- Unai Uribarri -- Juergen Wiest - Arnold Wiliem -- Yong Kang Wong -- Buote Xu - George Yammine -- Sean Young diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.200.3/docs.html new/armadillo-6.200.4/docs.html --- old/armadillo-6.200.3/docs.html 2015-11-10 06:20:04.000000000 +0100 +++ new/armadillo-6.200.4/docs.html 2015-11-12 16:48:19.000000000 +0100 @@ -1,4 +1,16 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<!-- +Copyright (C) 2008-2015 National ICT Australia (NICTA) + +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/. +=================================================================== + +Written by Conrad Sanderson - http://conradsanderson.id.au +--> + <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.200.3/include/armadillo_bits/arma_version.hpp new/armadillo-6.200.4/include/armadillo_bits/arma_version.hpp --- old/armadillo-6.200.3/include/armadillo_bits/arma_version.hpp 2015-11-10 05:42:43.000000000 +0100 +++ new/armadillo-6.200.4/include/armadillo_bits/arma_version.hpp 2015-11-11 12:04:09.000000000 +0100 @@ -15,7 +15,7 @@ #define ARMA_VERSION_MAJOR 6 #define ARMA_VERSION_MINOR 200 -#define ARMA_VERSION_PATCH 3 +#define ARMA_VERSION_PATCH 4 #define ARMA_VERSION_NAME "Midnight Blue Deluxe" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.200.3/include/armadillo_bits/diskio_bones.hpp new/armadillo-6.200.4/include/armadillo_bits/diskio_bones.hpp --- old/armadillo-6.200.3/include/armadillo_bits/diskio_bones.hpp 2015-11-10 05:42:43.000000000 +0100 +++ new/armadillo-6.200.4/include/armadillo_bits/diskio_bones.hpp 2015-11-15 06:20:17.000000000 +0100 @@ -1,4 +1,4 @@ -// Copyright (C) 2008-2013 National ICT Australia (NICTA) +// Copyright (C) 2008-2015 National ICT Australia (NICTA) // // 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 @@ -30,12 +30,9 @@ inline static file_type guess_file_type(std::istream& f); - inline static char conv_to_hex_char(const u8 x); - inline static void conv_to_hex(char* out, const u8 x); + inline arma_cold static std::string gen_tmp_name(const std::string& x); - inline static std::string gen_tmp_name(const std::string& x); - - inline static bool safe_rename(const std::string& old_name, const std::string& new_name); + inline arma_cold static bool safe_rename(const std::string& old_name, const std::string& new_name); template<typename eT> inline static bool convert_naninf(eT& val, const std::string& token); template<typename T> inline static bool convert_naninf(std::complex<T>& val, const std::string& token); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.200.3/include/armadillo_bits/diskio_meat.hpp new/armadillo-6.200.4/include/armadillo_bits/diskio_meat.hpp --- old/armadillo-6.200.3/include/armadillo_bits/diskio_meat.hpp 2015-11-10 05:42:43.000000000 +0100 +++ new/armadillo-6.200.4/include/armadillo_bits/diskio_meat.hpp 2015-11-15 06:20:17.000000000 +0100 @@ -616,51 +616,6 @@ -inline -char -diskio::conv_to_hex_char(const u8 x) - { - char out; - - switch(x) - { - case 0: out = '0'; break; - case 1: out = '1'; break; - case 2: out = '2'; break; - case 3: out = '3'; break; - case 4: out = '4'; break; - case 5: out = '5'; break; - case 6: out = '6'; break; - case 7: out = '7'; break; - case 8: out = '8'; break; - case 9: out = '9'; break; - case 10: out = 'a'; break; - case 11: out = 'b'; break; - case 12: out = 'c'; break; - case 13: out = 'd'; break; - case 14: out = 'e'; break; - case 15: out = 'f'; break; - default: out = '-'; break; - } - - return out; - } - - - -inline -void -diskio::conv_to_hex(char* out, const u8 x) - { - const u8 a = x / 16; - const u8 b = x - 16*a; - - out[0] = conv_to_hex_char(a); - out[1] = conv_to_hex_char(b); - } - - - //! Append a quasi-random string to the given filename. //! The rand() function is deliberately not used, //! as rand() has an internal state that changes @@ -669,60 +624,20 @@ //! results should be reproducable and not affected //! by saving data. inline +arma_cold std::string diskio::gen_tmp_name(const std::string& x) { - const std::string* ptr_x = &x; - const u8* ptr_ptr_x = reinterpret_cast<const u8*>(&ptr_x); - - const char* extra = ".tmp_"; - const uword extra_size = 5; - - const uword tmp_size = 2*sizeof(u8*) + 2*2; - char tmp[tmp_size]; - - uword char_count = 0; - - for(uword i=0; i<sizeof(u8*); ++i) - { - conv_to_hex(&tmp[char_count], ptr_ptr_x[i]); - char_count += 2; - } - - const uword x_size = static_cast<uword>(x.size()); - u8 sum = 0; - - for(uword i=0; i<x_size; ++i) - { - sum = (sum + u8(x[i])) & 0xff; - } - - conv_to_hex(&tmp[char_count], sum); - char_count += 2; - - conv_to_hex(&tmp[char_count], u8(x_size)); - - - std::string out; - out.resize(x_size + extra_size + tmp_size); - + union { uword val; void* ptr; } u; - for(uword i=0; i<x_size; ++i) - { - out[i] = x[i]; - } + u.val = uword(0); + u.ptr = const_cast<std::string*>(&x); - for(uword i=0; i<extra_size; ++i) - { - out[x_size + i] = extra[i]; - } + std::stringstream ss; - for(uword i=0; i<tmp_size; ++i) - { - out[x_size + extra_size + i] = tmp[i]; - } + ss << x << ".tmp_" << std::hex << std::noshowbase << (u.val) << (std::clock()); - return out; + return ss.str(); } @@ -733,6 +648,7 @@ //! (i) overwriting files that are write protected, //! (ii) overwriting directories. inline +arma_cold bool diskio::safe_rename(const std::string& old_name, const std::string& new_name) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.200.3/include/armadillo_bits/memory.hpp new/armadillo-6.200.4/include/armadillo_bits/memory.hpp --- old/armadillo-6.200.3/include/armadillo_bits/memory.hpp 2015-11-10 05:42:43.000000000 +0100 +++ new/armadillo-6.200.4/include/armadillo_bits/memory.hpp 2015-11-11 12:25:21.000000000 +0100 @@ -1,4 +1,4 @@ -// Copyright (C) 2012-2014 National ICT Australia (NICTA) +// Copyright (C) 2012-2015 National ICT Australia (NICTA) // // 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 @@ -16,14 +16,12 @@ { public: - arma_inline static uword enlarge_to_mult_of_chunksize(const uword n_elem); + arma_inline static uword enlarge_to_mult_of_chunksize(const uword n_elem); - template<typename eT> inline arma_malloc static eT* acquire(const uword n_elem); - - template<typename eT> inline arma_malloc static eT* acquire_chunked(const uword n_elem); - - template<typename eT> arma_inline static void release(eT* mem); + template<typename eT> inline arma_malloc static eT* acquire(const uword n_elem); + template<typename eT> inline arma_malloc static eT* acquire_chunked(const uword n_elem); + template<typename eT> arma_inline static void release(eT* mem); template<typename eT> arma_inline static bool is_aligned(const eT* mem); template<typename eT> arma_inline static void mark_as_aligned( eT*& mem); @@ -80,6 +78,7 @@ } #elif defined(_MSC_VER) { + //out_memptr = (eT *) malloc(sizeof(eT)*n_elem); out_memptr = (eT *) _aligned_malloc( sizeof(eT)*n_elem, 16 ); // lives in malloc.h } #else @@ -134,6 +133,7 @@ } #elif defined(_MSC_VER) { + //free( (void *)(mem) ); _aligned_free( (void *)(mem) ); } #else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.200.3/include/armadillo_bits/op_symmat_meat.hpp new/armadillo-6.200.4/include/armadillo_bits/op_symmat_meat.hpp --- old/armadillo-6.200.3/include/armadillo_bits/op_symmat_meat.hpp 2015-11-10 05:42:43.000000000 +0100 +++ new/armadillo-6.200.4/include/armadillo_bits/op_symmat_meat.hpp 2015-11-10 11:34:35.000000000 +0100 @@ -25,7 +25,7 @@ const unwrap<T1> tmp(in.m); const Mat<eT>& A = tmp.M; - arma_debug_check( (A.is_square() == false), "symmatu()/symmatl(): given matrix must be square" ); + arma_debug_check( (A.is_square() == false), "symmatu()/symmatl(): given matrix must be square sized" ); const uword N = A.n_rows; const bool upper = (in.aux_uword_a == 0); @@ -105,7 +105,7 @@ const unwrap<T1> tmp(in.m); const Mat<eT>& A = tmp.M; - arma_debug_check( (A.is_square() == false), "symmatu()/symmatl(): given matrix must be square" ); + arma_debug_check( (A.is_square() == false), "symmatu()/symmatl(): given matrix must be square sized" ); const uword N = A.n_rows; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.200.3/include/armadillo_bits/op_trimat_meat.hpp new/armadillo-6.200.4/include/armadillo_bits/op_trimat_meat.hpp --- old/armadillo-6.200.3/include/armadillo_bits/op_trimat_meat.hpp 2015-11-10 05:42:43.000000000 +0100 +++ new/armadillo-6.200.4/include/armadillo_bits/op_trimat_meat.hpp 2015-11-12 15:43:28.000000000 +0100 @@ -61,7 +61,7 @@ const unwrap<T1> tmp(in.m); const Mat<eT>& A = tmp.M; - arma_debug_check( (A.is_square() == false), "trimatu()/trimatl(): given matrix must be square" ); + arma_debug_check( (A.is_square() == false), "trimatu()/trimatl(): given matrix must be square sized" ); const uword N = A.n_rows; const bool upper = (in.aux_uword_a == 0); @@ -141,7 +141,7 @@ // triangular (respectively) and then set the rest to 0, so overwriting issues // aren't present. - arma_debug_check( (A.is_square() == false), "trimatu()/trimatl(): given matrix must be square" ); + arma_debug_check( (A.is_square() == false), "trimatu()/trimatl(): given matrix must be square sized" ); const uword N = A.n_rows; @@ -200,7 +200,7 @@ arma_extra_debug_sigprint(); arma_ignore(junk); - arma_debug_check( (A.is_square() == false), "trimatu()/trimatl(): given matrix must be square" ); + arma_debug_check( (A.is_square() == false), "trimatu()/trimatl(): given matrix must be square sized" ); const uword N = A.n_rows; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/armadillo-6.200.3/include/armadillo_bits/sp_auxlib_meat.hpp new/armadillo-6.200.4/include/armadillo_bits/sp_auxlib_meat.hpp --- old/armadillo-6.200.3/include/armadillo_bits/sp_auxlib_meat.hpp 2015-11-10 05:42:43.000000000 +0100 +++ new/armadillo-6.200.4/include/armadillo_bits/sp_auxlib_meat.hpp 2015-11-15 05:10:54.000000000 +0100 @@ -81,10 +81,11 @@ SpProxy<T1> p(X.get_ref()); // Make sure it's square. - arma_debug_check( (p.get_n_rows() != p.get_n_cols()), "eigs_sym(): given matrix must be square sized"); + arma_debug_check( (p.get_n_rows() != p.get_n_cols()), "eigs_sym(): given matrix must be square sized" ); // Make sure we aren't asking for every eigenvalue. - arma_debug_check( (n_eigvals + 1 >= p.get_n_rows()), "eigs_sym(): n_eigvals + 1 must be less than the number of rows in the matrix"); + // The _saupd() functions allow asking for one more eigenvalue than the _naupd() functions. + arma_debug_check( (n_eigvals >= p.get_n_rows()), "eigs_sym(): n_eigvals must be less than the number of rows in the matrix" ); // If the matrix is empty, the case is trivial. if(p.get_n_cols() == 0) // We already know n_cols == n_rows. @@ -190,10 +191,10 @@ SpProxy<T1> p(X.get_ref()); // Make sure it's square. - arma_debug_check( (p.get_n_rows() != p.get_n_cols()), "eigs_gen(): given matrix must be square sized"); + arma_debug_check( (p.get_n_rows() != p.get_n_cols()), "eigs_gen(): given matrix must be square sized" ); // Make sure we aren't asking for every eigenvalue. - arma_debug_check( (n_eigvals + 1 >= p.get_n_rows()), "eigs_gen(): n_eigvals + 1 must be less than the number of rows in the matrix"); + arma_debug_check( (n_eigvals + 1 >= p.get_n_rows()), "eigs_gen(): n_eigvals + 1 must be less than the number of rows in the matrix" ); // If the matrix is empty, the case is trivial. if(p.get_n_cols() == 0) // We already know n_cols == n_rows. @@ -258,7 +259,7 @@ { for (uword j = 0; j < uword(n); ++j) { - eigvec.at(j, i) = std::complex<T>(z[n * i + j], z[n * (i + 1) + j]); + eigvec.at(j, i) = std::complex<T>(z[n * i + j], z[n * (i + 1) + j]); eigvec.at(j, i + 1) = std::complex<T>(z[n * i + j], -z[n * (i + 1) + j]); } ++i; // Skip the next one. @@ -342,10 +343,10 @@ SpProxy<T1> p(X.get_ref()); // Make sure it's square. - arma_debug_check( (p.get_n_rows() != p.get_n_cols()), "eigs_gen(): given matrix must be square sized"); + arma_debug_check( (p.get_n_rows() != p.get_n_cols()), "eigs_gen(): given matrix must be square sized" ); // Make sure we aren't asking for every eigenvalue. - arma_debug_check( (n_eigvals + 1 >= p.get_n_rows()), "eigs_gen(): n_eigvals + 1 must be less than the number of rows in the matrix"); + arma_debug_check( (n_eigvals + 1 >= p.get_n_rows()), "eigs_gen(): n_eigvals + 1 must be less than the number of rows in the matrix" ); // If the matrix is empty, the case is trivial. if(p.get_n_cols() == 0) // We already know n_cols == n_rows. @@ -621,7 +622,7 @@ // We have to actually create the object which stores the data. // This gets cleaned by destroy_supermatrix(). // We have to use SuperLU's stupid memory allocation routines since they are - // not guaranteed to be new and delete. See the comments in superlu_bones.hpp + // not guaranteed to be new and delete. See the comments in def_superlu.hpp superlu::NCformat* nc = (superlu::NCformat*)superlu::malloc(sizeof(superlu::NCformat)); if(nc == NULL) { return false; } @@ -786,11 +787,18 @@ resid.set_size(n); - // "NCV must satisfy the two inequalities 2 <= NCV-NEV and NCV <= N". - // "It is recommended that NCV >= 2 * NEV". - ncv = 2 + nev; - if (ncv < 2 * nev) { ncv = 2 * nev; } - if (ncv > n) { ncv = n; } + // Two contraints on NCV: (NCV > NEV + 2) and (NCV <= N) + // + // We're calling either arpack::saupd() or arpack::naupd(), + // which have slighly different minimum constraint and recommended value for NCV: + // http://www.caam.rice.edu/software/ARPACK/UG/node136.html + // http://www.caam.rice.edu/software/ARPACK/UG/node138.html + + ncv = nev + 2 + 1; + + if (ncv < (2 * nev + 1)) { ncv = 2 * nev + 1; } + if (ncv > n ) { ncv = n; } + v.set_size(n * ncv); // Array N by NCV (output). rwork.set_size(ncv); // Work array of size NCV for complex calls. ldv = n; // "Leading dimension of V exactly as declared in the calling program."