Alpha special-function wrappers with explicit certification diagnostics.
Project description
certsf
certsf provides alpha special-function wrappers with explicit certification
diagnostics and, where available, rigorous Arb ball enclosures through
python-flint.
The public API is intentionally small: every function returns an SFResult
object with the computed value, backend metadata, certification status, optional
error bounds, and diagnostics explaining how the result was produced.
The certification scope lives in docs/certification.md;
the scope-by-scope audit lives in
docs/certification_audit.md;
the 0.1.0 certified support matrix lives in
docs/certified_scope_0_1_0.md, and the formula
audit trail lives in docs/formula_audit.md. Release
claim wording is guarded by docs/release_claims.md.
Installation
From PyPI:
python -m pip install certsf
For certified Arb-backed mode:
python -m pip install "certsf[certified]"
For MCP tooling plus certified mode:
python -m pip install "certsf[mcp,certified]"
Prerelease versions such as 0.1.0a3 require --pre unless installing an exact
version, for example certsf==0.1.0a3.
For local development:
python -m pip install -e ".[dev]"
For runtime use without optional MCP tooling:
python -m pip install -e ".[certified]"
The base package depends on scipy and mpmath. Certified mode additionally
requires python-flint.
Quick Start
from certsf import gamma, besselj, pcfu
g = gamma("3.2", dps=50, mode="certified")
j = besselj("2.5", "4.0+1.25j", dps=60, mode="certified")
u = pcfu("2.5", "1.25", dps=60, mode="certified")
print(g.value)
print(g.abs_error_bound)
print(g.certified)
print(g.backend)
print(g.diagnostics)
For a plain numerical value, use mode="fast" or mode="high_precision":
from certsf import airy
result = airy("1.0", dps=80, mode="high_precision")
print(result.value)
Result Object
Every wrapper returns an SFResult with these fields:
value: string value, or a JSON string for multi-component results.abs_error_bound: rigorous absolute error bound when certified.rel_error_bound: rigorous relative error bound when available.certified:Trueonly when a rigorous enclosure was produced.function: canonical function name.method: implementation method, such asscipy.special,mpmath, orarb_ball.backend: backend package name.requested_dps: requested decimal precision.working_dps: internal decimal precision estimate.diagnostics: structured details about mode, domain, formula, and scope.
Unsupported certified domains return a clean non-certified result with
value="", certified=False, and an explanatory diagnostics error. They do not
silently fall back to mpmath and call the value certified.
Certified successes also expose diagnostics["certificate_level"],
diagnostics["audit_status"], and diagnostics["certification_claim"], so
callers can distinguish direct Arb primitive wrappers from formula-backed
experimental claims.
Choosing a Mode
mode="fast"usesscipy.special; it is quick and non-certified.mode="high_precision"usesmpmath; it supports higher precision and complex arguments, but is still non-certified.mode="certified"usespython-flint/ Arb when a validated enclosure path exists.mode="auto"chooses certified mode whencertify=True, otherwise fast mode fordps <= 15and high-precision mode for largerdpsrequests.
Fast mode is double precision. If you request more than 15 digits while forcing
mode="fast", the result reports working_dps=16 and includes a diagnostic
warning that the requested digits are not guaranteed.
Use mode="certified" when the error bound matters. Use high_precision when
you need more digits but not a rigorous certificate.
The dispatcher uses an explicit MethodSpec registry for every concrete mode.
Each registered method records its backend, callable, certification intent,
domain note, and certificate scope. Adding a public wrapper requires registering
its SciPy, mpmath, and Arb methods together; tests verify the registry, public
API, and MCP tool list stay in sync.
Supported Functions
The 0.1.0 public certified surface is frozen. No additional public special-function wrappers are included in 0.1.0; the release work remains focused on audit, validation, packaging, and documentation.
| Area | Release status |
|---|---|
gamma, loggamma, rgamma |
alpha-certified, direct Arb primitive |
airy, ai, bi |
alpha-certified, direct Arb primitive |
besselj, bessely, besseli, besselk |
alpha-certified where direct Arb primitive works; real-valued order only |
pcfd, pcfu, pcfv, pcfw, pbdv |
experimental certified formula layer |
| MCP server | experimental tool interface |
| Custom Taylor/asymptotic methods | not yet |
from certsf import (
gamma,
loggamma,
rgamma,
airy,
ai,
bi,
besselj,
bessely,
besseli,
besselk,
pbdv,
pcfd,
pcfu,
pcfv,
pcfw,
)
Gamma Family
gamma(z)loggamma(z), using the principal branchrgamma(z) = 1 / gamma(z)
rgamma is the safest wrapper near non-positive integer gamma poles. In
certified mode, rgamma returns a rigorous zero at poles, while gamma and
loggamma return clean non-certified failures when the requested value is not
finite.
Airy Family
airy(z)returns Ai, Ai', Bi, and Bi' in one JSON payload.ai(z, derivative=0)andai(z, derivative=1).bi(z, derivative=0)andbi(z, derivative=1).
Certified Airy wrappers use Arb ball arithmetic and report component-level absolute and relative error bounds.
Bessel Family
besselj(v, z)for (J_v(z))bessely(v, z)for (Y_v(z))besseli(v, z)for (I_v(z))besselk(v, z)for (K_v(z))
Certified Bessel wrappers support real-valued order and real or complex arguments. Complex order is outside the certified scope and returns a clean non-certified failure.
Parabolic-Cylinder Family
pbdv(v, x)returns (D_v(x)) and (D_v'(x)) in one JSON payload.pcfd(v, z)returns (D_v(z)).pcfu(a, z)returns (U(a,z)).pcfv(a, z)returns (V(a,z)).pcfw(a, x)returns (W(a,x)).
Certified pcfu, pcfd, pbdv, and pcfv support real parameters and real
or complex arguments. Certified pcfw currently supports real parameters and
real arguments; complex arguments return a clean non-certified failure until a
validated complex-domain target is selected.
For pbdv, the argument name x follows SciPy's real-variable naming, but the
certified formula layer intentionally accepts complex arguments for the
D_v(x) value and derivative pair. Use pcfd(v, z) when only the complex
D_v(z) value is needed.
The parabolic-cylinder family is an experimental certified formula layer: Arb encloses the implemented documented formula, while formula/domain audit remains visible before broadening the claim.
Multi-Component Values
Functions such as airy and pbdv keep backward-compatible JSON strings in
SFResult.value, and provide helpers for Python callers:
from certsf import pbdv
result = pbdv("2.5", "1.25", dps=60, mode="certified")
values = result.value_as_dict()
bounds = result.abs_error_bound_as_dict()
print(values["value"])
print(values["derivative"])
print(bounds["value"])
print(bounds["derivative"])
print(result.component("value"))
MCP Wrapper
certsf.mcp_server exposes thin MCP-facing wrappers around the same public API.
MCP payloads decode multi-component values and bounds as nested JSON objects
instead of JSON-encoded strings.
Install the optional MCP dependency before running the server:
python -m pip install -e ".[mcp,certified]"
python -m certsf.mcp_server
Development
Run the test suite with:
python -m pytest
The tests exercise the SciPy, mpmath, and Arb-backed paths when the optional dependencies are installed.
The repository also includes:
docs/release_checklist.mdfor prerelease/release verification.docs/release_claims.mdfor conservative alpha release claim wording.docs/certification_audit.mdfor scope-level certification evidence and remaining audit gates.docs/audit/for family-level certification checklists.docs/certified_scope_0_1_0.mdfor the frozen 0.1.0 certified support matrix.docs/release-0.1.0.mdfor conservative 0.1.0 release notes and example commands.docs/release-0.1.0-alpha.2.mdfor the v0.1.0-alpha.2 planning notes.examples/basic_usage.pyfor a short end-to-end usage example.examples/certified_vs_high_precision.pyfor a compact comparison of high-precision and certified result diagnostics.examples/gamma_certified.py,examples/airy_components.py,examples/bessel_complex.py,examples/pcf_experimental.py, andexamples/mcp_payload.pyfor payload-first release examples.benchmarks/bench_gamma.py,benchmarks/bench_airy.py,benchmarks/bench_bessel.py, andbenchmarks/bench_pcf.pyfor lightweight JSON-lines timing smoke benchmarks.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file certsf-0.1.0.tar.gz.
File metadata
- Download URL: certsf-0.1.0.tar.gz
- Upload date:
- Size: 61.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ffafe64ce3dff6651eb5c417db617fc929f1902b5f4eebbe9c96cfa429b52f0
|
|
| MD5 |
a3e311b05f027c08d3352cd5937445b5
|
|
| BLAKE2b-256 |
bdf45cd417f644d2ee18981a0b2b5b50f585779c455a88dc43a9fc2bcaa51db6
|
Provenance
The following attestation bundles were made for certsf-0.1.0.tar.gz:
Publisher:
publish-pypi.yml on yutianlee/certsf
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
certsf-0.1.0.tar.gz -
Subject digest:
8ffafe64ce3dff6651eb5c417db617fc929f1902b5f4eebbe9c96cfa429b52f0 - Sigstore transparency entry: 1471257049
- Sigstore integration time:
-
Permalink:
yutianlee/certsf@f444c3d97e36317236e11720a148468f8ff4e667 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/yutianlee
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@f444c3d97e36317236e11720a148468f8ff4e667 -
Trigger Event:
release
-
Statement type:
File details
Details for the file certsf-0.1.0-py3-none-any.whl.
File metadata
- Download URL: certsf-0.1.0-py3-none-any.whl
- Upload date:
- Size: 22.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
153990947a1aeac44060ac612718dc43ad436821a89a1812846965465287231d
|
|
| MD5 |
6a87d7ce6bd43eca6188794721a78502
|
|
| BLAKE2b-256 |
4b71e3567996fe7d6c305516c05f73c4576a5e6428490ed30d48933fe4784278
|
Provenance
The following attestation bundles were made for certsf-0.1.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on yutianlee/certsf
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
certsf-0.1.0-py3-none-any.whl -
Subject digest:
153990947a1aeac44060ac612718dc43ad436821a89a1812846965465287231d - Sigstore transparency entry: 1471257176
- Sigstore integration time:
-
Permalink:
yutianlee/certsf@f444c3d97e36317236e11720a148468f8ff4e667 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/yutianlee
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@f444c3d97e36317236e11720a148468f8ff4e667 -
Trigger Event:
release
-
Statement type: