Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
2026-06-16 Dirk Eddelbuettel <edd@debian.org>

* DESCRIPTION (Version, Date): RcppArmadillo 15.3.91-1
* inst/NEWS.Rd: Idem
* configure.ac: Idem
* configure: Idem

* inst/include/armadillo*: Armadillo 15.3.91 aka 15.4-rc1

2026-05-29 Dirk Eddelbuettel <edd@debian.org>

* DESCRIPTION (Version, Date): RcppArmadillo 15.2.7-1
Expand Down
4 changes: 2 additions & 2 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
Package: RcppArmadillo
Type: Package
Title: 'Rcpp' Integration for the 'Armadillo' Templated Linear Algebra Library
Version: 15.2.7-1
Date: 2026-05-29
Version: 15.3.91-1
Date: 2026-06-16
Authors@R: c(person("Dirk", "Eddelbuettel", role = c("aut", "cre"), email = "edd@debian.org",
comment = c(ORCID = "0000-0001-6419-907X")),
person("Romain", "Francois", role = "aut",
Expand Down
18 changes: 9 additions & 9 deletions configure
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.72 for RcppArmadillo 15.2.7-1.
# Generated by GNU Autoconf 2.72 for RcppArmadillo 15.3.91-1.
#
# Report bugs to <edd@debian.org>.
#
Expand Down Expand Up @@ -603,8 +603,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='RcppArmadillo'
PACKAGE_TARNAME='rcpparmadillo'
PACKAGE_VERSION='15.2.7-1'
PACKAGE_STRING='RcppArmadillo 15.2.7-1'
PACKAGE_VERSION='15.3.91-1'
PACKAGE_STRING='RcppArmadillo 15.3.91-1'
PACKAGE_BUGREPORT='edd@debian.org'
PACKAGE_URL=''

Expand Down Expand Up @@ -1223,7 +1223,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 15.2.7-1 to adapt to many kinds of systems.
'configure' configures RcppArmadillo 15.3.91-1 to adapt to many kinds of systems.

Usage: $0 [OPTION]... [VAR=VALUE]...

Expand Down Expand Up @@ -1285,7 +1285,7 @@ fi

if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of RcppArmadillo 15.2.7-1:";;
short | recursive ) echo "Configuration of RcppArmadillo 15.3.91-1:";;
esac
cat <<\_ACEOF

Expand Down Expand Up @@ -1366,7 +1366,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
RcppArmadillo configure 15.2.7-1
RcppArmadillo configure 15.3.91-1
generated by GNU Autoconf 2.72

Copyright (C) 2023 Free Software Foundation, Inc.
Expand Down Expand Up @@ -1482,7 +1482,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 15.2.7-1, which was
It was created by RcppArmadillo $as_me 15.3.91-1, which was
generated by GNU Autoconf 2.72. Invocation command line was

$ $0$ac_configure_args_raw
Expand Down Expand Up @@ -3946,7 +3946,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 15.2.7-1, which was
This file was extended by RcppArmadillo $as_me 15.3.91-1, which was
generated by GNU Autoconf 2.72. Invocation command line was

CONFIG_FILES = $CONFIG_FILES
Expand Down Expand Up @@ -4001,7 +4001,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 15.2.7-1
RcppArmadillo config.status 15.3.91-1
configured by $0, generated by GNU Autoconf 2.72,
with options \\"\$ac_cs_config\\"

Expand Down
2 changes: 1 addition & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
AC_PREREQ([2.69])

## Process this file with autoconf to produce a configure script.
AC_INIT([RcppArmadillo],[15.2.7-1],[edd@debian.org])
AC_INIT([RcppArmadillo],[15.3.91-1],[edd@debian.org])

## Set R_HOME, respecting an environment variable if one is set
: ${R_HOME=$(R RHOME)}
Expand Down
15 changes: 15 additions & 0 deletions inst/NEWS.Rd
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,21 @@
\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 15.3.91-1 (2026-06-19)}{
\itemize{
\item Upgraded to Armadillo release 15.3.91 (15.4-rc1)
\itemize{
\item Added \code{fill::nan}, \code{fill::pos_inf},
\code{fill::neg_inf} as optional fill forms for the Mat class
\item Added \code{.push_back()} for appending elements to vectors
\item Faster handling of \code{find()} within \code{.elem()}
\item Faster element-wise \code{min()} and \code{max()}
\item Faster \code{conv_to} when element types of input and output
objects are the same
}
}
}

\section{Changes in RcppArmadillo version 15.2.7-1 (2026-05-29)}{
\itemize{
\item Upgraded to Armadillo release 15.2.7 (Medium Roast Deluxe)
Expand Down
2 changes: 2 additions & 0 deletions inst/include/armadillo
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,7 @@ namespace arma
#include "armadillo_bits/op_orth_null_bones.hpp"
#include "armadillo_bits/op_relational_bones.hpp"
#include "armadillo_bits/op_find_bones.hpp"
#include "armadillo_bits/op_find_aux_bones.hpp"
#include "armadillo_bits/op_find_unique_bones.hpp"
#include "armadillo_bits/op_chol_bones.hpp"
#include "armadillo_bits/op_cx_scalar_bones.hpp"
Expand Down Expand Up @@ -765,6 +766,7 @@ namespace arma
#include "armadillo_bits/op_orth_null_meat.hpp"
#include "armadillo_bits/op_relational_meat.hpp"
#include "armadillo_bits/op_find_meat.hpp"
#include "armadillo_bits/op_find_aux_meat.hpp"
#include "armadillo_bits/op_find_unique_meat.hpp"
#include "armadillo_bits/op_chol_meat.hpp"
#include "armadillo_bits/op_cx_scalar_meat.hpp"
Expand Down
10 changes: 7 additions & 3 deletions inst/include/armadillo_bits/Col_bones.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ class Col : public Mat<eT>
static constexpr bool is_row = false;
static constexpr bool is_xvec = false;

static constexpr bool has_subview = false;

inline Col();
inline Col(const Col<eT>& X);

Expand Down Expand Up @@ -67,9 +69,6 @@ class Col : public Mat<eT>
inline Col(Col&& m);
inline Col& operator=(Col&& m);

// inline Col(Mat<eT>&& m);
// inline Col& operator=(Mat<eT>&& m);

inline Col& operator=(const eT val);
inline Col& operator=(const Col& m);

Expand Down Expand Up @@ -153,6 +152,7 @@ class Col : public Mat<eT>
arma_warn_unused arma_inline eT& at(const uword in_row, const uword in_col);
arma_warn_unused arma_inline const eT& at(const uword in_row, const uword in_col) const;

inline void push_back(const eT val);

inline constexpr bool is_vec() const { return true; }
inline constexpr bool is_rowvec() const { return false; }
Expand Down Expand Up @@ -210,6 +210,8 @@ class Col<eT>::fixed : public Col<eT>
static constexpr bool is_row = false;
static constexpr bool is_xvec = false;

static constexpr bool has_subview = false;

static const uword n_rows; // value provided below the class definition
static const uword n_cols; // value provided below the class definition
static const uword n_elem; // value provided below the class definition
Expand Down Expand Up @@ -265,6 +267,8 @@ class Col<eT>::fixed : public Col<eT>
arma_warn_unused arma_inline eT& operator() (const uword in_row, const uword in_col);
arma_warn_unused arma_inline const eT& operator() (const uword in_row, const uword in_col) const;

inline void push_back(const eT) = delete;

arma_warn_unused arma_inline eT* memptr();
arma_warn_unused arma_inline const eT* memptr() const;

Expand Down
77 changes: 19 additions & 58 deletions inst/include/armadillo_bits/Col_meat.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -431,64 +431,6 @@ Col<eT>::operator=(Col<eT>&& X)



// template<typename eT>
// inline
// Col<eT>::Col(Mat<eT>&& X)
// : Mat<eT>(arma_vec_indicator(), 1)
// {
// arma_debug_sigprint(arma_str::format("this: %x; X: %x") % this % &X);
//
// if(X.n_cols != 1) { const Mat<eT>& XX = X; Mat<eT>::operator=(XX); return; }
//
// access::rw(Mat<eT>::n_rows) = X.n_rows;
// access::rw(Mat<eT>::n_cols) = 1;
// access::rw(Mat<eT>::n_elem) = X.n_elem;
// access::rw(Mat<eT>::n_alloc) = X.n_alloc;
//
// if( (X.n_alloc > arma_config::mat_prealloc) || (X.mem_state == 1) || (X.mem_state == 2) )
// {
// access::rw(Mat<eT>::mem_state) = X.mem_state;
// access::rw(Mat<eT>::mem) = X.mem;
//
// access::rw(X.n_rows) = 0;
// access::rw(X.n_elem) = 0;
// access::rw(X.n_alloc) = 0;
// access::rw(X.mem_state) = 0;
// access::rw(X.mem) = nullptr;
// }
// else // condition: (X.n_alloc <= arma_config::mat_prealloc) || (X.mem_state == 0) || (X.mem_state == 3)
// {
// (*this).init_cold();
//
// arrayops::copy( (*this).memptr(), X.mem, X.n_elem );
//
// if( (X.mem_state == 0) && (X.n_alloc <= arma_config::mat_prealloc) )
// {
// access::rw(X.n_rows) = 0;
// access::rw(X.n_elem) = 0;
// access::rw(X.mem) = nullptr;
// }
// }
// }
//
//
//
// template<typename eT>
// inline
// Col<eT>&
// Col<eT>::operator=(Mat<eT>&& X)
// {
// arma_debug_sigprint(arma_str::format("this: %x; X: %x") % this % &X);
//
// if(X.n_cols != 1) { const Mat<eT>& XX = X; Mat<eT>::operator=(XX); return *this; }
//
// (*this).steal_mem(X, true);
//
// return *this;
// }



template<typename eT>
inline
Col<eT>&
Expand Down Expand Up @@ -1208,6 +1150,25 @@ Col<eT>::at(const uword in_row, const uword) const



template<typename eT>
inline
void
Col<eT>::push_back(const eT val)
{
arma_debug_sigprint();

if(Mat<eT>::mem_state != 0)
{
arma_conform_check(true, "Col::push_back(): unsupported operation as auxiliary memory is in use");

return;
}

Mat<eT>::vec_push_back(val, arma_colvec_indicator());
}



template<typename eT>
inline
typename Col<eT>::row_iterator
Expand Down
2 changes: 2 additions & 0 deletions inst/include/armadillo_bits/CubeToMatOp_bones.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ struct CubeToMatOp : public Base< typename T1::elem_type, CubeToMatOp<T1, op_typ
static constexpr bool is_row = op_type::template traits<T1>::is_row;
static constexpr bool is_col = op_type::template traits<T1>::is_col;
static constexpr bool is_xvec = op_type::template traits<T1>::is_xvec;

static constexpr bool has_subview = T1::has_subview;
};


Expand Down
2 changes: 2 additions & 0 deletions inst/include/armadillo_bits/Cube_bones.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ class Cube : public BaseCube< eT, Cube<eT> >

public:

static constexpr bool has_subview = false;

inline ~Cube();
inline Cube();

Expand Down
31 changes: 28 additions & 3 deletions inst/include/armadillo_bits/Cube_meat.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -807,11 +807,29 @@ Cube<eT>::Cube(eT* aux_mem, const uword aux_n_rows, const uword aux_n_cols, cons
{
init_cold();

arrayops::copy( memptr(), aux_mem, n_elem );
if(aux_mem == nullptr)
{
arrayops::fill_zeros(memptr(), n_elem);
}
else
{
arrayops::copy( memptr(), aux_mem, n_elem );
}
}
else
{
create_mat();
if(aux_mem == nullptr)
{
access::rw(mem_state) = 0;

init_cold();

arrayops::fill_zeros(memptr(), n_elem);
}
else
{
create_mat();
}
}
}

Expand All @@ -835,7 +853,14 @@ Cube<eT>::Cube(const eT* aux_mem, const uword aux_n_rows, const uword aux_n_cols

init_cold();

arrayops::copy( memptr(), aux_mem, n_elem );
if(aux_mem == nullptr)
{
arrayops::fill_zeros(memptr(), n_elem);
}
else
{
arrayops::copy( memptr(), aux_mem, n_elem );
}
}


Expand Down
5 changes: 3 additions & 2 deletions inst/include/armadillo_bits/GenCube_bones.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,9 @@ struct GenCube
typedef eT elem_type;
typedef typename get_pod_type<elem_type>::result pod_type;

static constexpr bool use_at = false;
static constexpr bool is_simple = (is_same_type<gen_type, gen_ones>::value) || (is_same_type<gen_type, gen_zeros>::value);
static constexpr bool use_at = false;
static constexpr bool is_simple = (is_same_type<gen_type, gen_ones>::value) || (is_same_type<gen_type, gen_zeros>::value);
static constexpr bool has_subview = false;

const uword n_rows;
const uword n_cols;
Expand Down
2 changes: 2 additions & 0 deletions inst/include/armadillo_bits/Gen_bones.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ struct Gen
static constexpr bool is_col = T1::is_col;
static constexpr bool is_xvec = T1::is_xvec;

static constexpr bool has_subview = false;

const uword n_rows;
const uword n_cols;

Expand Down
2 changes: 2 additions & 0 deletions inst/include/armadillo_bits/GlueCube_bones.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ struct GlueCube : public BaseCube< typename T1::elem_type, GlueCube<T1, T2, glue
typedef typename T1::elem_type elem_type;
typedef typename get_pod_type<elem_type>::result pod_type;

static constexpr bool has_subview = T1::has_subview || T2::has_subview;

inline GlueCube(const BaseCube<typename T1::elem_type, T1>& in_A, const BaseCube<typename T1::elem_type, T2>& in_B);
inline ~GlueCube();

Expand Down
2 changes: 2 additions & 0 deletions inst/include/armadillo_bits/Glue_bones.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ struct Glue
typedef typename T1::elem_type elem_type;
typedef typename get_pod_type<elem_type>::result pod_type;

static constexpr bool has_subview = T1::has_subview || T2::has_subview;

inline Glue(const T1& in_A, const T2& in_B);
inline Glue(const T1& in_A, const T2& in_B, const uword in_aux_uword);
inline ~Glue();
Expand Down
Loading
Loading