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.
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.
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.
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 netlib@research.att.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. A Netlib repositorry is in Tennessee.
The official
Netlib repositories for BLAS and LAPACK are:
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). 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.
How to obtain the BLAS and LAPACK
routines?
How to send queries, comments and
suggestions?
Status
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 slicotPC.zip, 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.