-
Notifications
You must be signed in to change notification settings - Fork 29
Cpp Version of ARPACK and Integration with (Rcpp)Armadillo
Summary: Rewriting (a subset of) the ARPACK
library in C++ and integrate it into Armadillo
/RcppArmadillo
.
Description: ARPACK
is a FORTRAN library for solving large scale eigenvalue/eigenvector problems that has been widely used by many numerical computing languages and packages including R, Python, Octave, Julia, Armadillo etc. However, ARPACK
was written in the antique FORTRAN 77 language, and has experienced an inactive development for a long time.
This project tries to revive the ARPACK
library by reimplementing it in C++ with the help of Armadillo
, a C++ linear algebra library. The C++ version of ARPACK
would be in a header-only form and hence could possibly be merged into Armadillo
in the future. Moreover, it could be used by Rcpp
to work on R objects through the interfacing package RcppArmadillo
.
Related work: The original version of ARPACK
was released by Rice University in 1996 (http://www.caam.rice.edu/software/ARPACK/). When its development became inactive, Debian, Octave and Scilab jointly restarted the project and renamed it to arpack-ng
(https://github.com/opencollab/arpack-ng), whose core part of code is cloned from ARPACK
with a certain number of improvements. Armadillo
also has an interface to ARPACK
through functions eigs_sym()
and eigs_gen()
(http://arma.sourceforge.net/docs.html#eigs_sym). The R package rARPACK
is an R wrapper of the ARPACK
library (http://cran.r-project.org/web/packages/rARPACK/index.html).
All the software packages above are based on the FORTRAN 77 version of ARPACK
. This projects tries to provide a better and easier-to-use interface of ARPACK
for modern software design.
Potential tasks:
- Writing C++ classes to reimplement the functionality of
ARPACK
- Preparing a test suite to prove the correctness of the newly written library
- Benchmarking the C++ version of
ARPACK
, compared with the FORTRAN 77 one - Integrating the library into Armadillo/RcppArmadillo
- R wrapper of the new implementation of
ARPACK
Skills required: Knowledge in linear algebra and C++ programming
Test: A piece of C++ code to calculate the largest three eigenvalues of a 10x10 symmetric real matrix.
Mentor: Dirk Eddelbuettel ([@](mailto:edd {at} debian {dot} org)), Ryan Curtin ([@](mailto:ryan {at} ratml {dot} org)) and Drew Schmidt (as a backup mentor [@](mailto:wrathematics {at} gmail {dot} com))
A solution to the test: The arpack-arma repository by Yixuan Qiu provides a solution to the test.