Eigen is a C++ templatelibrary for linear algebra: matrices, vectors, numerical solvers andrelated algorithms. It supports dense and sparse matrices on integer,floating point and complex numbers, decompositions of such matrices, andsolutions of linear systems. Its performance on many algorithms iscomparable with some of the best implementations based onLapack and level-3BLAS.
RcppEigen provides an interface from R to and fromEigen by using the facilitiesoffered by theRcpp package forseamless R and C++ integration.
A few examples are over at theRcpp Gallery. A simpleone is
#include<RcppEigen.h>// [[Rcpp::depends(RcppEigen)]]using Eigen::Map;// 'maps' rather than copiesusing Eigen::MatrixXd;// variable size matrix, double precisionusing Eigen::VectorXd;// variable size vector, double precisionusing Eigen::SelfAdjointEigenSolver;// one of the eigenvalue solvers// [[Rcpp::export]]VectorXd getEigenValues(Map<MatrixXd> M){ SelfAdjointEigenSolver<MatrixXd> es(M);return es.eigenvalues();}which can be turned into a function callable from R via a simple
sourceCpp("eigenExample.cpp")due to the two Rcpp directives to use headers from the RcppEigenpackage, and to export thegetEigenValues() function – butreadthefull post for details.
The package is mature and under active development, following theEigen release cycle.
The package contains a pdf vignette which is a pre-print of thepaper by Bates andEddelbuettel in JSS (2013, v52i05).
Douglas Bates, Dirk Eddelbuettel, Romain Francois, and Yixuan Qiu
GPL (>= 2)
Initially created: Thu Mar 11 11:14:31 CST 2010
Last modified: Sun May 26 10:09:44 CDT 2024