Skip to main content

pybelikov

A Python module for the high-precision computation of Fully Normalized Associated Legendre Functions (fnALFs) using the Belikov recurrence algorithm.

Why pybelikov?

Standard recursive algorithms for Legendre functions often suffer from numerical instability (underflow/overflow) at high degrees ($n > 2000$) and can be computationally slow.

pybelikov implements the stable recurrence methods originally derived by Belikov, using the formulation and evaluation presented by Lei & Li (2016). This implementation is optimized for modern Python environments and offers two execution modes:

  1. JIT Mode (Default): Uses numba to compile the recursion into machine code.
    • ~38x faster than standard iterative loop implementations.
    • ~25% faster than optimized vectorized NumPy code.
  2. Vectorized Mode: A pure NumPy implementation that utilizes array broadcasting.
    • ~30x faster than standard iterative loop implementations.

Benchmarks performed on N=2190 (EGM2008 standard).

Installation

pip install pybelikov

Usage

import numpy as np
from pybelikov import compute_fnALF

# Define parameters
degree = 2190
colat_rad = np.deg2rad(45.0)  # Colatitude in radians

# Compute using the fastest method (JIT)
P_nm = compute_fnALF(N=degree, theta=colat_rad, method='jit')

# Access a specific value P(n=2, m=2)
print(f"P_2,2 = {P_nm[2, 2]}")

References

The algorithm implemented in this package is based on the evaluation and formulation described in:

Lei, W., & Li, K. (2016). Evaluating Applicability of Four Recursive Algorithms for Computation of the Fully Normalized Associated Legendre Functions. Journal of Applied Geodesy, 10(4). https://doi.org/10.1515/jag-2016-0032

Citing pybelikov

If you use pybelikov in your research, please credit the software. A CITATION.cff file is included in this repository for compatibility with reference managers.

Software Citation:

Kellmayer, B. (2025). pybelikov: High-precision computation of fully normalized associated Legendre functions. https://github.com/bkellmayer6/pybelikov

Algorithm Citation:

Lei, W., & Li, K. (2016). Evaluating Applicability of Four Recursive Algorithms for Computation of the Fully Normalized Associated Legendre Functions. Journal of Applied Geodesy, 10(4).

Metadata

Release files for pybelikov 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 pybelikov 0.1.0
File Size Uploaded
pybelikov-0.1.0.tar.gz 4.5 kB Details

Built distribution (wheel)

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

Total release size: 8.6 kB

Release files / pybelikov-0.1.0.tar.gz

Download URL pybelikov-0.1.0.tar.gz
Size 4.5 kB
Tags Source
SHA-256 checksum
How to use checksums
a682b2e8c1280559773588598ea29272d73108a3e098db5c02b1efab5f526333
BLAKE2b-256 checksum
How to use checksums
d73db5104c5c395e06c775c258ad55dde362eddbc798cce56f5e48d130b1d62d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.2

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

Download URL pybelikov-0.1.0-py3-none-any.whl
Size 4.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b9225a8a02d1a9c5a0b12969719392ee7b104fedec945fd700df1069b5565630
BLAKE2b-256 checksum
How to use checksums
15b57a5c21e99fa64956e1c52b81b9e630f2eca1becce2e8d2c92614ee30b3cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.2

Release history Release notifications | RSS feed

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