Skip to content

Commit c2b95a0

Browse files
authored
Merge pull request #466 from RcppCore/feature/14.4.2
RcppArmadillo 14.4.2-1 with Armadillo 14.4.2
2 parents 331194d + 6281413 commit c2b95a0

15 files changed

+207
-103
lines changed

ChangeLog

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,24 @@
1+
2025-04-25 Dirk Eddelbuettel <[email protected]>
2+
3+
* DESCRIPTION (Version, Date): RcppArmadillo 14.4.2-1
4+
* inst/NEWS.Rd: Idem
5+
* configure.ac: Idem
6+
* configure: Idem
7+
8+
* inst/include/armadillo_bits/: Final sync with Armadillo 14.4.2
9+
10+
2025-04-24 Dirk Eddelbuettel <[email protected]>
11+
12+
* DESCRIPTION (Version, Date): RcppArmadillo 14.4.1-3
13+
14+
* inst/include/armadillo_bits/: Sync again with Armadillo 14.4.2 rc
15+
16+
2025-04-23 Dirk Eddelbuettel <[email protected]>
17+
18+
* DESCRIPTION (Version, Date): RcppArmadillo 14.4.1-2
19+
20+
* inst/include/armadillo_bits/: Sync with Armadillo 14.4.2 rc
21+
122
2025-04-14 Dirk Eddelbuettel <[email protected]>
223

324
* inst/tinytest/test_sparse.R: Remove a redundant duplicate require

DESCRIPTION

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
Package: RcppArmadillo
22
Type: Package
33
Title: 'Rcpp' Integration for the 'Armadillo' Templated Linear Algebra Library
4-
Version: 14.4.1-1
5-
Date: 2025-03-27
4+
Version: 14.4.2-1
5+
Date: 2025-04-25
66
Authors@R: c(person("Dirk", "Eddelbuettel", role = c("aut", "cre"), email = "[email protected]",
77
comment = c(ORCID = "0000-0001-6419-907X")),
88
person("Romain", "Francois", role = "aut",

configure

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#! /bin/sh
22
# Guess values for system-dependent variables and create Makefiles.
3-
# Generated by GNU Autoconf 2.72 for RcppArmadillo 14.4.1-1.
3+
# Generated by GNU Autoconf 2.72 for RcppArmadillo 14.4.2-1.
44
#
55
# Report bugs to <[email protected]>.
66
#
@@ -603,8 +603,8 @@ MAKEFLAGS=
603603
# Identity of this package.
604604
PACKAGE_NAME='RcppArmadillo'
605605
PACKAGE_TARNAME='rcpparmadillo'
606-
PACKAGE_VERSION='14.4.1-1'
607-
PACKAGE_STRING='RcppArmadillo 14.4.1-1'
606+
PACKAGE_VERSION='14.4.2-1'
607+
PACKAGE_STRING='RcppArmadillo 14.4.2-1'
608608
PACKAGE_BUGREPORT='[email protected]'
609609
PACKAGE_URL=''
610610

@@ -1222,7 +1222,7 @@ if test "$ac_init_help" = "long"; then
12221222
# Omit some internal or obsolete options to make the list less imposing.
12231223
# This message is too long to be a string in the A/UX 3.1 sh.
12241224
cat <<_ACEOF
1225-
'configure' configures RcppArmadillo 14.4.1-1 to adapt to many kinds of systems.
1225+
'configure' configures RcppArmadillo 14.4.2-1 to adapt to many kinds of systems.
12261226
12271227
Usage: $0 [OPTION]... [VAR=VALUE]...
12281228
@@ -1284,7 +1284,7 @@ fi
12841284

12851285
if test -n "$ac_init_help"; then
12861286
case $ac_init_help in
1287-
short | recursive ) echo "Configuration of RcppArmadillo 14.4.1-1:";;
1287+
short | recursive ) echo "Configuration of RcppArmadillo 14.4.2-1:";;
12881288
esac
12891289
cat <<\_ACEOF
12901290
@@ -1365,7 +1365,7 @@ fi
13651365
test -n "$ac_init_help" && exit $ac_status
13661366
if $ac_init_version; then
13671367
cat <<\_ACEOF
1368-
RcppArmadillo configure 14.4.1-1
1368+
RcppArmadillo configure 14.4.2-1
13691369
generated by GNU Autoconf 2.72
13701370
13711371
Copyright (C) 2023 Free Software Foundation, Inc.
@@ -1481,7 +1481,7 @@ cat >config.log <<_ACEOF
14811481
This file contains any messages produced by compilers while
14821482
running configure, to aid debugging if configure makes a mistake.
14831483
1484-
It was created by RcppArmadillo $as_me 14.4.1-1, which was
1484+
It was created by RcppArmadillo $as_me 14.4.2-1, which was
14851485
generated by GNU Autoconf 2.72. Invocation command line was
14861486
14871487
$ $0$ac_configure_args_raw
@@ -3980,7 +3980,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
39803980
# report actual input values of CONFIG_FILES etc. instead of their
39813981
# values after options handling.
39823982
ac_log="
3983-
This file was extended by RcppArmadillo $as_me 14.4.1-1, which was
3983+
This file was extended by RcppArmadillo $as_me 14.4.2-1, which was
39843984
generated by GNU Autoconf 2.72. Invocation command line was
39853985
39863986
CONFIG_FILES = $CONFIG_FILES
@@ -4035,7 +4035,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
40354035
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
40364036
ac_cs_config='$ac_cs_config_escaped'
40374037
ac_cs_version="\\
4038-
RcppArmadillo config.status 14.4.1-1
4038+
RcppArmadillo config.status 14.4.2-1
40394039
configured by $0, generated by GNU Autoconf 2.72,
40404040
with options \\"\$ac_cs_config\\"
40414041

configure.ac

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
AC_PREREQ([2.69])
1212

1313
## Process this file with autoconf to produce a configure script.
14-
AC_INIT([RcppArmadillo],[14.4.1-1],[[email protected]])
14+
AC_INIT([RcppArmadillo],[14.4.2-1],[[email protected]])
1515

1616
## Set R_HOME, respecting an environment variable if one is set
1717
: ${R_HOME=$(R RHOME)}

inst/NEWS.Rd

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@
33
\newcommand{\ghpr}{\href{https://github.com/RcppCore/RcppArmadillo/pull/#1}{##1}}
44
\newcommand{\ghit}{\href{https://github.com/RcppCore/RcppArmadillo/issues/#1}{##1}}
55

6+
\section{Changes in RcppArmadillo version 14.4.2-1 (2025-04-25)}{
7+
\itemize{
8+
\item Upgraded to Armadillo release 14.4.2 (Filtered Espresso)
9+
\itemize{
10+
\item Micro-cleanup in one test file
11+
}
12+
}
13+
}
14+
615
\section{Changes in RcppArmadillo version 14.4.1-1 (2025-03-27)}{
716
\itemize{
817
\item Upgraded to Armadillo release 14.4.1 (Filtered Espresso)

inst/include/armadillo_bits/arma_version.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
#define ARMA_VERSION_MAJOR 14
2525
#define ARMA_VERSION_MINOR 4
26-
#define ARMA_VERSION_PATCH 1
26+
#define ARMA_VERSION_PATCH 2
2727
#define ARMA_VERSION_NAME "Filtered Espresso"
2828

2929

inst/include/armadillo_bits/config.hpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,18 @@
303303
#undef ARMA_64BIT_WORD
304304
#endif
305305

306+
#if (defined(ARMA_BLAS_LONG_LONG) && defined(ARMA_USE_WRAPPER))
307+
#pragma message ("WARNING: use of ARMA_BLAS_LONG_LONG in conjunction with ARMA_USE_WRAPPER is not supported")
308+
#endif
309+
310+
#if (defined(ARMA_BLAS_64BIT_INT) && defined(ARMA_USE_WRAPPER))
311+
#pragma message ("WARNING: use of ARMA_BLAS_64BIT_INT in conjunction with ARMA_USE_WRAPPER is not supported")
312+
#endif
313+
314+
#if (defined(ARMA_SUPERLU_64BIT_INT) && defined(ARMA_USE_WRAPPER))
315+
#pragma message ("WARNING: use of ARMA_SUPERLU_64BIT_INT in conjunction with ARMA_USE_WRAPPER is not supported")
316+
#endif
317+
306318
// for compatibility with earlier versions of Armadillo
307319
#if defined(ARMA_BLAS_LONG) || defined(ARMA_BLAS_LONG_LONG)
308320
#undef ARMA_BLAS_64BIT_INT

inst/include/armadillo_bits/def_superlu.hpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,20 @@
1919

2020
extern "C"
2121
{
22-
extern void arma_wrapper(sgssv)(superlu::superlu_options_t*, superlu::SuperMatrix*, int*, int*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::SuperLUStat_t*, int*);
23-
extern void arma_wrapper(dgssv)(superlu::superlu_options_t*, superlu::SuperMatrix*, int*, int*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::SuperLUStat_t*, int*);
24-
extern void arma_wrapper(cgssv)(superlu::superlu_options_t*, superlu::SuperMatrix*, int*, int*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::SuperLUStat_t*, int*);
25-
extern void arma_wrapper(zgssv)(superlu::superlu_options_t*, superlu::SuperMatrix*, int*, int*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::SuperLUStat_t*, int*);
22+
extern void arma_wrapper(sgssv)(superlu::superlu_options_t*, superlu::SuperMatrix*, int*, int*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::SuperLUStat_t*, superlu::int_t*);
23+
extern void arma_wrapper(dgssv)(superlu::superlu_options_t*, superlu::SuperMatrix*, int*, int*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::SuperLUStat_t*, superlu::int_t*);
24+
extern void arma_wrapper(cgssv)(superlu::superlu_options_t*, superlu::SuperMatrix*, int*, int*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::SuperLUStat_t*, superlu::int_t*);
25+
extern void arma_wrapper(zgssv)(superlu::superlu_options_t*, superlu::SuperMatrix*, int*, int*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::SuperLUStat_t*, superlu::int_t*);
2626

27-
extern void arma_wrapper(sgssvx)(superlu::superlu_options_t*, superlu::SuperMatrix*, int*, int*, int*, char*, float*, float*, superlu::SuperMatrix*, superlu::SuperMatrix*, void*, int, superlu::SuperMatrix*, superlu::SuperMatrix*, float*, float*, float*, float*, superlu::GlobalLU_t*, superlu::mem_usage_t*, superlu::SuperLUStat_t*, int*);
28-
extern void arma_wrapper(dgssvx)(superlu::superlu_options_t*, superlu::SuperMatrix*, int*, int*, int*, char*, double*, double*, superlu::SuperMatrix*, superlu::SuperMatrix*, void*, int, superlu::SuperMatrix*, superlu::SuperMatrix*, double*, double*, double*, double*, superlu::GlobalLU_t*, superlu::mem_usage_t*, superlu::SuperLUStat_t*, int*);
29-
extern void arma_wrapper(cgssvx)(superlu::superlu_options_t*, superlu::SuperMatrix*, int*, int*, int*, char*, float*, float*, superlu::SuperMatrix*, superlu::SuperMatrix*, void*, int, superlu::SuperMatrix*, superlu::SuperMatrix*, float*, float*, float*, float*, superlu::GlobalLU_t*, superlu::mem_usage_t*, superlu::SuperLUStat_t*, int*);
30-
extern void arma_wrapper(zgssvx)(superlu::superlu_options_t*, superlu::SuperMatrix*, int*, int*, int*, char*, double*, double*, superlu::SuperMatrix*, superlu::SuperMatrix*, void*, int, superlu::SuperMatrix*, superlu::SuperMatrix*, double*, double*, double*, double*, superlu::GlobalLU_t*, superlu::mem_usage_t*, superlu::SuperLUStat_t*, int*);
27+
extern void arma_wrapper(sgssvx)(superlu::superlu_options_t*, superlu::SuperMatrix*, int*, int*, int*, char*, float*, float*, superlu::SuperMatrix*, superlu::SuperMatrix*, void*, superlu::int_t, superlu::SuperMatrix*, superlu::SuperMatrix*, float*, float*, float*, float*, superlu::GlobalLU_t*, superlu::mem_usage_t*, superlu::SuperLUStat_t*, superlu::int_t*);
28+
extern void arma_wrapper(dgssvx)(superlu::superlu_options_t*, superlu::SuperMatrix*, int*, int*, int*, char*, double*, double*, superlu::SuperMatrix*, superlu::SuperMatrix*, void*, superlu::int_t, superlu::SuperMatrix*, superlu::SuperMatrix*, double*, double*, double*, double*, superlu::GlobalLU_t*, superlu::mem_usage_t*, superlu::SuperLUStat_t*, superlu::int_t*);
29+
extern void arma_wrapper(cgssvx)(superlu::superlu_options_t*, superlu::SuperMatrix*, int*, int*, int*, char*, float*, float*, superlu::SuperMatrix*, superlu::SuperMatrix*, void*, superlu::int_t, superlu::SuperMatrix*, superlu::SuperMatrix*, float*, float*, float*, float*, superlu::GlobalLU_t*, superlu::mem_usage_t*, superlu::SuperLUStat_t*, superlu::int_t*);
30+
extern void arma_wrapper(zgssvx)(superlu::superlu_options_t*, superlu::SuperMatrix*, int*, int*, int*, char*, double*, double*, superlu::SuperMatrix*, superlu::SuperMatrix*, void*, superlu::int_t, superlu::SuperMatrix*, superlu::SuperMatrix*, double*, double*, double*, double*, superlu::GlobalLU_t*, superlu::mem_usage_t*, superlu::SuperLUStat_t*, superlu::int_t*);
3131

32-
extern void arma_wrapper(sgstrf)(superlu::superlu_options_t*, superlu::SuperMatrix*, int, int, int*, void*, int, int*, int*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::GlobalLU_t*, superlu::SuperLUStat_t*, int*);
33-
extern void arma_wrapper(dgstrf)(superlu::superlu_options_t*, superlu::SuperMatrix*, int, int, int*, void*, int, int*, int*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::GlobalLU_t*, superlu::SuperLUStat_t*, int*);
34-
extern void arma_wrapper(cgstrf)(superlu::superlu_options_t*, superlu::SuperMatrix*, int, int, int*, void*, int, int*, int*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::GlobalLU_t*, superlu::SuperLUStat_t*, int*);
35-
extern void arma_wrapper(zgstrf)(superlu::superlu_options_t*, superlu::SuperMatrix*, int, int, int*, void*, int, int*, int*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::GlobalLU_t*, superlu::SuperLUStat_t*, int*);
32+
extern void arma_wrapper(sgstrf)(superlu::superlu_options_t*, superlu::SuperMatrix*, int, int, int*, void*, superlu::int_t, int*, int*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::GlobalLU_t*, superlu::SuperLUStat_t*, superlu::int_t*);
33+
extern void arma_wrapper(dgstrf)(superlu::superlu_options_t*, superlu::SuperMatrix*, int, int, int*, void*, superlu::int_t, int*, int*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::GlobalLU_t*, superlu::SuperLUStat_t*, superlu::int_t*);
34+
extern void arma_wrapper(cgstrf)(superlu::superlu_options_t*, superlu::SuperMatrix*, int, int, int*, void*, superlu::int_t, int*, int*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::GlobalLU_t*, superlu::SuperLUStat_t*, superlu::int_t*);
35+
extern void arma_wrapper(zgstrf)(superlu::superlu_options_t*, superlu::SuperMatrix*, int, int, int*, void*, superlu::int_t, int*, int*, superlu::SuperMatrix*, superlu::SuperMatrix*, superlu::GlobalLU_t*, superlu::SuperLUStat_t*, superlu::int_t*);
3636

3737
extern void arma_wrapper(sgstrs)(superlu::trans_t, superlu::SuperMatrix*, superlu::SuperMatrix*, int*, int*, superlu::SuperMatrix*, superlu::SuperLUStat_t*, int*);
3838
extern void arma_wrapper(dgstrs)(superlu::trans_t, superlu::SuperMatrix*, superlu::SuperMatrix*, int*, int*, superlu::SuperMatrix*, superlu::SuperLUStat_t*, int*);

inst/include/armadillo_bits/glue_times_meat.hpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,40 @@ glue_times_redirect2_helper<true>::apply(Mat<typename T1::elem_type>& out, const
104104

105105
const strip_inv<T1> A_strip(X.A);
106106

107+
typedef typename strip_inv<T1>::stored_type T1_stripped;
108+
109+
if( (is_cx<eT>::no) && (strip_inv<T1>::do_inv_gen) && (is_Mat<T1_stripped>::value) && (is_Mat<T2>::value) )
110+
{
111+
const unwrap<T1_stripped> UA(A_strip.M);
112+
const unwrap<T2 > UB(X.B);
113+
114+
const typename unwrap<T1_stripped>::stored_type& A = UA.M;
115+
const typename unwrap<T2 >::stored_type& B = UB.M;
116+
117+
const uword N = A.n_rows;
118+
119+
if( (N > 0) && (N <= uword(3)) && (N == A.n_cols) && (N == B.n_rows) && (void_ptr(&out) != void_ptr(&B)) )
120+
{
121+
arma_debug_print("glue_times_redirect<2>::apply(): inv tiny matrix optimisation");
122+
123+
Mat<eT> AA(N, N, arma_nozeros_indicator());
124+
125+
arrayops::copy(AA.memptr(), A.memptr(), AA.n_elem);
126+
127+
bool inv_status = false;
128+
129+
if(N == 1) { const eT a = AA[0]; AA[0] = eT(1) / a; inv_status = (a != eT(0)); }
130+
if(N == 2) { inv_status = op_inv_gen_full::apply_tiny_2x2(AA); }
131+
if(N == 3) { inv_status = op_inv_gen_full::apply_tiny_3x3(AA); }
132+
133+
if(inv_status) { glue_times::apply<eT,false,false,false>(out, AA, B, eT(0)); return; }
134+
135+
arma_debug_print("glue_times_redirect<2>::apply(): inv tiny matrix optimisation failed");
136+
137+
// fallthrough if optimisation failed
138+
}
139+
}
140+
107141
Mat<eT> A = A_strip.M;
108142

109143
arma_conform_check( (A.is_square() == false), "inv(): given matrix must be square sized" );

0 commit comments

Comments
 (0)