Metadata-Version: 2.4
Name: slicot
Version: 1.0.12
Summary: Python bindings for SLICOT - Subroutine Library in Control Theory
Keywords: control,systems,linear,lapack,blas,riccati,lyapunov
Author: SLICOT Contributors
License-Expression: BSD-3-Clause
License-File: LICENSE
License-File: LICENSE-SLICOT
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: C
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Mathematics
Project-URL: Homepage, https://github.com/jamestjsp/slicot
Project-URL: Documentation, https://slicot.readthedocs.io/
Project-URL: Repository, https://github.com/jamestjsp/slicot
Project-URL: Issues, https://github.com/jamestjsp/slicot/issues
Requires-Python: >=3.11
Requires-Dist: numpy>=2.0
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-xdist; extra == "test"
Requires-Dist: pytest-rerunfailures; extra == "test"
Requires-Dist: scipy; extra == "test"
Provides-Extra: benchmark
Requires-Dist: pytest-benchmark>=4.0; extra == "benchmark"
Provides-Extra: dev
Requires-Dist: meson-python>=0.16.0; extra == "dev"
Requires-Dist: meson>=1.1.0; extra == "dev"
Requires-Dist: ninja; extra == "dev"
Requires-Dist: numpy>=2.0; extra == "dev"
Requires-Dist: scipy-openblas32; extra == "dev"
Description-Content-Type: text/markdown

# SLICOT

[![PyPI version](https://img.shields.io/pypi/v/slicot)](https://pypi.org/project/slicot/)
[![Build Status](https://github.com/jamestjsp/slicot/actions/workflows/test.yml/badge.svg)](https://github.com/jamestjsp/slicot/actions)
[![License: BSD-3-Clause](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](LICENSE)

Python bindings for **SLICOT** (Subroutine Library In COntrol Theory) - numerical routines for control systems analysis and design. This is a low-level API primarily targeting AI agents and higher-level libraries.

## Installation

```bash
pip install slicot
```

## Features

- **600+ routines** for control systems
- **State-space methods**: Riccati, Lyapunov, pole placement
- **Model reduction**: Balance & Truncate, Hankel-norm
- **System identification**: MOESP, N4SID
- **NumPy integration**: Column-major arrays

## Usage

While you can use this library directly, it's recommended to access it through AI coding agents that understand control theory conventions and SLICOT's API patterns.

For agent skills (Claude Code, Cursor, etc.), see [control-skills](https://github.com/jamestjsp/control-skills).

## Quick Start

```python
import numpy as np
import slicot

# Controllability analysis
A = np.array([[1, 2], [3, 4]], order='F')
B = np.array([[1], [0]], order='F')

a_out, b_out, ncont, z, tau, info = slicot.ab01md('I', A, B.flatten(), 0.0)
print(f"Controllable dimension: {ncont}")
```

## Column-Major Arrays

SLICOT uses Fortran conventions:

```python
A = np.array([[1, 2], [3, 4]], order='F')  # Required!
```

## Contributions

I don't accept direct contributions. Issues and PRs are welcome for illustration, but won't be merged directly. An AI agent reviews submissions and independently decides whether/how to address them. Bug reports appreciated.

## License

This project (C11 translation and Python bindings) is BSD-3-Clause. See [LICENSE](LICENSE).

The original SLICOT library is copyright © 1996-2025 The SLICOT Team, maintained by [NICONET e.V.](https://www.slicot.org/), and licensed under BSD-3-Clause. See [LICENSE-SLICOT](LICENSE-SLICOT).
