Skip to content

Commit a9d2166

Browse files
Update Markdown Files
1 parent 78d831c commit a9d2166

File tree

5 files changed

+160
-21
lines changed

5 files changed

+160
-21
lines changed

CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,9 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
6666
endif()
6767

6868
# Select the Proper Build Type.
69-
IF ( DEBUG STREQUAL ON OR CMAKE_BUILD_TYPE STREQUAL "Debug" )
69+
IF ( SLICOT_DEBUG STREQUAL ON OR CMAKE_BUILD_TYPE STREQUAL "Debug" )
7070
SET (CMAKE_BUILD_TYPE "Debug")
71+
SET (SLICOT_DEBUG ON)
7172
ADD_DEFINITIONS(-DDEBUG)
7273
ENDIF()
7374

Contributors.md

Lines changed: 82 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,85 @@
1-
Contributors and financial support
1+
Contributors
2+
============
23

3-
The development of the SLICOT Library (Subroutine Library In COntrol Theory) owe much to many people. 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. 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.
4+
Current Maintainers
5+
-------------------
6+
After the release of SLICOT 5.9.0 the maintainance of SLICOT was handed over to
47

5-
The precursor of SLICOT was the version derived in the early eighties by the integration of SLICE and SYCOT, as a result of a cooperation between the Numerical Algorithms Group (NAG) from Oxford (UK) and Working Group on Software (WGS) - a Benelux cooperation. This SLICOT version, commercialized by NAG, had two releases, in 1991 and 1993. Later, WGS, NAG, and German Aerospace Center (DLR) in Oberpfaffenhofen, Germany, decided to make SLICOT freely available, and the first public release (Release 3) of SLICOT in 1997 was based entirely on the freeware BLAS and LAPACK subroutines.
8+
* Martin Köhler (@grisuthedragon), MPI Magdeburg
9+
* Jens Saak (@drittelhacker), MPI Magdeburg
610

7-
SLICOT was developed and maintained by NICONET (Numerics In COntrol NETwork), then later by Niconet e.V. The initial work for library conversion to a public version and further extension was supported by the European Community BRITE-EURAM III Thematic Networks Programme NICONET (project BRRT–CT97-5040, 1997-2002). Further developments were mainly supported by several grants of the German Science Foundation (2004-2009), and by The MathWorks (starting with 2008). All this support is highly acknowledged.
11+
Contributors since Version 5.9.0
12+
--------------------------------
13+
14+
15+
Contributors until Version 5.9.0
16+
--------------------------------
17+
18+
The development of the SLICOT Library (Subroutine Library In COntrol Theory)
19+
owe much to many people. We especially thank all those who have contributed
20+
routines to the Library, including
21+
22+
* E. Barth,
23+
* Th. Beelen
24+
* P. Benner
25+
* C. Benson
26+
* R. Byers
27+
* R. Dekeyser
28+
* F. Delebecque
29+
* M. Denham
30+
* F. Dumortier
31+
* A. Emami-Naeini
32+
* Da-Wei Gu
33+
* A. Geurts
34+
* S. Hammarling
35+
* G. van den Hurk
36+
* B. Kågström
37+
* C. Kliman
38+
* M. Konstantinov
39+
* D. Kressner
40+
* A. Laub
41+
* A. Markovsky
42+
* C. Paige
43+
* Th. Penzl
44+
* P. Petkov
45+
* E. S. Quintana-Orti
46+
* G. Quintana-Orti
47+
* P.A. Regalia
48+
* A. Riedel
49+
* R. Schneider
50+
* V. Sima
51+
* D.M. Sima
52+
* S. Steer
53+
* F. Svaricek
54+
* M. Vanbegin
55+
* P. Van Dooren
56+
* S. Van Huffel
57+
* A. Varga
58+
* M. Verhaegen
59+
* M. Voigt
60+
* L. Westin
61+
* H. Willemsen
62+
* T. Williams
63+
* H. Xu.
64+
65+
The precursor of SLICOT was the version derived in the early eighties by the
66+
integration of SLICE and SYCOT, as a result of a cooperation between the
67+
Numerical Algorithms Group (NAG) from Oxford (UK) and Working Group on Software
68+
(WGS) - a Benelux cooperation. This SLICOT version, commercialized by NAG, had
69+
two releases, in 1991 and 1993. Later, WGS, NAG, and German Aerospace Center
70+
(DLR) in Oberpfaffenhofen, Germany, decided to make SLICOT freely available,
71+
and the first public release (Release 3) of SLICOT in 1997 was based entirely
72+
on the freeware BLAS and LAPACK subroutines.
73+
74+
Financial Support
75+
-----------------
76+
77+
SLICOT was developed and maintained by NICONET (Numerics In COntrol NETwork),
78+
then later by Niconet e.V. The initial work for library conversion to a public
79+
version and further extension was supported by the European Community
80+
BRITE-EURAM III Thematic Networks Programme NICONET (project BRRT–CT97-5040,
81+
1997-2002). Further developments were mainly supported by several grants of
82+
the German Science Foundation (2004-2009), and by The MathWorks (starting with
83+
2008).
84+
85+
All this support is highly acknowledged.

INSTALL.md

Lines changed: 53 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,68 @@
1-
# SLICOT Software Installation and Updating
1+
SLICOT Software Installation and Updating
2+
=========================================
23

34
This file describes how to install and update the **SLICOT** Library, and how to run the example programs.
45

5-
The essential source code and documentation for the **SLICOT** software is stored in the **SLICOT** Library root directory, **`slicot`**, and its subdirectories (**`benchmark_data`**, **`doc`**, **`examples`**, **`src`** and **`src_aux`**).
6+
Requirements
7+
------------
68

7-
The object and/or executable files can be built using the information given in this file. **SLICOT** routines make calls to subprograms from the state-of-the-art packages **LAPACK** (Linear Algebra Package) and **BLAS** (Basic Linear Algebra Subprograms). Fortran source code and prebuilt, Fortran-based **LAPACK** and **BLAS** libraries are freely downloadable from https://netlib.org. However, for maximum efficiency it is recommended to use machine-specific, optimized versions whenever possible.
9+
In order to build SLICOT you need:
810

9-
Template make files are provided to help building the **SLICOT** Library object file, and to link and run the available example programs calling the **SLICOT** Library routines. In order to use these make files on a specific Unix-like or Windows platform, some changes might be needed in the files **`make*.inc`** and **`makefile*`** stored in the **SLICOT** (sub-)directories, **`slicot`**, **`examples`**, **`src`** and **`src_aux`**. The file named **`make.inc`** and the files **`makefile`** have been used on Windows platforms with Intel Fortran compilers. The files named **`make_Unix.inc`** and **`makefile_Unix`** are templates for Unix-like machines, including Linux, with gfortran compiler. Denote by <**slicotroot**> the path to the **`slicot`** directory, which can be, e.g., **`c:\slicot`**, on Windows platforms. (The last (sub)directory name in <**slicotroot**> is **`slicot`**.)
11+
* a F77 compatible Fortran compiler
12+
* cmake, at least 3.15 or 3.22 for the ILP64 build
13+
* a BLAS/LIBRARY
1014

11-
The changes in **`make*.inc`** might define the specific machine (platform) identifier, the compiler, linker, and archiver flags, and the location and names of the **LAPACK** and **BLAS** libraries, which the program files should be linked to. Some details are given in the **`make*.inc`** files.
15+
The following compilers are tested
1216

13-
After performing the necessary changes, as suggested in the comments of the make files, the other needed **SLICOT**-related files can be generated automatically with the command
17+
* gcc 9, 11, 13, 14
18+
* clang/flang 20
1419

15-
**`make`** (or **`nmake`**, for Windows platforms)
20+
We support Linux, Free/Net/OpenBSD, MacOSX (Intel and ARM), Windows with MSYS2.
1621

17-
issued from the directory **`slicot`** of <**slicotroot**>.
22+
For performance reasons, we suggest to use an optimized BLAS implementation
23+
like
1824

19-
The first execution of **`(n)make`** will create the following files
25+
* OpenBLAS, https://www.openblas.net
26+
* BLIS, https://github.com/flame/blis
27+
* Intel oneAPI MKL, https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html
28+
* FlexiBLAS, https://www.mpi-magdeburg.mpg.de/projects/flexiblas
2029

21-
- the **SLICOT** Library object files **`*.o`** (for Unix machines), or **`*.obj`** (for Windows machines), in the subdirectories **`src`** and **`src_aux`** of **`slicot`**;
22-
- the library files **`slicot.a`** and **`lpkaux.a`**, or **`slicot.lib`** and **`lpkaux.lib`**, respectively, in the directory **`slicot`**; the libraries **`lpkaux.a`** or **`lpkaux.lib`** contain the object files for two **LAPACK** deprecated subroutines, **`dlatzm.f`** and **`zlatzm.f`**, which are called by few **SLICOT** routines.
23-
- the example programs object and executable files, in the subdirectory **`examples`**;
24-
- the files **`*.exa`**, with the results computed on the local machine, with the same name as for the files with data (**`*.dat`**) and reference results (**`*.res`**), also in the subdirectory **`examples`**.
30+
Installation
31+
------------
32+
SLICOT requires an *out-of-source* build process. That means, the source code
33+
direcotry stays untouched during the build.
2534

26-
The subsequent executions of **`(n)make`** will update the files if changes have been performed (assuming that the object and executable files have been preserved on their subdirectories).
35+
The in order to configure and compile the source, use `cmake`:
36+
```shell
37+
cmake -S . -B build-dir <OPTIONS>
38+
cmake --build build-dir
39+
```
40+
after building, SLICOT can be installed via
41+
```shell
42+
cmake --build build-dir --target install
43+
```
2744

28-
The files **`*.exa`**, with the computed results may be compared with the reference results. Several types of differences could be noticed, including possible sign changes for some elements, or even different values in some columns and/or rows of the computed matrices. For instance, the matrices of similarity or equivalence transformations could differ from a platform/compiler to another. This does not usually mean that the computed results are wrong.
45+
The test suite is executed using
46+
```shell
47+
ctest --test-dir build-dir
48+
```
49+
50+
The following options to cmake are availble:
51+
52+
| Option | Possible Values | Default Value | Description |
53+
|:-------|:----------------|:--------------|-------------|
54+
|`CMAKE_INSTALL_PREFIX` | valid path | `/usr/local` | Installation path |
55+
|`CMAKE_BUILD_TYPE` | `Debug`, `Release`, `MinSizeRel`, `RelWithDebInfo`, `Coverage` | `Release` | Specify the build type |
56+
|`BUILD_SHARED_LIBS` | `ON`, `OFF` | `OFF` | Build SLICOT as shared library |
57+
|`SLICOT_TESTING` | `ON`, `OFF` | `ON` | Build the examples and the test suite |
58+
|`SLICOT_DEBUG` | `ON`, `OFF` | `OFF` | Enable the debug build, equivalent to `CMAKE_BUILD_TYPE=Debug`|
59+
|`SLICOT_INTEGER8` | `ON`, `OFF` | `OFF` | Enable the ILP64 integer model, i.e. the Fortran `INTEGER` defaults to a 64-bit integer, requires cmake >= 3.22|
60+
|`BLA_VENDOR` | BLAS Vendor Name | empty | Specify the BLAS library to search for, see https://cmake.org/cmake/help/latest/module/FindBLAS.html for details |
61+
62+
The options are passed as `-DOPTION=VALUE` to cmake.
63+
64+
Issues
65+
------
66+
A list of known issues can be found in [KNOWN_ISSUSES.md](./KNOWN_ISSUES.md)
2967

30-
More details for executing other tasks, e.g., cleaning the subdirectories **`src`** and **`examples`**, are given in the files **`makefile* included in directory **`slicot`** and in the subdirectories **`src`** and **`examples`**.
3168

KNOWN_ISSUES.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,10 @@ InstalledDir: C:/msys64/clang64/bin
3535

3636
The bug is known to LLVM community: https://github.com/llvm/llvm-project/issues/69952
3737

38+
Does not work with IBM ESSL
39+
---------------------------
40+
On the ppc64le platform, IBM provides the ESSL library for BLAS and LAPACK, but
41+
not all LAPACK symbols are exported by this library and thus SLICOT will not
42+
link against it. The typical workaround would be to used ESSL only as BLAS and
43+
combine it with the NETLIB LAPACK.
44+

ReleaseNotes.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
# SLICOT Library Release Notes
22

3+
## Version v5.9.1
4+
5+
Version 5.9.1 is the first version maintained by M. Köhler and J. Saak. It does
6+
not add any new routines to SLICOT.
7+
8+
### Improvements
9+
10+
* The build system now uses CMAKE. The old makefile based system works in parallel
11+
but will be removed in the future with the next minor release.
12+
13+
### Bugfixes
14+
15+
* Fix: implicit variables are now declared
16+
* Fix: stack overflow in the test suite on Windows
17+
18+
319
## Version v5.9
420

521
Version v5.9 of the **SLICOT** Library includes 11 new routines and 9 updated routines, in comparison to Version v5.8 of the library.

0 commit comments

Comments
 (0)