Module Nla


module Nla: sig  end

Numerical linear algebra routines.

This module provides a stylized high-level interface to the Fortran library Lapack and its associated C library CBLAS. This interface tries to make numerical linear algebra programs look like they were written in the conventional linear algebra mathematics notation, without sacrificing speed or memory efficiency. It also tries to insulate the user from the convoluted and bug-prone interface provided by Lapack. For that we depend to a great extent on the static type checking of OCaml, and, to a lesser extent dynamic runtime type checking. The design borrows a lot from Matlab, but tries to stick to the OCaml way of doing things. Some parts might take some getting used to. The library has been used extensively to code, test and time my own research algorithms. So it is battle-hardened to some extent. User feedback is welcome. You can catch me at shiv@ece.ucsb.edu.

There is a lower-level interface that mimics the exact calling interface of Lapack and CBLAS, but that is not documented here. In fact that interface will hopefully become Lacaml at some point. A tutorial to help familiarize yourself with this library is also available. This package is very similar to the library CleanFloat for the Clean functional programming language.

Of course efficiency depends a great deal on controlling memory usages. So CamlFloat tries to be faithful to the underlying philosophy of Lapack. Almost all computations destroy incoming matrices (two-dimensional arrays in essence). This is quite unlike Matlab where almost always copies are made internally. This is rather nice for newbies, but rather useless for bigger projects. However, to warn users of potential side-effects, we try to follow one of two conventions. If a function destroys any incoming date it will either have a unit return type, or, it will have a name that is terminated by a single open quote. Both of these conventions are common in the OCaml-world.

CamlFloat also allows you to write generic code that is capable of being executed in real single, real double, complex single and complex double precision arithmetic. In standard OCaml form we achieve this using functors. To help in this regard all routines are placed in four modules that share the common signature BLOP. Examples of such generic functors can be found by digging around in the source files. Interestingly enough the package CleanFloat achieves the same effect by using Clean's type classes.
Author(s): Shivkumar Chandrasekaran, William Lyons


module type BLOP = sig  end
A signature that is common to real and complex, single and double precision routines.


The Real and Complex Modules


module DBlop: sig  end
Real double precision routines.
module SBlop: sig  end
Real single precision routines.
module ZBlop: sig  end
Complex double precision routines.
module CBlop: sig  end
Complex single precision routines.