From 37de525039c0d7dd55a519531d02a766d82cf9be Mon Sep 17 00:00:00 2001 From: Dirk Eddelbuettel Date: Tue, 6 Aug 2024 06:53:54 -0500 Subject: [PATCH 1/2] Armadillo 14.0.2 --- inst/include/armadillo | 3 +- inst/include/armadillo_bits/Cube_meat.hpp | 4 +- inst/include/armadillo_bits/Mat_meat.hpp | 4 +- inst/include/armadillo_bits/Proxy.hpp | 4 +- inst/include/armadillo_bits/SpMat_meat.hpp | 4 +- inst/include/armadillo_bits/arma_version.hpp | 2 +- .../include/armadillo_bits/compiler_setup.hpp | 2 - inst/include/armadillo_bits/config.hpp | 12 ----- inst/include/armadillo_bits/diskio_meat.hpp | 16 +++--- inst/include/armadillo_bits/field_meat.hpp | 4 +- inst/include/armadillo_bits/fn_accu.hpp | 53 ------------------- inst/include/armadillo_bits/memory.hpp | 32 ++++------- inst/include/armadillo_bits/mul_gemm.hpp | 4 +- inst/include/armadillo_bits/mul_gemv.hpp | 2 +- inst/include/armadillo_bits/mul_herk.hpp | 2 +- inst/include/armadillo_bits/mul_syrk.hpp | 2 +- .../armadillo_bits/subview_field_meat.hpp | 3 +- inst/include/armadillo_bits/subview_meat.hpp | 29 ++++++---- inst/include/armadillo_bits/unwrap.hpp | 2 +- 19 files changed, 57 insertions(+), 127 deletions(-) diff --git a/inst/include/armadillo b/inst/include/armadillo index 7b2790dc..da24cdf2 100644 --- a/inst/include/armadillo +++ b/inst/include/armadillo @@ -35,6 +35,7 @@ #include #include +#include #include #include #include @@ -52,7 +53,7 @@ #include #include -#if !defined(ARMA_DONT_USE_STD_MUTEX) +#if defined(ARMA_USE_STD_MUTEX) #include #endif diff --git a/inst/include/armadillo_bits/Cube_meat.hpp b/inst/include/armadillo_bits/Cube_meat.hpp index 591c6202..aa869bb4 100644 --- a/inst/include/armadillo_bits/Cube_meat.hpp +++ b/inst/include/armadillo_bits/Cube_meat.hpp @@ -3562,7 +3562,7 @@ Cube::operator() (const uword in_row, const uword in_col, const uword in_sli //! element accessor; no bounds check template arma_inline - eT& + eT& Cube::operator[] (const uword in_row, const uword in_col, const uword in_slice) { return access::rw( mem[in_slice*n_elem_slice + in_col*n_rows + in_row] ); @@ -3573,7 +3573,7 @@ Cube::operator() (const uword in_row, const uword in_col, const uword in_sli //! element accessor; no bounds check template arma_inline - const eT& + const eT& Cube::operator[] (const uword in_row, const uword in_col, const uword in_slice) const { return mem[in_slice*n_elem_slice + in_col*n_rows + in_row]; diff --git a/inst/include/armadillo_bits/Mat_meat.hpp b/inst/include/armadillo_bits/Mat_meat.hpp index b738fd27..0f785d5c 100644 --- a/inst/include/armadillo_bits/Mat_meat.hpp +++ b/inst/include/armadillo_bits/Mat_meat.hpp @@ -6500,7 +6500,7 @@ Mat::at(const uword in_row, const uword in_col) const //! element accessor; no bounds check template arma_inline - eT& + eT& Mat::operator[] (const uword in_row, const uword in_col) { return access::rw( mem[in_row + in_col*n_rows] ); @@ -6511,7 +6511,7 @@ Mat::at(const uword in_row, const uword in_col) const //! element accessor; no bounds check template arma_inline - const eT& + const eT& Mat::operator[] (const uword in_row, const uword in_col) const { return mem[in_row + in_col*n_rows]; diff --git a/inst/include/armadillo_bits/Proxy.hpp b/inst/include/armadillo_bits/Proxy.hpp index 4fe0a02a..a51580dd 100644 --- a/inst/include/armadillo_bits/Proxy.hpp +++ b/inst/include/armadillo_bits/Proxy.hpp @@ -795,7 +795,7 @@ struct Proxy< CubeToMatOp > static constexpr bool use_at = false; static constexpr bool use_mp = false; - static constexpr bool has_subview = false; + static constexpr bool has_subview = true; static constexpr bool is_row = false; static constexpr bool is_col = true; @@ -891,7 +891,7 @@ struct Proxy< SpToDOp, op_sp_nonzeros> > static constexpr bool use_at = false; static constexpr bool use_mp = false; - static constexpr bool has_subview = false; + static constexpr bool has_subview = true; static constexpr bool is_row = false; static constexpr bool is_col = true; diff --git a/inst/include/armadillo_bits/SpMat_meat.hpp b/inst/include/armadillo_bits/SpMat_meat.hpp index a09fa3f3..eb0bbce8 100644 --- a/inst/include/armadillo_bits/SpMat_meat.hpp +++ b/inst/include/armadillo_bits/SpMat_meat.hpp @@ -3374,7 +3374,7 @@ SpMat::operator()(const uword i) const template arma_inline - SpMat_MapMat_val + SpMat_MapMat_val SpMat::operator[] (const uword in_row, const uword in_col) { return SpMat_MapMat_val((*this), cache, in_row, in_col); @@ -3384,7 +3384,7 @@ SpMat::operator()(const uword i) const template arma_inline - eT + eT SpMat::operator[] (const uword in_row, const uword in_col) const { return get_value(in_row, in_col); diff --git a/inst/include/armadillo_bits/arma_version.hpp b/inst/include/armadillo_bits/arma_version.hpp index 1c9aa143..6665eef5 100644 --- a/inst/include/armadillo_bits/arma_version.hpp +++ b/inst/include/armadillo_bits/arma_version.hpp @@ -23,7 +23,7 @@ #define ARMA_VERSION_MAJOR 14 #define ARMA_VERSION_MINOR 0 -#define ARMA_VERSION_PATCH 0 +#define ARMA_VERSION_PATCH 2 #define ARMA_VERSION_NAME "Stochastic Parrot" diff --git a/inst/include/armadillo_bits/compiler_setup.hpp b/inst/include/armadillo_bits/compiler_setup.hpp index 931fd967..3978911c 100644 --- a/inst/include/armadillo_bits/compiler_setup.hpp +++ b/inst/include/armadillo_bits/compiler_setup.hpp @@ -304,8 +304,6 @@ #endif #undef ARMA_HAVE_GCC_ASSUME_ALIGNED - #undef ARMA_HAVE_ICC_ASSUME_ALIGNED - #define ARMA_HAVE_ICC_ASSUME_ALIGNED #endif diff --git a/inst/include/armadillo_bits/config.hpp b/inst/include/armadillo_bits/config.hpp index 0b75de7e..50d579f7 100644 --- a/inst/include/armadillo_bits/config.hpp +++ b/inst/include/armadillo_bits/config.hpp @@ -349,18 +349,6 @@ #define ARMA_WARN_LEVEL 3 #endif -#if defined(ARMA_DONT_PRINT_ERRORS) - #pragma message ("INFO: support for ARMA_DONT_PRINT_ERRORS option has been removed") - - #if defined(ARMA_PRINT_EXCEPTIONS) - #pragma message ("INFO: suggest to use ARMA_WARN_LEVEL and ARMA_DONT_PRINT_EXCEPTIONS options instead") - #else - #pragma message ("INFO: suggest to use ARMA_WARN_LEVEL option instead") - #endif - - #pragma message ("INFO: see the documentation for details") -#endif - #if defined(ARMA_DONT_PRINT_EXCEPTIONS) #undef ARMA_PRINT_EXCEPTIONS #endif diff --git a/inst/include/armadillo_bits/diskio_meat.hpp b/inst/include/armadillo_bits/diskio_meat.hpp index 570d7dbf..2c6859fb 100644 --- a/inst/include/armadillo_bits/diskio_meat.hpp +++ b/inst/include/armadillo_bits/diskio_meat.hpp @@ -1062,7 +1062,7 @@ diskio::save_coord_ascii(const Mat& x, std::ostream& f) f.put('\n'); } - // make sure it's possible to figure out the matrix size later + // make sure it's possible to determine the matrix size if( (x.n_rows > 0) && (x.n_cols > 0) ) { const uword max_row = (x.n_rows > 0) ? x.n_rows-1 : 0; @@ -1125,7 +1125,7 @@ diskio::save_coord_ascii(const Mat< std::complex >& x, std::ostream& f) f.put('\n'); } - // make sure it's possible to figure out the matrix size later + // make sure it's possible to determine the matrix size if( (x.n_rows > 0) && (x.n_cols > 0) ) { const uword max_row = (x.n_rows > 0) ? x.n_rows-1 : 0; @@ -1319,8 +1319,8 @@ diskio::save_hdf5_binary(const Mat& x, const hdf5_name& spec, std::string& e hid_t dataspace = H5Screate_simple(2, dims, NULL); // treat the matrix as a 2d array dataspace hid_t datatype = hdf5_misc::get_hdf5_type(); - // If this returned something invalid, well, it's time to crash. - arma_check(datatype == -1, "Mat::save(): unknown datatype for HDF5"); + // fail if we can't handle the datatype + if(datatype == -1) { err_msg = "unknown datatype for HDF5"; return false; } // MATLAB forces the users to specify a name at save time for HDF5; // Octave will use the default of 'dataset' unless otherwise specified. @@ -3065,7 +3065,7 @@ diskio::save_coord_ascii(const SpMat& x, std::ostream& f) } - // make sure it's possible to figure out the matrix size later + // make sure it's possible to determine the matrix size if( (x.n_rows > 0) && (x.n_cols > 0) ) { const uword max_row = (x.n_rows > 0) ? x.n_rows-1 : 0; @@ -3128,7 +3128,7 @@ diskio::save_coord_ascii(const SpMat< std::complex >& x, std::ostream& f) f.put('\n'); } - // make sure it's possible to figure out the matrix size later + // make sure it's possible to determine the matrix size if( (x.n_rows > 0) && (x.n_cols > 0) ) { const uword max_row = (x.n_rows > 0) ? x.n_rows-1 : 0; @@ -4016,8 +4016,8 @@ diskio::save_hdf5_binary(const Cube& x, const hdf5_name& spec, std::string& hid_t dataspace = H5Screate_simple(3, dims, NULL); // treat the cube as a 3d array dataspace hid_t datatype = hdf5_misc::get_hdf5_type(); - // If this returned something invalid, well, it's time to crash. - arma_check(datatype == -1, "Cube::save(): unknown datatype for HDF5"); + // fail if we can't handle the datatype + if(datatype == -1) { err_msg = "unknown datatype for HDF5"; return false; } // MATLAB forces the users to specify a name at save time for HDF5; // Octave will use the default of 'dataset' unless otherwise specified. diff --git a/inst/include/armadillo_bits/field_meat.hpp b/inst/include/armadillo_bits/field_meat.hpp index 5d7d380e..1ae7cce1 100644 --- a/inst/include/armadillo_bits/field_meat.hpp +++ b/inst/include/armadillo_bits/field_meat.hpp @@ -614,7 +614,7 @@ field::operator() (const uword in_row, const uword in_col, const uword in_sl //! element accessor; no bounds check template arma_inline - oT& + oT& field::operator[] (const uword in_row, const uword in_col) { return (*mem[in_row + in_col*n_rows]); @@ -625,7 +625,7 @@ field::operator() (const uword in_row, const uword in_col, const uword in_sl //! element accessor; no bounds check template arma_inline - const oT& + const oT& field::operator[] (const uword in_row, const uword in_col) const { return (*mem[in_row + in_col*n_rows]); diff --git a/inst/include/armadillo_bits/fn_accu.hpp b/inst/include/armadillo_bits/fn_accu.hpp index 68442cbf..9a3cec42 100644 --- a/inst/include/armadillo_bits/fn_accu.hpp +++ b/inst/include/armadillo_bits/fn_accu.hpp @@ -272,59 +272,6 @@ accu(const T1& X) -//! explicit handling of dot product expressed as matrix multiplication -template -arma_warn_unused -inline -typename T1::elem_type -accu(const Glue& expr) - { - arma_debug_sigprint(); - - typedef typename T1::elem_type eT; - - if( (is_cx::no) && (resolves_to_rowvector::value && resolves_to_colvector::value) ) - { - arma_debug_print("accu(): dot product optimisation"); - - constexpr bool proxy_is_mat = (is_Mat::stored_type>::value && is_Mat::stored_type>::value); - - constexpr bool use_at = (Proxy::use_at) || (Proxy::use_at); - - constexpr bool fast_unwrap = (partial_unwrap::is_fast && partial_unwrap::is_fast); - - if(proxy_is_mat || use_at || fast_unwrap) - { - const partial_unwrap UA(expr.A); - const partial_unwrap UB(expr.B); - - const typename partial_unwrap::stored_type& A = UA.M; - const typename partial_unwrap::stored_type& B = UB.M; - - arma_conform_assert_mul_size(A, B, UA.do_trans, UB.do_trans, "matrix multiplication"); - - const eT val = op_dot::direct_dot(A.n_elem, A.memptr(), B.memptr()); - - return (UA.do_times || UB.do_times) ? (val * UA.get_val() * UB.get_val()) : val; - } - else - { - const Proxy PA(expr.A); - const Proxy PB(expr.B); - - arma_conform_assert_mul_size(PA.get_n_rows(), PA.get_n_cols(), PB.get_n_rows(), PB.get_n_cols(), "matrix multiplication"); - - return op_dot::apply_proxy_linear(PA,PB); - } - } - - const Mat tmp(expr); - - return arrayops::accumulate( tmp.memptr(), tmp.n_elem ); - } - - - //! explicit handling of multiply-and-accumulate template arma_warn_unused diff --git a/inst/include/armadillo_bits/memory.hpp b/inst/include/armadillo_bits/memory.hpp index 70de279e..34547e61 100644 --- a/inst/include/armadillo_bits/memory.hpp +++ b/inst/include/armadillo_bits/memory.hpp @@ -148,7 +148,7 @@ arma_inline bool memory::is_aligned(const eT* mem) { - #if (defined(ARMA_HAVE_ICC_ASSUME_ALIGNED) || defined(ARMA_HAVE_GCC_ASSUME_ALIGNED)) && !defined(ARMA_DONT_CHECK_ALIGNMENT) + #if (defined(ARMA_HAVE_GCC_ASSUME_ALIGNED) || defined(__cpp_lib_assume_aligned)) && !defined(ARMA_DONT_CHECK_ALIGNMENT) { return (sizeof(std::size_t) >= sizeof(eT*)) ? ((std::size_t(mem) & 0x0F) == 0) : false; } @@ -168,33 +168,19 @@ arma_inline void memory::mark_as_aligned(eT*& mem) { - #if defined(ARMA_HAVE_ICC_ASSUME_ALIGNED) + #if defined(ARMA_HAVE_GCC_ASSUME_ALIGNED) { - __assume_aligned(mem, 16); + mem = (eT*)__builtin_assume_aligned(mem, 16); } - #elif defined(ARMA_HAVE_GCC_ASSUME_ALIGNED) + #elif defined(__cpp_lib_assume_aligned) { - mem = (eT*)__builtin_assume_aligned(mem, 16); + mem = (eT*)std::assume_aligned<16>(mem); } #else { arma_ignore(mem); } #endif - - // TODO: look into C++20 std::assume_aligned() - // TODO: https://en.cppreference.com/w/cpp/memory/assume_aligned - - // TODO: MSVC? __assume( (mem & 0x0F) == 0 ); - // - // http://comments.gmane.org/gmane.comp.gcc.patches/239430 - // GCC __builtin_assume_aligned is similar to ICC's __assume_aligned, - // so for lvalue first argument ICC's __assume_aligned can be emulated using - // #define __assume_aligned(lvalueptr, align) lvalueptr = __builtin_assume_aligned (lvalueptr, align) - // - // http://www.inf.ethz.ch/personal/markusp/teaching/263-2300-ETH-spring11/slides/class19.pdf - // http://software.intel.com/sites/products/documentation/hpc/composerxe/en-us/cpp/lin/index.htm - // http://d3f8ykwhia686p.cloudfront.net/1live/intel/CompilerAutovectorizationGuide.pdf } @@ -204,13 +190,13 @@ arma_inline void memory::mark_as_aligned(const eT*& mem) { - #if defined(ARMA_HAVE_ICC_ASSUME_ALIGNED) + #if defined(ARMA_HAVE_GCC_ASSUME_ALIGNED) { - __assume_aligned(mem, 16); + mem = (const eT*)__builtin_assume_aligned(mem, 16); } - #elif defined(ARMA_HAVE_GCC_ASSUME_ALIGNED) + #elif defined(__cpp_lib_assume_aligned) { - mem = (const eT*)__builtin_assume_aligned(mem, 16); + mem = (const eT*)std::assume_aligned<16>(mem); } #else { diff --git a/inst/include/armadillo_bits/mul_gemm.hpp b/inst/include/armadillo_bits/mul_gemm.hpp index 71ac1687..41cc833f 100644 --- a/inst/include/armadillo_bits/mul_gemm.hpp +++ b/inst/include/armadillo_bits/mul_gemm.hpp @@ -316,8 +316,8 @@ class gemm const eT local_beta = (use_beta) ? beta : eT(0); - arma_debug_print( arma_str::format("blas::gemm(): trans_A = %c") % trans_A ); - arma_debug_print( arma_str::format("blas::gemm(): trans_B = %c") % trans_B ); + arma_debug_print( arma_str::format("blas::gemm(): trans_A: %c") % trans_A ); + arma_debug_print( arma_str::format("blas::gemm(): trans_B: %c") % trans_B ); blas::gemm ( diff --git a/inst/include/armadillo_bits/mul_gemv.hpp b/inst/include/armadillo_bits/mul_gemv.hpp index c4e19a6c..8c4a0c87 100644 --- a/inst/include/armadillo_bits/mul_gemv.hpp +++ b/inst/include/armadillo_bits/mul_gemv.hpp @@ -378,7 +378,7 @@ class gemv const blas_int inc = blas_int(1); const eT local_beta = (use_beta) ? beta : eT(0); - arma_debug_print( arma_str::format("blas::gemv(): trans_A = %c") % trans_A ); + arma_debug_print( arma_str::format("blas::gemv(): trans_A: %c") % trans_A ); blas::gemv ( diff --git a/inst/include/armadillo_bits/mul_herk.hpp b/inst/include/armadillo_bits/mul_herk.hpp index 09fdd02a..442f734d 100644 --- a/inst/include/armadillo_bits/mul_herk.hpp +++ b/inst/include/armadillo_bits/mul_herk.hpp @@ -405,7 +405,7 @@ class herk const blas_int lda = (do_trans_A) ? k : n; - arma_debug_print( arma_str::format("blas::herk(): trans_A = %c") % trans_A ); + arma_debug_print( arma_str::format("blas::herk(): trans_A: %c") % trans_A ); blas::herk ( diff --git a/inst/include/armadillo_bits/mul_syrk.hpp b/inst/include/armadillo_bits/mul_syrk.hpp index f1369393..4c7de937 100644 --- a/inst/include/armadillo_bits/mul_syrk.hpp +++ b/inst/include/armadillo_bits/mul_syrk.hpp @@ -362,7 +362,7 @@ class syrk const blas_int lda = (do_trans_A) ? k : n; - arma_debug_print( arma_str::format("blas::syrk(): trans_A = %c") % trans_A ); + arma_debug_print( arma_str::format("blas::syrk(): trans_A: %c") % trans_A ); blas::syrk ( diff --git a/inst/include/armadillo_bits/subview_field_meat.hpp b/inst/include/armadillo_bits/subview_field_meat.hpp index 7a402e19..9b5286ca 100644 --- a/inst/include/armadillo_bits/subview_field_meat.hpp +++ b/inst/include/armadillo_bits/subview_field_meat.hpp @@ -525,7 +525,7 @@ subview_field::extract(field& actual_out, const subview_field& in) out.set_size(n_rows, n_cols, n_slices); - arma_debug_print(arma_str::format("out.n_rows: %u; out.n_cols: %u; out.n_slices: %u; n.m.n_rows: %u; in.m.n_cols: %u; in.m.n_slices: %u") % out.n_rows % out.n_cols % out.n_slices % in.f.n_rows % in.f.n_cols % in.f.n_slices); + arma_debug_print(arma_str::format("out.n_rows: %u; out.n_cols: %u; out.n_slices: %u; in.f.n_rows: %u; in.f.n_cols: %u; in.f.n_slices: %u") % out.n_rows % out.n_cols % out.n_slices % in.f.n_rows % in.f.n_cols % in.f.n_slices); if(n_slices == 1) { @@ -550,7 +550,6 @@ subview_field::extract(field& actual_out, const subview_field& in) actual_out = out; delete tmp; } - } diff --git a/inst/include/armadillo_bits/subview_meat.hpp b/inst/include/armadillo_bits/subview_meat.hpp index 3f03f0d6..81cc39f9 100644 --- a/inst/include/armadillo_bits/subview_meat.hpp +++ b/inst/include/armadillo_bits/subview_meat.hpp @@ -1607,15 +1607,15 @@ subview::extract(Mat& out, const subview& in) { if(n_cols == 1) // a column vector { - arma_debug_print("subview::extract(): copying col (going across rows)"); + arma_debug_print("subview::extract(): copying col"); - // in.colptr(0) the first column of the subview, taking into account any row offset + // in.colptr(0) is the first column of the subview, taking into account any row offset arrayops::copy( out.memptr(), in.colptr(0), n_rows ); } else if(n_rows == 1) // a row vector { - arma_debug_print("subview::extract(): copying row (going across columns)"); + arma_debug_print("subview::extract(): copying row)"); eT* out_mem = out.memptr(); @@ -1687,7 +1687,7 @@ subview::plus_inplace(Mat& out, const subview& in) { const eT tmp1 = X.at(row, start_col+i); const eT tmp2 = X.at(row, start_col+j); - + out_mem[i] += tmp1; out_mem[j] += tmp2; } @@ -1735,7 +1735,7 @@ subview::minus_inplace(Mat& out, const subview& in) { const eT tmp1 = X.at(row, start_col+i); const eT tmp2 = X.at(row, start_col+j); - + out_mem[i] -= tmp1; out_mem[j] -= tmp2; } @@ -1783,7 +1783,7 @@ subview::schur_inplace(Mat& out, const subview& in) { const eT tmp1 = X.at(row, start_col+i); const eT tmp2 = X.at(row, start_col+j); - + out_mem[i] *= tmp1; out_mem[j] *= tmp2; } @@ -1831,7 +1831,7 @@ subview::div_inplace(Mat& out, const subview& in) { const eT tmp1 = X.at(row, start_col+i); const eT tmp2 = X.at(row, start_col+j); - + out_mem[i] /= tmp1; out_mem[j] /= tmp2; } @@ -3361,11 +3361,22 @@ template template inline void -subview_col::operator=(const Base& X) +subview_col::operator=(const Base& expr) { arma_debug_sigprint(); - subview::operator=(X); + if(is_Mat::value) + { + const unwrap U(expr.get_ref()); + + arma_conform_assert_same_size(subview::n_rows, uword(1), U.M.n_rows, U.M.n_cols, "copy into submatrix"); + + arrayops::copy(const_cast(colmem), U.M.memptr(), subview::n_rows); + } + else + { + subview::operator=(expr); + } } diff --git a/inst/include/armadillo_bits/unwrap.hpp b/inst/include/armadillo_bits/unwrap.hpp index bedd564a..7e936317 100644 --- a/inst/include/armadillo_bits/unwrap.hpp +++ b/inst/include/armadillo_bits/unwrap.hpp @@ -822,7 +822,7 @@ struct quasi_unwrap< SpToDOp, op_sp_nonzeros> > const Mat M; static constexpr bool is_const = true; - static constexpr bool has_subview = false; + static constexpr bool has_subview = true; static constexpr bool has_orig_mem = true; template From ee10ae11c71f4ba27292539d3f3ec3c4efc2bfb8 Mon Sep 17 00:00:00 2001 From: Dirk Eddelbuettel Date: Tue, 6 Aug 2024 06:58:43 -0500 Subject: [PATCH 2/2] RcppArmadillo 14.0.2-0 (GitHub-only) --- ChangeLog | 7 +++++++ DESCRIPTION | 4 ++-- configure | 18 +++++++++--------- configure.ac | 2 +- inst/NEWS.Rd | 7 ++++++- 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0a0500b7..061cca99 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2024-08-06 Dirk Eddelbuettel + + * DESCRIPTION (Version, Date): RcppArmadillo 14.0.2 + * inst/NEWS.Rd: Idem + * configure.ac: Idem + * configure: Idem + 2024-08-01 Dirk Eddelbuettel * DESCRIPTION (Version, Date): Increment micro version, update date diff --git a/DESCRIPTION b/DESCRIPTION index 5ac5f7b5..41836ccb 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Package: RcppArmadillo Type: Package Title: 'Rcpp' Integration for the 'Armadillo' Templated Linear Algebra Library -Version: 14.0.0-1-1 -Date: 2024-08-01 +Version: 14.0.2-0 +Date: 2024-08-06 Author: Dirk Eddelbuettel, Romain Francois, Doug Bates, Binxiang Ni, and Conrad Sanderson Maintainer: Dirk Eddelbuettel Description: 'Armadillo' is a templated C++ linear algebra library (by Conrad diff --git a/configure b/configure index 6bb4d046..e1ba9d1c 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for RcppArmadillo 14.0.0-1. +# Generated by GNU Autoconf 2.71 for RcppArmadillo 14.0.2-0. # # Report bugs to . # @@ -610,8 +610,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='RcppArmadillo' PACKAGE_TARNAME='rcpparmadillo' -PACKAGE_VERSION='14.0.0-1' -PACKAGE_STRING='RcppArmadillo 14.0.0-1' +PACKAGE_VERSION='14.0.2-0' +PACKAGE_STRING='RcppArmadillo 14.0.2-0' PACKAGE_BUGREPORT='edd@debian.org' PACKAGE_URL='' @@ -1229,7 +1229,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures RcppArmadillo 14.0.0-1 to adapt to many kinds of systems. +\`configure' configures RcppArmadillo 14.0.2-0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1291,7 +1291,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of RcppArmadillo 14.0.0-1:";; + short | recursive ) echo "Configuration of RcppArmadillo 14.0.2-0:";; esac cat <<\_ACEOF @@ -1372,7 +1372,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -RcppArmadillo configure 14.0.0-1 +RcppArmadillo configure 14.0.2-0 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1486,7 +1486,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by RcppArmadillo $as_me 14.0.0-1, which was +It was created by RcppArmadillo $as_me 14.0.2-0, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3944,7 +3944,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by RcppArmadillo $as_me 14.0.0-1, which was +This file was extended by RcppArmadillo $as_me 14.0.2-0, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3999,7 +3999,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -RcppArmadillo config.status 14.0.0-1 +RcppArmadillo config.status 14.0.2-0 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 1dd10068..4e8d220f 100644 --- a/configure.ac +++ b/configure.ac @@ -11,7 +11,7 @@ AC_PREREQ([2.69]) ## Process this file with autoconf to produce a configure script. -AC_INIT([RcppArmadillo],[14.0.0-1],[edd@debian.org]) +AC_INIT([RcppArmadillo],[14.0.2-0],[edd@debian.org]) ## Set R_HOME, respecting an environment variable if one is set : ${R_HOME=$(R RHOME)} diff --git a/inst/NEWS.Rd b/inst/NEWS.Rd index 1c251ebe..71096d06 100644 --- a/inst/NEWS.Rd +++ b/inst/NEWS.Rd @@ -3,8 +3,13 @@ \newcommand{\ghpr}{\href{https://github.com/RcppCore/RcppArmadillo/pull/#1}{##1}} \newcommand{\ghit}{\href{https://github.com/RcppCore/RcppArmadillo/issues/#1}{##1}} -\section{Changes in RcppArmadillo version 14.x.y-z (2024-xx-yy)}{ +\section{Changes in RcppArmadillo version 14.0.2-0 (2024-08-06) (GitHub Only){ \itemize{ + \item Upgraded to Armadillo release 14.0.2 (Stochastic Parrot) + \itemize{ + \item Optionally use C++20 memory alignment + \item Minor corrections for several corner-cases + } \item The order of items displayed by \code{citation()} is reversed (Conrad in \ghpr{449}) }