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-control367.
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-control347 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