Skip to main content

spexial

scipy.special in JAX

PyPI version PyPI platforms Actions Status codecov Documentation

spexial provides special functions for JAX, following the scipy.special API. The implementations are written in terms of JAX primitives, so they compose with jit, grad and vmap, and run on CPU, GPU and TPU.

It exists to fill gaps in jax.scipy.special: zeta accepts negative integers where JAX returns nan, spence accepts complex arguments where JAX is real-only, and the modified Bessel K, Gegenbauer and polylogarithm functions have no JAX counterpart at any version. Where SciPy already covers a case, spexial matches it rather than claiming to exceed it.

Installation

pip install spexial

or

uv add spexial

Example

>>> import jax
>>> jax.config.update("jax_enable_x64", True)

>>> import jax.numpy as jnp
>>> import spexial as sp

>>> # Gegenbauer polynomial C_n^alpha(x), matching scipy.special.eval_gegenbauer
>>> sp.eval_gegenbauer(3, 0.5, 0.25)
Array(-0.3359375, dtype=float64, weak_type=True)

Everything is vectorisable and differentiable in the usual way:

>>> xs = jnp.linspace(-1.0, 1.0, 5)
>>> jax.vmap(lambda x: sp.eval_gegenbauer(3, 0.5, x))(xs)
Array([-1.    ,  0.4375, -0.    , -0.4375,  1.    ], dtype=float64)

What is here

Function scipy.special counterpart
comb comb (the exact=False variant)
gamma gamma — JAX's value, plus an analytic derivative
eval_gegenbauer eval_gegenbauer
eval_gegenbauers -- returns every order up to n
K0, K1, K2 k0, k1, kn
K0e, K1e, K2e k0e, k1e, kve — scaled by e^z, no upper limit
Li -- the polylogarithm
spence spence — complex too, which JAX rejects
zeta zeta — negative integers, which JAX gives as nan

Read Accuracy and domains before relying on any of these. It records, per function, the domain each is tested over and the tolerance it actually meets. Some are not machine-precision — the modified Bessel functions are accurate to about 1e-7, and zeta does not implement the critical strip.

Documentation

https://jaxtronomy.github.io/spexial

Development

We welcome contributions! See CONTRIBUTING.md.

uv sync --group dev
uv run nox -s all      # lint -> test -> docs

Citation

If you use spexial in work you publish, please cite it — see CITATION.cff. Several routines originate in the LINX code.

License

MIT. See LICENSE.

Metadata

Release files for spexial 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for spexial 0.1.0
File Size Uploaded
spexial-0.1.0.tar.gz 165.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for spexial 0.1.0
File Interpreter ABI Platform
spexial-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 228.9 kB

Release files / spexial-0.1.0.tar.gz

Download URL spexial-0.1.0.tar.gz
Size 165.3 kB
Tags Source
SHA-256 checksum
How to use checksums
accce64087c7d86b1f7f407c348445e871db3b3861bce49a4ceed7bc8610ea73
BLAKE2b-256 checksum
How to use checksums
2a51edaacadcca4a7e4429004d5049089758d350c8546738365769d5f5b345ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.

Transparency log

Release files / spexial-0.1.0-py3-none-any.whl

Download URL spexial-0.1.0-py3-none-any.whl
Size 63.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e00b772c0429737e2b6a6c9e694c00aa0a76e427840876981cc19e81233a913a
BLAKE2b-256 checksum
How to use checksums
842424f7dcd06d88fa8c30d9f4aefd495584b1a8f75c673cefa0ec3db830499c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.1

2 release files

0.2.0

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page