v0.4.0: 6 new SLICOT wrappers, many fixes, and much clean-up
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