The Control and Systems Library SLICOT

General information

The freeware subroutine library SLICOT provides Fortran 77 implementations of numerical algorithms for computations in systems and control theory. Based on numerical linear algebra routines from BLAS and LAPACK libraries, SLICOT provides methods for the design and analysis of control systems. The basic ideas behind the library are:

1. usefulness of algorithms;
2. robustness, algorithms must either return reliable results or an error or warning indicator;
3. numerical stability and accuracy: the results are as good as can be expected when working at a given precision. If possible an estimate of the achieved accuracy should be given;
4. performance with respect to speed and memory requirements. Although important because of ever increasing complexity of control problems, this objective may never be met at cost of the two previous ones;
5. portability and reusability the library should be independent of platforms;
6. standardisation based on rigorous programming and documentation standards;
7. benchmarking, i.e., a standardised set of examples that allows an evaluation of the performance of a method as well as the implementation with respect to correctness, accuracy, and speed. Benchmarking gives also insight in the behaviour of the method and its implementation in extreme situations, i.e. for problems where the limit of the possible accuracy is reached.

The current version of SLICOT consists of about 400 user-callable and computational routines in various domains of systems and control. Almost all of these routines have associated on-line documentation. About 200 routines have associated example programs, data and results. New routines are still in preparation. Due to the use of Fortran 77, reusability of the software is obtained, so SLICOT can serve as the core for various existing and future CACSD platforms and production quality software. SLICOT routines can be linked to MATLAB through a gateway compiler, e.g. the NAG Gateway Generator. 

The use of Fortran 77 allows to exploit the structural features of the underlying computational problem and the use of appropriate data structures. This is advantageous for speed of computation and required memory. As the complexity of systems and related control solutions is ever increasing, the issue of speed and memory remains a valid one. As a comparison, MATLAB uses the dense complex matrix as the main data structure, which does not allow to exploit structural aspects. The performance of the library has been assessed with respect to numerical quality, computational speed, and memory requirements for a variety of examples. Comparisons indicate that SLICOT routines usually outperform equivalent MATLAB functions, often by orders of magnitude; see Benner e.a. (1997).

Future developments of SLICOT proceed within the EU thematic network NICONET. Special emphasis will be given to further extensions of the library, to extending accompanying library of benchmarks, to integration of the library in a user friendly environment (e.g. MATLAB), and to development of a parallel version of SLICOT for distributed memory computing environments.

More detailed information on SLICOT can be found in:
Benner, P., Mehrmann, V., Sima, V., Van Huffel, S., and A. Varga: "SLICOT - A Subroutine Library in Systems and Control Theory", June 1997, NICONET Report 97-3; also in "Applied and Computational Control, Signal and Circuits" (Biswa N. Datta, Ed.), Birkauser, vol. 1, ch. 10, pp. 499-539, 1999, ISBN 0-8176-3954-2, 3-7643-3954-3, ISSN 1522-8363.


The development of the SLICOT Library owe much to many people, and both NAG and WGS thank all who have contributed to the development of SLICOT. We especially thank all those who have contributed routines to the Library including E. Barth, Th. Beelen, P. Benner, C. Benson, R. Byers, R. Dekeyser, F. Delebecque, M. Denham, F. Dumortier, A. Emami-Naeini, Da-Wei Gu, A. Geurts, S. Hammarling, G. van den Hurk, B. Kågström, C. Kliman, M. Konstantinov, D. Kressner, A. Laub, A. Markovsky, C. Oara, C. Paige, Th. Penzl, P. Petkov, E. S. Quintana-Orti, G. Quintana-Orti, P.A. Regalia, A. Riedel, R. Schneider, V. Sima, D.M. Sima, S. Steer, F. Svaricek, M. Vanbegin, P. Van Dooren, S. Van Huffel, A. Varga, M. Verhaegen, L. Westin, H. Willemsen, T. Williams and H. Xu.

Organization of the freeware SLICOT library

The freeware SLICOT library is organised as the SLICOT Manual. Each chapter can be identified by a single letter. In the ftp distribution of SLICOT this corresponds to one directory with the same name. The following chapters are included:

The documentation of SLICOT is on-line available. It contains complete descriptions of each available subroutine. To see a sample documentation of a routine (AB01MD.f), click here.

How to obtain the SLICOT Library?

The whole SLICOT library, including routines, example programs, html documentation, and associated MATLAB/Scilab interfaces (in source form) can be retrieved from the SLICOT homepage, either for Unix or Windows platforms.

How to obtain the BLAS and LAPACK routines?

The SLICOT library is built on the LAPACK and BLAS libraries, containing a collection of highly performant and numerically reliable basic linear algebra subroutines. These packages can be obtained via Netlib, a system for the distribution of mathematical software through electronic mail. Simply send a message containing the line "help" to the Internet address and you will receive information on how to use netlib and how to retrieve the routines, collected in the BLAS and LAPACK libraries, from Netlib.

A Netlib repositorry is in Tennessee. The official Netlib repositories for BLAS and LAPACK are:

How to send queries, comments and suggestions?

Any response from users of the SLICOT library is welcome. These might be complaints as well as adhesion, suggestions for new routines or improvements of existing routines in SLICOT, and detected errors or bugs in any of the SLICOT routines. For contact information, please visit the SLICOT homepage.


At present, about 200 user-callable subroutines of the SLICOT Library can be retrieved. The SLICOT index, libindex.html, stored in the SLICOT directory, enables to browse through the documentation of all user-callable subroutines, and to download the needed compressed tar files. This index contains also a link to an auxiliary "SLICOT Supporting Routines Index", which can be used to browse the html on-line documentation for all lower level routines of potential interest to users (over 150 routines are currently included).

The whole library, including example programs, data and results, can be retrieved via ftp as the file slicot.tar.gz, in the SLICOT directory. Another, similarly organized file, called, contains the MS-DOS version of the Fortran source codes of the SLICOT Library.

Moreover, several SLICOT-based Matlab toolboxes can be retrieved from the SLICOT ftp site. There are toolboxes for:  basic analysis and synthesis computations, structured matrix decompositions, linear systems identification, Wiener systems identification, model reduction, controller reduction, and robust control. Executable mexfiles can be directly used for MATLAB running under WINDOWS 95/98/NT/ME/2000. These mexfiles use the Fortran 90 memory allocation scheme. There are also several mexfiles (source form only), which can be used with Fortran 77 compilers (using maximally allocated arrays). These mexfiles are invoked by a series of m files, also provided. Included are some Matlab test programs and mat files with test data. The work is in progress, and new mexfiles will be added when available.

Future changes in the library contents or routine updates (till the next SLICOT Release) are announced in the file Release.Notes, also located in the SLICOT directory. Previous updates are described, in reverse chronological order, in the file Release.History, at the same address.

Ad van den Boom and Vasile Sima, September 2, 2002;  January 18, 2004