Skip to content

Commit f187804

Browse files
authored
Update to Eigen 5.0.0 (#148)
* Sync with Eigen 5.0.0 (aka 3.5.0) * Small touchup removing patch that should not have in past commit * Patches for RcppEigen applied to Eigen 5.0.0 files * Commit patch file * Adjust tests and example to deprecations * Comment-out another SuiteSparse reference in CholmodSupport * Partial revert to (updated) previous CholModSupport.h * Updated CholmodSupport.h * Roll micro-release and date following rebase * Additional ChangeLog entry * Refresh patch against Eigen 5.0.0 Uses git commit hash, excludes non-Eigen files (as we do not have to patch them again when we patch again) * Update Eigen URLs in three more places
1 parent 4942662 commit f187804

File tree

641 files changed

+150035
-131007
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

641 files changed

+150035
-131007
lines changed

ChangeLog

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
* .github/workflows/ci.yaml: Switch to actions/checkout@v6
44

5+
2026-01-07 Dirk Eddelbuettel <edd@debian.org>
6+
7+
* README.md: Another pair of URL updates for Eigen
8+
* man/fastLm.Rd: Idem
9+
510
2025-12-30 Dirk Eddelbuettel <edd@debian.org>
611

712
* inst/tinytest/test_misc.R: Additional tests predicate
@@ -29,6 +34,28 @@
2934
* man/RcppEigen_throttle_cores.Rd: Document additional helpers
3035
* cleanup: Minor extension
3136

37+
2025-12-26 Dirk Eddelbuettel <edd@debian.org>
38+
39+
* inst/include/Eigen/src/CholmodSupport/CholmodSupport.h: Comment-out
40+
another SuiteSparse reference
41+
42+
* patches/eigen-5.0.0.diff: Updated against git commit of Eigen 5.0.0 sync
43+
44+
2025-12-25 Dirk Eddelbuettel <edd@debian.org>
45+
46+
* inst/include/Eigen/: Sync with upstream Eigen 5.0.0 (aka 3.5.0)
47+
* inst/include/unsupported/Eigen/: Idem
48+
49+
* patches/eigen-5.0.0.diff: Summary of changes applied
50+
51+
* inst/include/RcppEigenForward.h: No longer use deprecated type
52+
* inst/include/RcppEigenWrap.h: Idem
53+
* inst/tinytest/cpp/rcppeigen.cpp: Adjust test to non-deprecated map
54+
* inst/tinytest/cpp/sparse.cpp: Skip test of deprecated type
55+
* inst/tinytest/test_sparse.R: Idem
56+
57+
* src/fastLm.cpp (SVD::SVD): Update to current form of option setting
58+
3259
2025-08-26 Dirk Eddelbuettel <edd@debian.org>
3360

3461
* inst/tinytest/test_misc.R: Add minimal test for EigenNbThreads()

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Package: RcppEigen
22
Type: Package
33
Title: 'Rcpp' Integration for the 'Eigen' Templated Linear Algebra Library
4-
Version: 0.3.4.0.2-1
4+
Version: 0.4.9.9-1
55
Date: 2025-12-29
66
Authors@R: c(person("Doug", "Bates", role = "aut",
77
comment = c(ORCID = "0000-0001-8316-9503")),

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@
1818

1919
### Synopsis
2020

21-
[Eigen](http://eigen.tuxfamily.org/index.php?title=Main_Page) is a C++ template library for linear algebra:
21+
[Eigen](https://libeigen.gitlab.io/) is a C++ template library for linear algebra:
2222
matrices, vectors, numerical solvers and related algorithms. It supports dense and sparse
2323
matrices on integer, floating point and complex numbers, decompositions of such matrices,
2424
and solutions of linear systems. Its performance on many algorithms is comparable with
2525
some of the best implementations based on `Lapack` and level-3 `BLAS`.
2626

27-
RcppEigen provides an interface from R to and from [Eigen](http://eigen.tuxfamily.org/index.php?title=Main_Page) by
27+
RcppEigen provides an interface from R to and from [Eigen](https://libeigen.gitlab.io/) by
2828
using the facilities offered by the [Rcpp](http://dirk.eddelbuettel.com/code/rcpp.html)
2929
package for seamless R and C++ integration.
3030

@@ -62,8 +62,8 @@ post](https://gallery.rcpp.org/articles/eigen-eigenvalues/) for details.
6262
6363
### Status
6464
65-
The package is mature and under active development, following the
66-
[Eigen](http://eigen.tuxfamily.org/index.php?title=Main_Page) release cycle.
65+
The package is mature and under acthttps://libeigen.gitlab.io/ive development, following the
66+
[Eigen](https://libeigen.gitlab.io/) release cycle.
6767
6868
### Documentation
6969
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// This file is part of Eigen, a lightweight C++ template library
2+
// for linear algebra.
3+
//
4+
// This Source Code Form is subject to the terms of the Mozilla
5+
// Public License v. 2.0. If a copy of the MPL was not distributed
6+
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7+
8+
#ifndef EIGEN_ACCELERATESUPPORT_MODULE_H
9+
#define EIGEN_ACCELERATESUPPORT_MODULE_H
10+
11+
#include "SparseCore"
12+
13+
#include "src/Core/util/DisableStupidWarnings.h"
14+
15+
/** \ingroup Support_modules
16+
* \defgroup AccelerateSupport_Module AccelerateSupport module
17+
*
18+
* This module provides an interface to the Apple Accelerate library.
19+
* It provides the seven following main factorization classes:
20+
* - class AccelerateLLT: a Cholesky (LL^T) factorization.
21+
* - class AccelerateLDLT: the default LDL^T factorization.
22+
* - class AccelerateLDLTUnpivoted: a Cholesky-like LDL^T factorization with only 1x1 pivots and no pivoting
23+
* - class AccelerateLDLTSBK: an LDL^T factorization with Supernode Bunch-Kaufman and static pivoting
24+
* - class AccelerateLDLTTPP: an LDL^T factorization with full threshold partial pivoting
25+
* - class AccelerateQR: a QR factorization
26+
* - class AccelerateCholeskyAtA: a QR factorization without storing Q (equivalent to A^TA = R^T R)
27+
*
28+
* \code
29+
* #include <Eigen/AccelerateSupport>
30+
* \endcode
31+
*
32+
* In order to use this module, the Accelerate headers must be accessible from
33+
* the include paths, and your binary must be linked to the Accelerate framework.
34+
* The Accelerate library is only available on Apple hardware.
35+
*
36+
* Note that many of the algorithms can be influenced by the UpLo template
37+
* argument. All matrices are assumed to be symmetric. For example, the following
38+
* creates an LDLT factorization where your matrix is symmetric (implicit) and
39+
* uses the lower triangle:
40+
*
41+
* \code
42+
* AccelerateLDLT<SparseMatrix<float>, Lower> ldlt;
43+
* \endcode
44+
*/
45+
46+
// IWYU pragma: begin_exports
47+
#include "src/AccelerateSupport/AccelerateSupport.h"
48+
// IWYU pragma: end_exports
49+
50+
#include "src/Core/util/ReenableStupidWarnings.h"
51+
52+
#endif // EIGEN_ACCELERATESUPPORT_MODULE_H

inst/include/Eigen/Cholesky

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,32 +14,30 @@
1414
#include "src/Core/util/DisableStupidWarnings.h"
1515

1616
/** \defgroup Cholesky_Module Cholesky module
17-
*
18-
*
19-
*
20-
* This module provides two variants of the Cholesky decomposition for selfadjoint (hermitian) matrices.
21-
* Those decompositions are also accessible via the following methods:
22-
* - MatrixBase::llt()
23-
* - MatrixBase::ldlt()
24-
* - SelfAdjointView::llt()
25-
* - SelfAdjointView::ldlt()
26-
*
27-
* \code
28-
* #include <Eigen/Cholesky>
29-
* \endcode
30-
*/
17+
*
18+
*
19+
*
20+
* This module provides two variants of the Cholesky decomposition for selfadjoint (hermitian) matrices.
21+
* Those decompositions are also accessible via the following methods:
22+
* - MatrixBase::llt()
23+
* - MatrixBase::ldlt()
24+
* - SelfAdjointView::llt()
25+
* - SelfAdjointView::ldlt()
26+
*
27+
* \code
28+
* #include <Eigen/Cholesky>
29+
* \endcode
30+
*/
3131

32+
// IWYU pragma: begin_exports
3233
#include "src/Cholesky/LLT.h"
3334
#include "src/Cholesky/LDLT.h"
3435
#ifdef EIGEN_USE_LAPACKE
35-
#ifdef EIGEN_USE_MKL
36-
#include "mkl_lapacke.h"
37-
#else
38-
#include "src/misc/lapacke.h"
39-
#endif
36+
#include "src/misc/lapacke_helpers.h"
4037
#include "src/Cholesky/LLT_LAPACKE.h"
4138
#endif
39+
// IWYU pragma: end_exports
4240

4341
#include "src/Core/util/ReenableStupidWarnings.h"
4442

45-
#endif // EIGEN_CHOLESKY_MODULE_H
43+
#endif // EIGEN_CHOLESKY_MODULE_H

inst/include/Eigen/CholmodSupport

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,33 +12,37 @@
1212

1313
#include "src/Core/util/DisableStupidWarnings.h"
1414

15-
/** \ingroup Support_modules
16-
* \defgroup CholmodSupport_Module CholmodSupport module
17-
*
18-
* This module provides an interface to the Cholmod library which is part of the <a href="http://www.suitesparse.com">suitesparse</a> package.
19-
* It provides the two following main factorization classes:
20-
* - class CholmodSupernodalLLT: a supernodal LLT Cholesky factorization.
21-
* - class CholmodDecomposiiton: a general L(D)LT Cholesky factorization with automatic or explicit runtime selection of the underlying factorization method (supernodal or simplicial).
22-
*
23-
* For the sake of completeness, this module also propose the two following classes:
24-
* - class CholmodSimplicialLLT
25-
* - class CholmodSimplicialLDLT
26-
* Note that these classes does not bring any particular advantage compared to the built-in
27-
* SimplicialLLT and SimplicialLDLT factorization classes.
28-
*
29-
* \code
30-
* #include <Eigen/CholmodSupport>
31-
* \endcode
32-
*
33-
* In order to use this module, the cholmod headers must be accessible from the include paths, and your binary must be linked to the cholmod library and its dependencies.
34-
* The dependencies depend on how cholmod has been compiled.
35-
* For a cmake based project, you can use our FindCholmod.cmake module to help you in this task.
36-
*
37-
*/
15+
#include <RcppEigenCholmod.h>
3816

17+
/** \ingroup Support_modules
18+
* \defgroup CholmodSupport_Module CholmodSupport module
19+
*
20+
* This module provides an interface to the Cholmod library which is part of the <a
21+
* href="http://www.suitesparse.com">suitesparse</a> package. It provides the two following main factorization classes:
22+
* - class CholmodSupernodalLLT: a supernodal LLT Cholesky factorization.
23+
* - class CholmodDecomposition: a general L(D)LT Cholesky factorization with automatic or explicit runtime selection of
24+
* the underlying factorization method (supernodal or simplicial).
25+
*
26+
* For the sake of completeness, this module also propose the two following classes:
27+
* - class CholmodSimplicialLLT
28+
* - class CholmodSimplicialLDLT
29+
* Note that these classes does not bring any particular advantage compared to the built-in
30+
* SimplicialLLT and SimplicialLDLT factorization classes.
31+
*
32+
* \code
33+
* #include <Eigen/CholmodSupport>
34+
* \endcode
35+
*
36+
* In order to use this module, the cholmod headers must be accessible from the include paths, and your binary must be
37+
* linked to the cholmod library and its dependencies. The dependencies depend on how cholmod has been compiled. For a
38+
* cmake based project, you can use our FindCholmod.cmake module to help you in this task.
39+
*
40+
*/
41+
42+
// IWYU pragma: begin_exports
3943
#include "src/CholmodSupport/CholmodSupport.h"
44+
// IWYU pragma: end_exports
4045

4146
#include "src/Core/util/ReenableStupidWarnings.h"
4247

43-
#endif // EIGEN_CHOLMODSUPPORT_MODULE_H
44-
48+
#endif // EIGEN_CHOLMODSUPPORT_MODULE_H

0 commit comments

Comments
 (0)