Hi,
Slycot 0.4.0 has been released. Source can be obtained directly from Github [1], or via pip from PyPI. Binaries for GNU/Linux,
Windows, macOS are available on conda-forge. Note that binaries are only available for 64-bit systems.
Release notes below.
Thanks to everyone who contributed!
Regards,
Rory
[1] https://github.com/python-control/Slycot/releases/tag/v0.4.0
Slycot 0.4.0 release notes (also at [1])
# New features
## Added periodic Schur decomposition functions `mb03vd`, `mb03vy`, and `mb03wd`
Contributed by @bnavigator via pull request #88.
## Added `ab08nz`, allowing one to find zeros of complex-valued state-space models
Contributed by @lytex and @bnavigator via pull request #96.
## Added `mb03rd`, Schur to block-diagonal transform
Contributed by @bnavigator and @repagh via pull request #116.
## Added `sb01fd` H-infinity solver
Contributed by @repagh via #118. Already present `sb10ad` searches for a minimum gamma value for a given H-infinity problem;
sb10fd, by contrast, only attempts to solve for a given gamma value. This can be used to test for admissible gamma values,
which could be useful for problems like python-control/python-control#367.
## New Slycot exception hierarchy
@bnavigator, with support from @repagh, greatly improved Slycot error handling.
Slycot routines now raise `SlycotValueError` where they would previously have raised `ValueError`, and `SlycotArithmeticError`
where they would have raised `ArithmeticError`.
These changes are backwardly compatible: `SlycotValueError` is a subclasss of `ValueError`, and `SlycotArithmeticError` is a
subclass of `ArithmeticError`.
As part of this, many of the Slycot function docstrings were changed to conform to numpydoc conventions.
This supersedes an earlier fix for python-control#347 made during 0.4.0 development.
## Override XERBLA
In #128, with extra testing in #130, @bnavigator overrode the BLAS error function `XERBLA` that SLICOT routines use to report
errors; the BLAS-provided `XERBLA` can terminate the whole Python process.
# Fixes
## Correct application of DGEBAL in TB01TD and TB05AD
@repagh fixed long-standing #11 with PR #122.
## Fixed ab01nd for jobz='N' case
@bnavigator contributed this fix in #129.
# Build
Contributed by @bnavigator, @repagh, and @rabraker:
- conda build recipes no longer use pip
- added conda recipes for MKL and Apple
- removed conda recipes for Windows; no developer is using them, and they weren't working
- general simplifications and improvements of build
- the signature files (`.pyf` files) are now a dependency of wrapper generation
# Testing
Contributed by @bnavigator and @lytex:
- Tests added for `mb05nd`, `mc01td`, `ab08nd`, `ab08nz`, `mb03vd`, `mb03vy`, `mb03wd`.
- Tests fixed or expanded for `mb05md`, `sg03ad`, `td04ad`.
- Switched to pytest; Slycot CI now uses pytest for both the Slycot and python-control test suites.
- CI now builds and tests for Linux and macOS. The Linux builds include OpenBLAS and MKL variants.
- Examples are run as part of tests. Outputs are not checked, but errors and warnings are.
- CI coveralls.io integration fixed.
- General test clean-up.
- Test files are no longer executable.
# Other changes
@bnavigator contributed many other code improvements:
- Fix for `mb05nd`.
- Lots of clean-up: removal of unused mathematical.pyf, many docstring fixes, and some PEP 8 conformance changes to Python
code.
- Fix for Fortran-compiler dependence on machine value used to represent logical values `.TRUE.` and `.FALSE.`
@repagh fired up his time machine and ensured punch-card compatibility of the SLICOT Fortran code by limiting line lengths to 72
characters.
# Pull requests and issues associated with the release
PRs merged: #71, #72, #75, #78, #91, #93, #79, #82, #83, #84, #87, #88, #96, #97, #101 , #103, #104, #105, #110, #114, #115,
#116, #117, #118, #120, #121, #122, #124, #125, #128, #129, #130, #132, #133
Issues fixed: #11, #76, #86, #44, #102, #106, #119, #126
Issues closed ("wont-fix"): #46, #94, #99, #111
|