The Control and Systems
The 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
robustness, algorithms must
either return reliable results or an error or warning
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
standardisation: the library is based on rigorous programming and documentation
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
The current version of SLICOT consists of
over 520 user-callable and computational routines in various domains of systems
and control. Almost all of these routines have associated on-line documentation.
Over 220 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. Actually, MATLAB or Scilab interfaces have been developed for many
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
More detailed information on SLICOT can be
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,
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, M. Voigt, L. Westin, H. Willemsen, T. Williams and H.
How to obtain the SLICOT Library?
The whole SLICOT library, including
routines, example programs, and html documentation
can be retrieved from the
SLICOT Source Archives,
either for Unix or Windows platforms.
How to obtain the BLAS and LAPACK
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 email@example.com 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.
Netlib repositories are in Tennessee
and several mirrors. The official
Netlib repositories for BLAS and LAPACK are:
How to send queries, comments and
Any response from users of the SLICOT
library is welcome and should be sent via e-mail to the address: firstname.lastname@example.org, or
to email@example.com, for
technical issues. 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
At present, over 250 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
230 routines are currently included).
The whole library, including
example programs, data and results, can be retrieved as the file
slicot.tar.gz, using the link
SLICOT Source Archives.
Another, similarly organized file,
called slicotPC.zip, contains the MS-DOS version of the Fortran source codes of
the SLICOT Library.
Moreover, several SLICOT-based MATLAB toolboxes can
be obtained under a commercial license.
There are toolboxes for: basic
analysis and synthesis computations, including structured matrix decompositions,
linear and Wiener systems identification, and model and
Executable MEX-files can be directly
used for recent MATLAB releases running under WINDOWS, and other common
platforms. These MEX-files use the
Fortran 90 memory allocation scheme.
The MEX-files 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 MEX-files will be added when available.
More details can be seen using the link
Future changes in the library contents or routine updates (till the next
SLICOT Release) are announced in the file
Release.Notes. Previous updates are
described, in reverse chronological order, in the file
Ad van den Boom and Vasile
Sima, September 2, 2002; January 18, 2004
Sima, June 15, 2006; June 8, 2009; October 18, 2009; November 29, 2010; October 23, 2012