About
PyTorch extension package for modified Bessel functions of the second kind with complex inputs
Install
Currently only supports Linux (with CUDA 12.4) or MacOS (Apple silicon, cpu only) with python >= 3.9, <= 3.12.
pip install torch-bessel
UPDATE (May 26, 2026): It seems the package might no longer be compatible with the latest pytorch version (>= 2.12.0), so try installing an earlier version of pytorch if you encounter issues.
UPDATE (May 28, 2026): On Apple silicon, importing this package with pytorch version >= 2.9.0 causes a crash (bus error: 10) when exiting a python program, though the program runs normally prior to that. So consider installing torch < 2.9.0 on Apple silicon.
Example
import torch_bessel
real, imag = torch.randn(2, 5, device="cuda")
z = torch.complex(real.abs(), imag) # correctness for inputs in the left-half complex plane is not gauranteed.
torch_bessel.ops.modified_bessel_k0(z)
Implemented functions
modified_bessel_k0: Same astorch.special.modified_bessel_k0, but also handles backpropagation and complex inputs on cpu and cuda. Correctness is guaranteed on the right-half complex plane. On cuda,torch.chalfinputs are also supported, though the underlying cuda kernel just upcastschalftocfloat(note that this uses no extra GPU memory, as opposed to manually casting torch.chalf to torch.cfloat before callingmodified_bessel_k0which doubles the GPU memory used). On the left-half complex plane, function output appears mostly correct, but with small numerical errors for certain inputs. On the negative real line, output is NaN.modified_bessel_k1: Same astorch.special.modified_bessel_k1, but also handles complex inputs on cpu and cuda. Backpropagation not implemented, but this can be easily manually implemented yourself by writing a torch.autograd.Function using the recurrence properties of bessel functions. Same caveats asmodified_bessel_k0apply.
WIP
modified_bessel_kv: Analogue ofscipy.special.kv.
Benchmarks
Benchmarking performed with the asv package. Results can be viewed at https://hchau630.github.io/torch-bessel.
Release files for torch-bessel 0.0.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| torch_bessel-0.0.9.tar.gz | 9.7 kB | Details |
Release files / torch_bessel-0.0.9.tar.gz
| Download URL | torch_bessel-0.0.9.tar.gz |
|---|---|
| Size | 9.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
276c70ab85cd29f497f84f0fc34a5b79f21d81d9db84c050e8b3091869feb73f
|
|
BLAKE2b-256 checksum How to use checksums |
9181a20a51899a5e2fcd1f11f79c21ff818acb94fd283e3760d902a51ee83b99
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 20, 2026.
Transparency log