I'd like to announce the availability of LACAML 3.0.3, a fairly complete library interfacing BLAS and LAPACK written in and for the functional programming language OCaml (http://www.ocaml.org).
The very high efficiency of OCaml, its safety and expressiveness thanks to a modern type system with automatic type inference, a powerful higher-order module language, and the availability of a broad range of development tools and libraries make it a perfect choice for high-performance computing in mission critical environments. Its support for Bigarrays in combination with BLAS and LAPACK allow for rapid prototyping of highly efficient and stable numerical algorithms.
Here are some reasons why LACAML may be for you:
- * all implemented functions are available with single and double precision
* almost all implemented functions are available for real and complex numbers
* all functions make considerable use of labeled and default arguments, which makes their application as concise and convenient as possible while still giving users all the optimization power they want (e.g. for preallocating work arrays, etc.)
* the user can (but need not) provide offsets and ranges for specifying sub-vectors and sub-matrices with all implemented algorithms
* all function arguments are checked at runtime before they are passed to BLAS and LAPACK and raise catchable exceptions with understandable error messages in the case of errors
* BLAS-functions: DOT, NRM2, ASUM, SWAP, SCAL, COPY, AXPY, IAMAX, AMAX, GEMV, GBMV, GEMM, SYMM, SYRK, SBMV, SYR
* auxiliary LAPACK-functions: LANSY, LAMCH
* condition numbers: GECON, SYCON, POCON
* simple drivers for linear equations (i.e. all except for HESV and HPSV as of now): GESV, GBSV, GTSV, POSV, PPSV, PBSV, PTSV, SYSV, SPSV.
* computational routines for linear equations: GETRF, GETRS, GETRI, SYTRF, SYTRS, SYTRI, POTRF, POTRS, POTRI
* GELS (a simple driver) and all expert + divide and conquer algorithms for linear least squares problems (GELSY, GELSS, GELSD)
* simple and divide and conquer routines for Standard Eigenvalue and Singular Value Problems: SYEV, SYEVD, GESVD, GESDD.
* SYEVR (RRR-routine for symmetric eigenvalue problems)
* all functions can be run in parallel on SMP-machines
* OCaml-Bigarrays allow memory mapping of large data files
* advanced pretty-printers for vectors and matrices
* convenience functions for the creation of standard matrices for testing purposes: Hilbert, Hankel, Pascal, Rosser, Toeplitz, Vandermonde, Wilkinson, random matrices.
* numerous convenience functions for manipulating vectors and matrices
* LACAML, which currently consists of roughly 12000 lines of OCaml and C-code, is being actively maintained, and has received contributions from six developers
* contributing is very easy since LACAML provides for a fully-featured framework in which new functions can be interfaced very quickly
* the library is continuously exercised on a 60-node Beowulf-cluster in various applications for the financial industry
* the distribution comes with several examples demonstrating the features of LACAML
LACAML is free software (LGPL), and can be downloaded here: http://www.ocaml.info/home/ocaml_sources.html#LACAML
Thanks in advance for comments, suggestions and contributions!
Markus Mottl <email@example.com>