Subroutine Library in Systems and Control Theory
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:
- usefulness of algorithms;
- robustness, algorithms must either return reliable results or an error or warning indicator;
- 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;
- 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;
- portability and reusability: the library should be independent of platforms;
- standardisation: the library is based on rigorous programming and documentation standards;
- 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 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. Recently, MATLAB or Scilab interfaces have been developed for many routines.
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).
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, M. Voigt, L. Westin, H. Willemsen, T. Williams and H. Xu.
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 routines?
Netlib repositories are in Tennessee and several mirrors. The official Netlib repositories for BLAS and LAPACK are:
How to send queries, comments and suggestions?
At present, SLICOT Library includes over 250 user-callable subroutines. The SLICOT index, libindex.html, enables to browse through the documentation of all user-callable subroutines. 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 controller reduction. 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. These are invoked by a series of M-files which are also provided. Furthermore, some MATLAB test programs and MAT files containing test data are included as well. New MEX-files will be added when available. More details can be seen using the link MATLAB Toolboxes.
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 Release.History.
Ad van den Boom and Vasile Sima, September 2, 2002; updated: Vasile Sima, October 23, 2012; November 4, 2013