# PsiLAB

**PsiLAB** has been developed for scientific research and data analysis. It is freely distributed in source code format under Gnu Public License, version 2. PsiLAB is written mainly in the functional language O’CaML developed at INRIA research laboratories. It’s mainly made of three parts:

- An interpreter, of course O’CaML itself
- libraries written in O’CaML,
- external libraries written in Fortran and C.

Main features of PsiLAB are:

- All O’CaML functions and data types are supported,
- support for different data types: float, int, complex
- extensive matrix package
- 2D and 3D plot package with graphical or postscript output
- various generic and special mathematical functions
- linear algebra package (solving of linear equation systems and linear least square problems)
- Linear Regression
- non linear least square fit routines
- Fast Fourier Transformations
- some image processing functions
- online help system, easily extensible by user functions

PsiLAB uses the following external libraries, mainly written in Fortran:

- LAPACK: Linear algebra and linear least square problems
- MINPACK: Non linear least square fits
- PLPLOT: 2D and 3D plot library with several output drivers (X11, PS, Xfig,…)
- FFTW: Fastest Fourier Transform in the West (and the East ?)
- AMOS: Several special functions: Bessel Polynomials and more …
- SLATEC (partially implemented): More special functions (Gamma function,…)
- CamlImages (partially implemented): Support for various image formats

PsiLAB is not only written in O’CaML, it is ML. That means: if a programmer is familar with this programming language, he can write PsiLAB programs. And he can do all things with PsiLAB he can do with the generic O’CaML development system:

- using modules for access to data base servers
- creating new develop environments
- writing lexers and parsers (perhaps with mathematical background)
- more sophisticated image processing
- HTTP servers (for example with direct access to computation results)
- and many more fields of application.

The CaML interpreter system, which is a pure compiler concept, was chosen because of the high computation speed of this system and the high portability. You have the advantages of an interpreter-like language (from the user point of view), but with performance comparable with C/C++ programs. All functions will be translated by the CaML compiler into a system and machine independent byte-code. This byte-code will be executed by a virtual machine. Currently, there is a terminal driven environement with online help. Plots are printed to an additional X11 window or to a postscript file.

The PsiLAB environment can be downloaded from here: SourceForge/projects/psilab.