Metadata-Version: 2.2
Name: apxchol
Version: 0.1.0
Summary: CPU approximate-Cholesky preconditioner for graph-Laplacian / SDDM linear systems
License: Academic Evaluation License (interim)
         
         Copyright (c) 2026 ETH Zürich and the apxchol contributors.
         All rights reserved.
         
         This software is provided free of charge for academic research and
         evaluation purposes only. Redistribution, sublicensing, or commercial
         use, in source or binary form, is prohibited without prior written
         permission from the copyright holders.
         
         THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
         OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
         IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
         CLAIM, DAMAGES OR OTHER LIABILITY ARISING FROM THE USE OF THE SOFTWARE.
         
         This is an interim license intended to enable early access while a
         final license is selected; it may be replaced in a future release.
         
Requires-Python: >=3.10
Requires-Dist: numpy>=1.21
Requires-Dist: scipy>=1.7
Provides-Extra: test
Requires-Dist: pytest>=7; extra == "test"
Description-Content-Type: text/markdown

# apxchol (Python, CPU)

Approximate-Cholesky preconditioner for graph-Laplacian / SDDM linear systems.

```python
import apxchol

solver = apxchol.solver(A)              # scipy sparse SPD Laplacian or SDDM; factor once
res = solver.solve(b, tol=1e-8, maxiter=500)
res.x, res.iters, res.residual, res.converged

z = solver.apply(r)                     # M^{-1} r
M = solver.aslinearoperator()           # use as M= in scipy.sparse.linalg.cg

res = apxchol.solve(A, b)               # one-shot convenience
```

## Dev install (until a wheel is published)

The extension compiles two large TUs with `-O3 -march=native`; expect a minute or two.

```bash
# Build isolation provisions pybind11 + scikit-build-core automatically;
# editable keeps the source tree in place so the build reaches ../src, ../include.
pip install -e python
pytest python/tests -v
```

If your environment requires `--no-build-isolation`, install the build deps into the
active env first: `pip install pybind11 scikit-build-core` (numpy/scipy are pulled in
as runtime deps), then `pip install -e python --no-build-isolation`.

CPU only. GPU, tuning parameters, and 64-bit indices are not exposed in this version.
