Skip to main content

chebax

Differentiable special functions for JAX and GPUs, built from Chebyshev approximants. A build-time generator (mpmath precision) produces fixed-degree branchless polynomial kernels with exact derivative series — including gradients with respect to function parameters (Bessel order, Beta shape, von Mises concentration), which mainstream ML libraries lack. No mpmath at use time; the runtime imports only jax and numpy.

pip install chebax
import jax
jax.config.update("jax_enable_x64", True)   # before building instances: tables
                                            # materialize in the active precision
import jax.numpy as jnp
import chebax

jv = chebax.besselj(2.5)                    # any real order in [0, 10]; cached
x = jnp.linspace(0.1, 30.0, 200)
jv(x), jax.vmap(jax.grad(jv))(x)            # values and dJ/dx, jit/vmap-safe

chebax.besselk_fn(1.7, x)                   # order as a traced scalar:
jax.grad(chebax.besselk_fn)(1.7, 5.0)       #   jax.grad w.r.t. the ORDER
chebax.betainc_fn(2.0, 3.0, 0.4)            # dI/da, dI/db via jax.grad (jax#38610)
chebax.betaincinv(2.0, 3.0, 0.05)           # differentiable Beta quantile (jax#2399)

What's in

family factory traced params param derivative notes
besselj besselj(v) besselj_dnu(v) x ≥ 0, validated to 1e4
bessely bessely(v) — (structural) bessely_dnu(v) x ≥ 1e-6
besseli besseli(v, scaled=) besseli_fn besseli_dnu(v, scaled=) scaled = scipy's ive
besselk besselk(v) besselk_fn, log_besselk_fn besselk_dnu(v) x ≥ 1e-6; Matérn demo; the log form has no underflow ceiling
betainc betainc(a, b) betainc_fn via grad of _fn (a, b) ∈ [0.1, 10]²
spherical spherical_jn/yn(n) n ∈ [0, 9], via half-integer tables
quantiles betaincinv, gammaincinv, stdtr, stdtrit via grad (IFT) jax#2399/#5350/#20358
von Mises vonmises_cdf/icdf via grad κ ∈ [0, 50]
erf family dawsn, erfcx — (no params) recent jax ships both; kept for the C++ bake path
Lambert W lambertw(x, k) both real branches, jax#13680

Plus the generic core (fit, ChebSeries, PiecewiseCheb) and bake emitters (chebax.bake.jax_module, chebax.bake.xsf_header: self-contained pure-jax modules and C++17 headers from an instance).

notebooks/ holds themed, executed walkthroughs: why Chebyshev nodes work, the Bessel family with a learnable Matérn kernel, differentiable quantiles, truncated and circular distributions in numpyro, Gaussian tails / Lambert W / binomial reliability, copulas, and baking. The numpyro and plotting dependencies install with pip install chebax[examples]. examples/ holds plain scripts: a few of the notebook workflows in copy-paste form, plus integration examples with no notebook counterpart (a GIG distribution for efax, learned Matérn smoothness, truncated sampling).

Parameters come first, evaluation point last (opposite of scipy). Orders/shapes are uniform per call; per-element parameter arrays are out of scope by design. Accuracy is validated against mpmath at 40 dps — measured worst cases and the per-family error metrics are in each test file's docstring; tables regenerate bit-for-bit from checked-in generators.

Docs

docs/adding-a-recipe.md is the workflow for new functions; docs/increments.md the design log of every recipe (what was measured, which traps were found); PROJECT.md the plan and evidence; CLAUDE.md how to work in the repo. Grown out of a private research project on GPU Bessel functions; its two load-bearing measurements are reproduced here in experiments/. BSD-3-Clause.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chebax-0.1.0.tar.gz (1.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chebax-0.1.0-py3-none-any.whl (1.1 MB view details)

Uploaded Python 3

File details

Details for the file chebax-0.1.0.tar.gz.

File metadata

  • Download URL: chebax-0.1.0.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for chebax-0.1.0.tar.gz
Algorithm Hash digest
SHA256 102fe16adf50f09575a563a0143e1a91337236f97ce61c2233f5c9a9ee569487
MD5 a8f7d5bcddab7878815889249a741b00
BLAKE2b-256 056676c4525620e2b26fc4144151410d16c98cafb6d3be6c4378f99032673964

See more details on using hashes here.

File details

Details for the file chebax-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: chebax-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for chebax-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5a16d4043a7e11983f8935b2898cdc0d2a19035536afadca794ce2f77e621018
MD5 88936259394a78aadf279a13773ce8ab
BLAKE2b-256 38fe1ce5bea9d8f979f2492c9ccbb9d1de860c6e9625dac41c21d6c5c563db71

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.0

2 files

0.2.0

2 files

This release

0.1.0 This release

2 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