RNP — Rapid Numerical Prototyping

A simple library for common numerical computations.

The design rationale behind the library was to make it maximally easy to use, with performance a secondary consideration. It turns out however, that for most high level algorithms, there is only one good way to implement them, so the performance tends to be quite good.


Currently, RNP supports all common linear algebra operations typically used in the physical sciences. In this respect, RNP is currently feature complete (the target feature set does not include the TODO items marked below), but some interfaces are not finalized, certain parameters are not respected, and memory allocation is not optimal.


Documentation for the different modules is listed below.

Documentation for activities related to the library is listed below.


From now on, the code is hosted on GitHub. You can download the latest snapshot there.




I'm not big on keeping track of licenses, but I will do my best below. Since this library is intended for prototyping, I think it is unlikely anyone will have to bother with looking at licenses.

The code contained in RNP is a mixture of code I wrote and code translated from other sources. Modules IO, Sparse, and the Jacobi eigenssolver are written by myself, and are in the public domain. Modules Random, most of TBLAS, LinearSolve, Eigensystems, and GeneralizedEigensystems are translated from BLAS/LAPACK, and are subject to its license. IterativeLinearSolvers and IterativeGeneralizedEigensystems are translated from Matlab/Fortran code by Martin van Gijzen, Peter Sonneveld, and Gerard L. G. Sleijpen, and are under the GNU General Public License version 2 or later.


This library is maintained by Victor Liu. Email is vee kay ell (three letters) at stanford dot edu.