Metadata-Version: 2.4
Name: slicot
Version: 1.0.7
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
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: 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"
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.

**Compatible agents:** Claude Code, Codex, GitHub Copilot, Cursor, and other [Agent Skills](https://agentskills.io)-compatible tools.

This package includes agent skills for common control theory tasks like PID loop tuning and system analysis.

## 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

BSD-3-Clause. See [LICENSE](LICENSE).
