Skip to main content

Highly efficient computation of fully normalized associated Legendre functions using the Belikov algorithm.

Project description

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).

Project details


Download files

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

Source Distribution

pybelikov-0.1.0.tar.gz (4.5 kB view details)

Uploaded Source

Built Distribution

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

pybelikov-0.1.0-py3-none-any.whl (4.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pybelikov-0.1.0.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for pybelikov-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a682b2e8c1280559773588598ea29272d73108a3e098db5c02b1efab5f526333
MD5 c1b9dacc0aeb6561aa13fde40b457865
BLAKE2b-256 d73db5104c5c395e06c775c258ad55dde362eddbc798cce56f5e48d130b1d62d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pybelikov-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 4.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for pybelikov-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b9225a8a02d1a9c5a0b12969719392ee7b104fedec945fd700df1069b5565630
MD5 c70ae956f8b03a6d5edb633fd6bf474d
BLAKE2b-256 15b57a5c21e99fa64956e1c52b81b9e630f2eca1becce2e8d2c92614ee30b3cc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page