Skip to content

Releases: python-control/Slycot

v0.6.0

05 Apr 14:01
88bf721
Compare
Choose a tag to compare

Almost a year has passed since the last version. We feel that it is time to forge the changes accumulated during the past months into a new release.

Slycot 0.6.0 supports Python 3.10 through 3.12

New and updated wrappers

Maintenance and upkeep improvements

New Contributors

Full Changelog: v0.5.4...v0.6.0

v0.5.4

27 Apr 19:46
294eae0
Compare
Choose a tag to compare

This release updates the build system to be compatible with scikit-build 0.17. We also updated the SLICOT Fortran sources to 5.8 Update 1.

Relevant changes from the SLICOT 5.8 Update 1 release notes

MB03VY: Set A( ILO, ILO, J ) to 1 if IHI = ILO in the loop labelled 20.

What's Changed

Full Changelog: v0.5.3...v0.5.4

v0.5.3

21 Dec 09:27
b72e6a9
Compare
Choose a tag to compare

Highlights and important notes

This patch release updates the build system to be compatible with NumPy 1.24.0

Pull requests and issues associated with the release

PRs merged: #185 #188 #189
Issues fixed: #187

Full Changelog: v0.5.2...v0.5.3

v0.5.2: Drop Support for Python 3.7

23 Nov 20:16
5aa67fc
Compare
Choose a tag to compare

Highlights and important notes

This patch release removes the classifier metadata for Python 3.7. With the Slycot v0.5.1 release earlier today, conda-forge did not create packages for py37. We do not want to mislead users into thinking that you can install it with conda.

Slycot currently officially supports installation on Python 3.8 through 3.11.

Pull requests and issues associated with the release

PRs merged: #184
Issues fixed: None
Issues closed ("wont-fix"): None

Full Changelog: v0.5.1...v0.5.2

v0.5.1: Changes in the build system

23 Nov 11:34
d891ed3
Compare
Choose a tag to compare

Highlights and important notes

This release is a minor change in the build system. There are no new wrappers or code changes of existing SLICOT wrappers.

Build

  • Use FindPython instead of deprecated FindPythonLibs by @bnavigator in #181
  • Use setuptools_scm instead of custom version determination code by @bnavigator in #180

Other changes

Pull requests and issues associated with the release

  • PRs merged: #180, #181, #182
  • Issues fixed: #183
  • Issues closed ("wont-fix"): none

Full Changelog: v0.5.0...v0.5.1

v0.5.0

09 Jul 10:46
e162b5f
Compare
Choose a tag to compare

Highlights and important notes

We've switched our Fortran SLICOT base from the older, GPL-licensed version 5.0 to the now BSD-licensed version of SLICOT hosted on Github. This specific version of Slycot is based on SLICOT v5.8.

Slycot itself remains GPL-licensed for the time being.

The minimum supported Python version is 3.7; support for Python 2, 3.5, and 3.6 has been dropped. We have tested this release against Python versions 3.7 to 3.10.

Slycot does not build against Numpy v1.23.0 due to numpy/numpy#21889; however, this is a build-time only bug which was fixed in NumPy v1.23.1, and Slycot v0.5.0 can be installed and used with any NumPy which supports the supported Python versions.

New features and updates

We've added a wrapper for SLICOT AB13MD (#171), which computes the upper bound for the structured singular value of a system and given uncertainty structure.

SB03OD used to raise an error if the Schur factor supplied in array A was unstable; now, a warning is raised, and the eigenvalues are still returned (via #176, which updates to SLICOT v5.8).

Fixes

MB03RD correctly handles X=None, the default (#139).

In SB03MD, the LDWORK value computed for discrete-time case was corrected (#166).

Build

There have been improvements and fixes to the setup.py, CMakeLists.txt, and MANIFEST.in.

Testing

AG08BD testing was made more numerically robust.

A test for XERBLA behaviour was fixed.

In continuous integration:

  • we've moved from Travis CI to Github Action for continuous
    integration (Github Actions added in #140, Travis CI removed in #150)

  • we use pip for building, instead of invoking setup.py directly

Pull requests and issues associated with the release

PRs merged: #135, #136, #139, #140, #141, #142, #145, #147, #149, #150, #151, #152, #158, #159, #160, #161, #166, #167, #171, #173, #174, #175, #176, #178

Issues fixed: #134, #138, #95, #108, #137, #144, #146, #154, #123, #156, #157, #162, #155, #165, #46, #163, #172

Issues closed ("wont-fix"): none

Contributors

Contributors to this release are:

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

30 May 02:51
ac0944b
Compare
Choose a tag to compare

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

v0.3.5: fix PyPI installability

23 Jun 19:03
Compare
Choose a tag to compare

This is a build bug-fix release: v0.3.4 was not installable from pip, but v0.3.5 should be.

Build

Jason K. Moore, Joris Geysens, and Jake Vanderplas all made various fixes to the build, from setup.py the CMake config files.

Pull requests and issues associated with the release

PRs merged: #58, #60, #62, #64, #66, #67
Issues fixed: #59, #61, #63, #65, #68

0.3.4: added ag08bd, sb10jd, tg01ad, and tg01fd; switched to scikit-build.

03 May 06:02
873bc88
Compare
Choose a tag to compare

New features

Support for four SLICOT routines was added by Marcus Liljedahl.

ag08bd Process system pencil to find multivariable zeros

ag08bd takes a system pencil (E,A,B,C,D) and returns a matrix pair (Af, Ef) which can be used to find the finite multivariable ("Smith") zeros. The orders of infinite zeros, right and left Kronecker indices, and multiplicities of infinite eigenvalues are also returned.

sb10jd Convert descriptor to non-descriptor form

sb10jd converts a descriptor state-space system (E,A,B,C,D) to a regular state-space system (Ad, Bd, Cd, Dd).

tg01ad Balance system pencil

tg01ad balances system pencils (E,A,B,C,D), with D=0, such that the rows and columns of the resulting pencil are as close in norm as possible.

tg01fd SVD-like coordinate form of system pencil

tg01fd finds the orthogonal transformation matrices for a system pencil (E,A,B,C,D), with D=0, such that the result is in SVD-like coordinate form.

Build

Rene van Paassen switched the build over to scikit-build, which allows for flang to be used to build SLICOT on Windows, and improves the build output for developers.

Testing

Python 3.7 was added to the Travis CI build set.

The tests no longer use the deprecated np.matrix type.

Added a regression test for #6, for td04ad.

Pull requests and issues associated with the release

PRs merged: #32, #34, #36, #38, #43, #45, #51, #52, #53, #56, #57
Issues fixed: #35, #37, #47, #55
Issues closed ("wont-fix"): #40, #41, #48

REL: Version 0.3.3 with working conda build + TD04AD fixes

30 Jun 14:01
bf4765d
Compare
Choose a tag to compare

This release of the Slycot library contains a working conda build process plus fixes to the TD04AD function (including fixes issues with edge cases). The README.rst file has also been updated to reflect the current build process. See PR #26, PR #27 (based on PR #25), and PR #28 for details.

Note: the current Travis CI build process intermittently fails due to issues in python-control (to be corrected in the next release of that package).