Skip to content

v0.4.0: 6 new SLICOT wrappers, many fixes, and much clean-up

Compare
Choose a tag to compare
@roryyorke roryyorke released this 30 May 02:51
· 206 commits to master since this release
ac0944b

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