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 @@
2025-07-21 Dirk Eddelbuettel <edd@debian.org>

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

* inst/include/armadillo_bits/: Armadillo 14.6.1

2025-07-02 Dirk Eddelbuettel <edd@debian.org>

* DESCRIPTION (Version, Date): RcppArmadillo 14.6.0-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: 14.6.0-1
Date: 2025-07-02
Version: 14.6.1-1
Date: 2025-07-21
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 14.6.0-1.
# Generated by GNU Autoconf 2.72 for RcppArmadillo 14.6.1-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='14.6.0-1'
PACKAGE_STRING='RcppArmadillo 14.6.0-1'
PACKAGE_VERSION='14.6.1-1'
PACKAGE_STRING='RcppArmadillo 14.6.1-1'
PACKAGE_BUGREPORT='edd@debian.org'
PACKAGE_URL=''

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

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

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

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

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

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

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

CONFIG_FILES = $CONFIG_FILES
Expand Down Expand Up @@ -4035,7 +4035,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.6.0-1
RcppArmadillo config.status 14.6.1-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],[14.6.0-1],[edd@debian.org])
AC_INIT([RcppArmadillo],[14.6.1-1],[edd@debian.org])

## Set R_HOME, respecting an environment variable if one is set
: ${R_HOME=$(R RHOME)}
Expand Down
11 changes: 11 additions & 0 deletions inst/NEWS.Rd
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,17 @@
\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.6.1-1 (2025-07-21) (GitHub Only)}{
\itemize{
\item Upgraded to Armadillo release 14.6.1 (Caffe Mocha)
\itemize{
\item Fix for speed regression in \code{mean()}
\item Fix for detection of compiler configuration
\item Use of \code{pow} optimization now optional
}
}
}

\section{Changes in RcppArmadillo version 14.6.0-1 (2025-07-02)}{
\itemize{
\item Upgraded to Armadillo release 14.6.0 (Caffe Mocha)
Expand Down
12 changes: 6 additions & 6 deletions inst/include/armadillo_bits/Cube_meat.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2872,7 +2872,7 @@ Cube<eT>::Cube(const eOpCube<T1, eop_type>& X)

init_cold();

if(is_same_type<eop_type, eop_pow>::value)
if(arma_config::optimise_powexpr && is_same_type<eop_type, eop_pow>::value)
{
constexpr bool eT_non_int = is_non_integral<eT>::value;

Expand Down Expand Up @@ -2902,7 +2902,7 @@ Cube<eT>::operator=(const eOpCube<T1, eop_type>& X)

init_warm(X.get_n_rows(), X.get_n_cols(), X.get_n_slices());

if(is_same_type<eop_type, eop_pow>::value)
if(arma_config::optimise_powexpr && is_same_type<eop_type, eop_pow>::value)
{
constexpr bool eT_non_int = is_non_integral<eT>::value;

Expand Down Expand Up @@ -2932,7 +2932,7 @@ Cube<eT>::operator+=(const eOpCube<T1, eop_type>& X)

if(bad_alias) { const Cube<eT> tmp(X); return (*this).operator+=(tmp); }

if(is_same_type<eop_type, eop_pow>::value)
if(arma_config::optimise_powexpr && is_same_type<eop_type, eop_pow>::value)
{
constexpr bool eT_non_int = is_non_integral<eT>::value;

Expand Down Expand Up @@ -2962,7 +2962,7 @@ Cube<eT>::operator-=(const eOpCube<T1, eop_type>& X)

if(bad_alias) { const Cube<eT> tmp(X); return (*this).operator-=(tmp); }

if(is_same_type<eop_type, eop_pow>::value)
if(arma_config::optimise_powexpr && is_same_type<eop_type, eop_pow>::value)
{
constexpr bool eT_non_int = is_non_integral<eT>::value;

Expand Down Expand Up @@ -2992,7 +2992,7 @@ Cube<eT>::operator%=(const eOpCube<T1, eop_type>& X)

if(bad_alias) { const Cube<eT> tmp(X); return (*this).operator%=(tmp); }

if(is_same_type<eop_type, eop_pow>::value)
if(arma_config::optimise_powexpr && is_same_type<eop_type, eop_pow>::value)
{
constexpr bool eT_non_int = is_non_integral<eT>::value;

Expand Down Expand Up @@ -3022,7 +3022,7 @@ Cube<eT>::operator/=(const eOpCube<T1, eop_type>& X)

if(bad_alias) { const Cube<eT> tmp(X); return (*this).operator/=(tmp); }

if(is_same_type<eop_type, eop_pow>::value)
if(arma_config::optimise_powexpr && is_same_type<eop_type, eop_pow>::value)
{
constexpr bool eT_non_int = is_non_integral<eT>::value;

Expand Down
12 changes: 6 additions & 6 deletions inst/include/armadillo_bits/Mat_meat.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5201,7 +5201,7 @@ Mat<eT>::Mat(const eOp<T1, eop_type>& X)

init_cold();

if(is_same_type<eop_type, eop_pow>::value)
if(arma_config::optimise_powexpr && is_same_type<eop_type, eop_pow>::value)
{
constexpr bool eT_non_int = is_non_integral<eT>::value;

Expand Down Expand Up @@ -5231,7 +5231,7 @@ Mat<eT>::operator=(const eOp<T1, eop_type>& X)

init_warm(X.get_n_rows(), X.get_n_cols());

if(is_same_type<eop_type, eop_pow>::value)
if(arma_config::optimise_powexpr && is_same_type<eop_type, eop_pow>::value)
{
constexpr bool eT_non_int = is_non_integral<eT>::value;

Expand Down Expand Up @@ -5260,7 +5260,7 @@ Mat<eT>::operator+=(const eOp<T1, eop_type>& X)

if(bad_alias) { const Mat<eT> tmp(X); return (*this).operator+=(tmp); }

if(is_same_type<eop_type, eop_pow>::value)
if(arma_config::optimise_powexpr && is_same_type<eop_type, eop_pow>::value)
{
constexpr bool eT_non_int = is_non_integral<eT>::value;

Expand Down Expand Up @@ -5289,7 +5289,7 @@ Mat<eT>::operator-=(const eOp<T1, eop_type>& X)

if(bad_alias) { const Mat<eT> tmp(X); return (*this).operator-=(tmp); }

if(is_same_type<eop_type, eop_pow>::value)
if(arma_config::optimise_powexpr && is_same_type<eop_type, eop_pow>::value)
{
constexpr bool eT_non_int = is_non_integral<eT>::value;

Expand Down Expand Up @@ -5335,7 +5335,7 @@ Mat<eT>::operator%=(const eOp<T1, eop_type>& X)

if(bad_alias) { const Mat<eT> tmp(X); return (*this).operator%=(tmp); }

if(is_same_type<eop_type, eop_pow>::value)
if(arma_config::optimise_powexpr && is_same_type<eop_type, eop_pow>::value)
{
constexpr bool eT_non_int = is_non_integral<eT>::value;

Expand Down Expand Up @@ -5364,7 +5364,7 @@ Mat<eT>::operator/=(const eOp<T1, eop_type>& X)

if(bad_alias) { const Mat<eT> tmp(X); return (*this).operator/=(tmp); }

if(is_same_type<eop_type, eop_pow>::value)
if(arma_config::optimise_powexpr && is_same_type<eop_type, eop_pow>::value)
{
constexpr bool eT_non_int = is_non_integral<eT>::value;

Expand Down
7 changes: 7 additions & 0 deletions inst/include/armadillo_bits/arma_config.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,13 @@ struct arma_config
#endif


#if defined(ARMA_OPTIMISE_POWEXPR)
static constexpr bool optimise_powexpr = true;
#else
static constexpr bool optimise_powexpr = false;
#endif


#if defined(ARMA_CHECK_CONFORMANCE)
static constexpr bool check_conform = true;
#else
Expand Down
2 changes: 1 addition & 1 deletion inst/include/armadillo_bits/arma_version.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

#define ARMA_VERSION_MAJOR 14
#define ARMA_VERSION_MINOR 6
#define ARMA_VERSION_PATCH 0
#define ARMA_VERSION_PATCH 1
#define ARMA_VERSION_NAME "Caffe Mocha"


Expand Down
13 changes: 0 additions & 13 deletions inst/include/armadillo_bits/compiler_setup.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -172,10 +172,6 @@
#pragma message("INFO: support for GCC versions older than 8.1 is deprecated")
#endif

#if (ARMA_GCC_VERSION >= 170000)
#undef ARMA_IGNORE_DEPRECATED_MARKER
#endif

#define ARMA_GOOD_COMPILER

#undef arma_hot
Expand Down Expand Up @@ -233,12 +229,6 @@

// #pragma message ("using Clang extensions")

#if defined(__clang_major__) && !defined(__apple_build_version__)
#if (__clang_major__ >= 24)
#undef ARMA_IGNORE_DEPRECATED_MARKER
#endif
#endif

#define ARMA_GOOD_COMPILER

#if !defined(__has_attribute)
Expand Down Expand Up @@ -487,9 +477,6 @@
#undef major


// WARNING: option 'ARMA_IGNORE_DEPRECATED_MARKER' is not supported when compiling with gcc 17+ or clang 24+
// WARNING: disabling deprecation messages is counter-productive

#if defined(ARMA_IGNORE_DEPRECATED_MARKER)
#undef arma_deprecated
#define arma_deprecated
Expand Down
19 changes: 14 additions & 5 deletions inst/include/armadillo_bits/config.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,11 @@
//// of inv() and inv_sympd() within compound expressions
#endif

#if !defined(ARMA_OPTIMISE_POWEXPR)
#define ARMA_OPTIMISE_POWEXPR
//// Comment out the above line to disable optimised handling of pow()
#endif

#if !defined(ARMA_CHECK_CONFORMANCE)
#define ARMA_CHECK_CONFORMANCE
//// Comment out the above line to disable conformance checks for bounds and size.
Expand Down Expand Up @@ -211,7 +216,7 @@


#if defined(ARMA_DEFAULT_OSTREAM)
#pragma message ("WARNING: support for ARMA_DEFAULT_OSTREAM is deprecated and will be removed;")
#pragma message ("WARNING: option ARMA_DEFAULT_OSTREAM is deprecated and will be removed;")
#pragma message ("WARNING: use ARMA_COUT_STREAM and ARMA_CERR_STREAM instead")
#endif

Expand Down Expand Up @@ -290,7 +295,7 @@

// for compatibility with earlier versions of Armadillo
#if defined(ARMA_DONT_USE_CXX11_MUTEX)
#pragma message ("WARNING: support for ARMA_DONT_USE_CXX11_MUTEX is deprecated and will be removed;")
#pragma message ("WARNING: option ARMA_DONT_USE_CXX11_MUTEX is deprecated and will be removed;")
#pragma message ("WARNING: use ARMA_DONT_USE_STD_MUTEX instead")
#undef ARMA_USE_STD_MUTEX
#endif
Expand Down Expand Up @@ -333,6 +338,10 @@
#undef ARMA_OPTIMISE_INVEXPR
#endif

#if defined(ARMA_DONT_OPTIMISE_POWEXPR)
#undef ARMA_OPTIMISE_POWEXPR
#endif

#if defined(ARMA_DONT_CHECK_CONFORMANCE)
#if defined(ARMA_CHECK_CONFORMANCE) && (ARMA_WARN_LEVEL >= 2)
#pragma message ("WARNING: conformance checks disabled")
Expand Down Expand Up @@ -378,12 +387,12 @@
#undef ARMA_CRIPPLED_LAPACK
#endif

// WARNING: option ARMA_IGNORE_DEPRECATED_MARKER will be removed
// WARNING: option ARMA_CRIPPLED_LAPACK will be removed
// WARNING: option ARMA_IGNORE_DEPRECATED_MARKER is deprecated and will be removed
// WARNING: option ARMA_CRIPPLED_LAPACK is deprecated and will be removed

#if defined(ARMA_CRIPPLED_LAPACK)
#if (!defined(ARMA_IGNORE_DEPRECATED_MARKER))
#pragma message ("option ARMA_CRIPPLED_LAPACK is deprecated and will be removed")
#pragma message ("WARNING: option ARMA_CRIPPLED_LAPACK is deprecated and will be removed")
#endif
#endif

Expand Down
1 change: 1 addition & 0 deletions inst/include/armadillo_bits/debug.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1441,6 +1441,7 @@ inline void arma_debug_check(bool state, const char* msg) { arma_conform_check(
out << "\n@ arma_config::optimise_band = " << arma_config::optimise_band;
out << "\n@ arma_config::optimise_sym = " << arma_config::optimise_sym;
out << "\n@ arma_config::optimise_invexpr = " << arma_config::optimise_invexpr;
out << "\n@ arma_config::optimise_powexpr = " << arma_config::optimise_powexpr;
out << "\n@ arma_config::check_conform = " << arma_config::check_conform;
out << "\n@ arma_config::check_nonfinite = " << arma_config::check_nonfinite;
out << "\n@ arma_config::fast_math = " << arma_config::fast_math;
Expand Down
8 changes: 4 additions & 4 deletions inst/include/armadillo_bits/fn_accu.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -407,14 +407,14 @@ accu(const eOp<T1,eop_pow>& expr)

typedef eOp<T1,eop_pow> expr_type;

if(expr.aux == eT(2))
if(arma_config::optimise_powexpr && (expr.aux == eT(2)))
{
typedef eOp<T1,eop_square> modified_expr_type;

return accu( reinterpret_cast< const modified_expr_type& >(expr) );
}

if((expr.aux == eT(0.5)) && is_non_integral<eT>::value)
if(arma_config::optimise_powexpr && (expr.aux == eT(0.5)) && is_non_integral<eT>::value)
{
typedef eOp<T1,eop_sqrt> modified_expr_type;

Expand Down Expand Up @@ -1048,14 +1048,14 @@ accu(const eOpCube<T1,eop_pow>& expr)

typedef eOpCube<T1,eop_pow> expr_type;

if(expr.aux == eT(2))
if(arma_config::optimise_powexpr && (expr.aux == eT(2)))
{
typedef eOpCube<T1,eop_square> modified_expr_type;

return accu( reinterpret_cast< const modified_expr_type& >(expr) );
}

if((expr.aux == eT(0.5)) && is_non_integral<eT>::value)
if(arma_config::optimise_powexpr && (expr.aux == eT(0.5)) && is_non_integral<eT>::value)
{
typedef eOpCube<T1,eop_sqrt> modified_expr_type;

Expand Down
Loading