Skip to main content

mlfp

mlfp: Mittag-Leffler and Prabhakar function, MLF, Mittag-Leffler and Prabhakar function evaluation: Mittag-Leffler ve Prabhakar fonksiyonlarının hesaplanması.


mlfp mlfp


Parameter validation tests

=======================================================

[OK] negative alpha → MittagLefflerError

[OK] zero alpha (|z| < 1) → kapalı form: E_{0,β}^γ(z) = (1-z)^{-γ}/Γ(β)

[OK] zero alpha (|z| ≥ 1) → MittagLefflerError (seri ıraksar)

[OK] nan alpha → MittagLefflerError

[OK] infinite beta → MittagLefflerError

[OK] zero gamma → MittagLefflerError

[OK] tolerance = 1 → MittagLefflerError

[OK] tolerance = 0 → MittagLefflerError

[OK] negative series_threshold → MittagLefflerError

[OK] zero max_series_terms → MittagLefflerError

[OK] complex z to call → MittagLefflerError

========================================================

Safe-limit overflow detection

====================================================================================================

[OK ] α=0.25, |z|=10.3 → MittagLefflerError (The Mittag-Leffler value is too large to represent in f…)

[OK ] α=0.5 , |z|=49 → MittagLefflerError (The Mittag-Leffler value is too large to represent in f…)

[OK ] α=1.0 , |z|=1.28e+03 → MittagLefflerError (The Mittag-Leffler value is too large to represent in f…)

[OK ] α=2.0 , |z|=9.07e+05 → MittagLefflerError (The Mittag-Leffler value is too large to represent in f…)

============================================================================

Numerical comparison: mlfp vs mpmath (ground truth) vs pymittagleffler

mlfp tolerance : 1.0e-13

mpmath digits : dynamic (>=50, up to 600)

pass criterion : relative error < 1e-09

=============================================================================

angle = 0.000000 rad (0.0°)


[OK ] α=0.25, β=0.5 | n= 13 | vs mpmath: max_abs=1.11e+190, max_rel=7.23e-14 | vs pymtl: max_rel=7.19e-14

angle = 0.785398 rad (45.0°)


[OK ] α=0.25, β=0.5 | n= 13 | vs mpmath: max_abs=3.40e-14, max_rel=3.40e-14 | vs pymtl: max_rel=3.41e-14

angle = 1.570796 rad (90.0°)


[OK ] α=0.25, β=0.5 | n= 13 | vs mpmath: max_abs=2.56e-14, max_rel=2.56e-14 | vs pymtl: max_rel=2.57e-14

angle = 2.356194 rad (135.0°)


[OK ] α=0.25, β=0.5 | n= 13 | vs mpmath: max_abs=2.23e-14, max_rel=2.23e-14 | vs pymtl: max_rel=2.25e-14

angle = 3.141593 rad (180.0°)


[OK ] α=0.25, β=0.5 | n= 13 | vs mpmath: max_abs=2.08e-14, max_rel=2.08e-14 | vs pymtl: max_rel=2.09e-14

angle = 3.926991 rad (225.0°)


[OK ] α=0.25, β=0.5 | n= 13 | vs mpmath: max_abs=2.11e-14, max_rel=2.11e-14 | vs pymtl: max_rel=2.13e-14

=====================================================================

Series vs OPC consistency (gamma = 1) — small |z|, both methods valid

=====================================================================

[OK ] α=0.5 , β=1.0 | max_abs=2.01e-13, max_rel=5.13e-14 [OK ] α=1.0 , β=1.5 | max_abs=3.65e-14, max_rel=1.18e-14 [OK ] α=1.5 , β=0.5 | max_abs=8.20e-14, max_rel=5.60e-14 [OK ] α=2.0 , β=2.0 | max_abs=3.11e-15, max_rel=2.66e-15

=====================================================================

Reduction fast path (0.1.3): E^2_{α,α+1}(z) = E_{α,α}(z)/α → OPC

=====================================================================

[OK ] α=0.6, 601 nokta: indirgeme vs mpmath göreli sapma 4.7e-15; ~50–100× hızlanma

=====================================================================

Sample values (angle = π/2, mpmath reference uses adaptive precision)

=====================================================================

alpha beta r mlfp Re ref Re mlfp Im ref Im


0.500 1.000 0.0000 1.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00

================

Overall: PASS ✅

================


Examples

import numpy as np
from mlfp import mittag_leffler

alpha, beta = 1.0, 2.0
z = np.linspace(0.0, 2.0, 64)
result = mittag_leffler(z, alpha, beta)
print(result)
import numpy as np
from mlfp import MittagLeffler, mittag_leffler

# 1. Two-parameter Mittag-Leffler function
ml = MittagLeffler(alpha=0.5, beta=1.0)

print(ml(0.0))       # 1.0
print(ml(0.5))       # 1.9523604891825568
print(ml(1.0))       # 5.008980080762283
print(ml(2.0))       # 108.94090438997797

# 2. Array evaluation
z = np.array([0.0, 0.25, 0.5, 1.0, 2.0, 5.0])
print(ml(z))

# 3. Small arguments now use the reliable Taylor-series branch
ml07 = MittagLeffler(alpha=0.7, beta=1.0)
print(ml07(0.001))   # 1.0011013529...
print(ml07(0.01))    # 1.0110864355...
print(ml07(1.0))     # 3.7041461454...

# 4. Prabhakar / three-parameter function
prabhakar = MittagLeffler(alpha=0.5, beta=1.0, gamma=0.7)
print(prabhakar(0.1))  # 1.0853656185...
print(prabhakar(0.5))  # 1.6154153961...
print(prabhakar(1.0))  # 3.3153696560...
print(prabhakar(2.0))  # 47.137926541...

# 5. Functional interface
print(mittag_leffler(1.0, alpha=0.5, beta=1.0))
print(mittag_leffler(0.5, alpha=0.5, beta=1.0, gamma=0.7))

# 6. alpha = 0 branch (0.1.3): E^gamma_{0,beta}(z) = (1-z)^(-gamma)/Gamma(beta), |z| < 1
print(mittag_leffler(0.5, alpha=0.0, beta=1.0))            # E_{0,1}(0.5) = 2.0
print(mittag_leffler(0.5, alpha=0.0, beta=1.0, gamma=2.0))  # E^2_{0,1}(0.5) = 4.0

# 7. Reduction fast path (0.1.3): E^2_{alpha,alpha+1}(z) = E_{alpha,alpha}(z)/alpha
print(mittag_leffler(1.0, alpha=0.5, beta=1.5, gamma=2.0))  # OPC üzerinden hızlı
import numpy as np
import mpmath as mp
from pymittagleffler import mittag_leffler as pymittag_leffler
from mlfp import MittagLeffler

mp.mp.dps = 40

def mpmath_reference(z, alpha, beta, terms=2000):
    z = mp.mpc(z)
    total = mp.mpc(0)
    for k in range(terms):
        term = z**k / mp.gamma(alpha * k + beta)
        total += term
        if abs(term) < mp.mpf(10) ** -30:
            break
    return complex(total)

alpha, beta = 1.0, 1.5
r = np.linspace(0.0, 12.0, 256)
z = r * np.exp(1j * np.pi / 2)

mlfp = MittagLeffler(
    alpha=alpha,
    beta=beta,
    gamma=1.0,
    tolerance=1.0e-13,
    series_threshold=0.1,
).evaluate_complex(z)

reference = pymittag_leffler(z, alpha, beta)
mp_reference = np.array(
    [mpmath_reference(value, alpha, beta) for value in z],
    dtype=np.complex128,
)

difference = np.abs(mlfp - reference)
jmax = int(np.argmax(difference))

print(f"Maximum difference at r = {r[jmax]:.6f}")
print(f"z                 = {z[jmax]}")
print(f"mlfp             = {mlfp[jmax]}")
print(f"pymittagleffler   = {reference[jmax]}")
print(f"mpmath reference  = {mp_reference[jmax]}")
print(f"|mlfp - pymtl|   = {difference[jmax]:.6e}")
print(f"|mlfp - mpmath|  = {abs(mlfp[jmax] - mp_reference[jmax]):.6e}")
print(f"|pymtl  - mpmath| = {abs(reference[jmax] - mp_reference[jmax]):.6e}")
import numpy as np
from mlfp import mittag_leffler
z = np.linspace(0.4, 2.0) + 3j * np.linspace(0.5, 1.5)
ml = mittag_leffler(z, alpha=0.5, beta=2.5)
print(z)
print(ml)

mlfp — Mittag-Leffler ve Prabhakar Fonksiyonları için Python Modülü

PyPI: https://pypi.org/project/mlfp/ Lisans: MIT · Python: 3.11+ / 3.15 · Bağımlılıklar: numpy, scipy, mpmath

mlfp (Mittag-Leffler Functions for Python), iki parametreli Mittag-Leffler fonksiyonu $E_{\alpha,\beta}(z)$ ile üç parametreli Prabhakar fonksiyonu $E_{\alpha,\beta}^{\gamma}(z)$'yi float64 duyarlığında güvenli ve doğru biçimde hesaplayan açık kaynaklı bir kütüphanedir.


İçindekiler

  1. Kurulum
  2. Hızlı Başlangıç
  3. Matematiksel Özellikler
  4. Sayısal Güvenlik Özellikleri
  5. API Özellikleri
  6. Yazılım Mühendisliği Özellikleri
  7. Doğrulama
  8. Mevcut Kütüphanelerle Karşılaştırma
  9. Sınırlamalar
  10. Sürüm Geçmişi
  11. Kaynaklar

Kurulum

pip install mlfp

Geliştirme sürümü için:

pip install "mlfp[dev]"

Hızlı Başlangıç

from mlfp import MittagLeffler, mittag_leffler
import numpy as np

# ─── Temel kullanım ───
ml = MittagLeffler(alpha=0.5, beta=1.0)
print(ml(1.0))                  # E_{0.5, 1}(1.0) → 5.008980080762283

# ─── Prabhakar fonksiyonu (γ ≠ 1) ───
prabhakar = MittagLeffler(alpha=0.5, beta=1.0, gamma=0.7)
print(prabhakar(0.5))           # E_{0.5, 1}^{0.7}(0.5) → 1.6154153961...

# ─── α = 0 dalı (0.1.3): E^γ_{0,β}(z) = (1-z)^{-γ}/Γ(β), |z| < 1 ───
print(mittag_leffler(0.5, alpha=0.0, beta=1.0))  # → 2.0

# ─── Vektörleştirilmiş hesap ───
z = np.array([0.1, 0.5, 1.0], dtype=complex)
print(ml.evaluate_complex(z))   # NDArray[np.complex128]

# ─── Fonksiyon tabanlı API ───
value = mittag_leffler(1.0, alpha=0.5, beta=1.0)
print(value) 

Matematiksel Özellikler

Desteklenen Fonksiyonlar

İki parametreli Mittag-Leffler:

$$ E_{\alpha,\beta}(z) = \sum_{k=0}^{\infty} \frac{z^{k}}{\Gamma(\alpha k + \beta)}, \qquad \alpha \ge 0\ (\alpha = 0 \text{ için } |z| < 1),\ \beta \in \mathbb{R} $$

Üç parametreli Prabhakar:

$$ E_{\alpha,\beta}^{\gamma}(z) = \sum_{k=0}^{\infty} \frac{(\gamma)_{k}, z^{k}}{k!,\Gamma(\alpha k + \beta)}, \qquad \alpha \ge 0\ (\alpha = 0 \text{ için } |z| < 1),\ \gamma > 0 $$

burada $(\gamma){k} = \Gamma(\gamma + k) / \Gamma(\gamma)$ Pochhammer sembolüdür. Bu, literatürdeki standart tanımdır (Prabhakar 1971; Gorenflo vd. 2020); $\gamma = 1$ iken $(1){k}/k! = 1$ olduğundan iki parametreli fonksiyona indirgenir.

Fonksiyon Hesaplama Yöntemi
İki parametreli Mittag-Leffler Hibrit OPC + Taylor serisi
Üç parametreli Prabhakar Taylor serisi (küçük $\lvert z \rvert$) + adaptif mpmath yedeklemesi (büyük $\lvert z \rvert$)
Prabhakar ($\gamma = 2,\ \beta = \alpha + 1$) İndirgeme $E^{2}{\alpha,\alpha+1}(z) = E{\alpha,\alpha}(z)/\alpha$ üzerinden OPC hızlı yolu
$\alpha = 0$ (0.1.3) Kapalı form $(1-z)^{-\gamma}/\Gamma(\beta)$, yalnızca $\lvert z \rvert < 1$

Sayısal Yöntemler

  • Garrappa'nın Optimal Parabolik Kontur (OPC) yöntemi — ters Laplace dönüşümü üzerinden yüksek hassasiyetli hesap.
  • Hibrit geçiş — $\lvert z \rvert \le \tau$ (varsayılan $\tau = 0.1$) için Taylor serisi, aksi halde OPC.
  • Prabhakar için doğru ayrım — $\gamma \neq 1$ durumunda OPC geçersizdir (dallanma noktaları): küçük $\lvert z \rvert$ için Taylor serisi, büyük $\lvert z \rvert$ için adaptif hassasiyetli mpmath yedeklemesi kullanılır.
  • İndirgeme hızlı yolu (0.1.3) — $\gamma = 2,\ \beta = \alpha + 1$ iken $E^{2}{\alpha,\alpha+1}(z) = E{\alpha,\alpha}(z)/\alpha$ özdeşliği üzerinden iki parametreli OPC'ye yönlendirme (ör. kesirli kinetikte $B(u) = u^{\alpha} E^{2}_{\alpha,\alpha+1}(-u^{\alpha})$); doğrudan mpmath yedeklemesine kıyasla ~50–100× hızlanma.
  • Karmaşık düzlemde tam destek — hem gerçek hem sanal argümanlar.

Özel Durumlar

Aşağıdaki kapalı formlar ve özdeşlikler otomatik olarak uygulanır:

$$ \begin{aligned} E_{1,1}(z) &= e^{z} \ E_{2,1}(z) &= \cosh!\left(\sqrt{z}\right) \ E_{1/2,1}(z) &= e^{z^{2}},\mathrm{erfc}(-z) \ E_{\alpha,\beta}(0) &= \frac{1}{\Gamma(\beta)} \ E_{\alpha,\beta}^{\gamma}(0) &= \frac{1}{\Gamma(\beta)} \quad (\gamma\text{'dan bağımsız}) \ E_{0,\beta}^{\gamma}(z) &= \frac{(1-z)^{-\gamma}}{\Gamma(\beta)} \quad (\alpha = 0,\ \lvert z \rvert < 1;\ \text{0.1.3}) \ E_{\alpha,\alpha+1}^{2}(z) &= \frac{E_{\alpha,\alpha}(z)}{\alpha} \quad (\text{0.1.3}) \end{aligned} $$


Sayısal Güvenlik Özellikleri

Float64 Taşma Koruması

  • Dinamik güvenli $\lvert z \rvert$ sınırı — _safe_z_limit(α) fonksiyonu $\alpha$'ya bağlı olarak

$$ \lvert z \rvert_{\max} \approx 0.9 \cdot \bigl(\log(\text{float64}_{\max})\bigr)^{\alpha} $$

değerini hesaplar.

  • Rezidü log-büyüklük denetimi — $\exp(t,\Re(s))$ çağrısından önce taşma riski kontrol edilir.
  • Açıklayıcı hata — taşma durumunda sessiz nan yerine MittagLefflerError fırlatılır:
The Mittag-Leffler value is too large to represent in float64:
max log|residue| ≈ 1523.4 exceeds log(float64_max) ≈ 709.8.
|z| = 12.3 exceeds the safe range for α = 0.25 (safe limit ≈ 4.65).
Reduce |z|, or use mpmath for higher-precision arithmetic.

Katastrofik İptal Tespiti

  • Küçük $\alpha$ ve büyük $\lvert z \rvert$ kombinasyonlarında tek terimler $\sim e^{\lvert z \rvert^{1/\alpha}}$ mertebesine ulaşırken sonuç $\mathcal{O}(1)$ kalır.
  • Modül bu durumlarda test referansı için adaptif mpmath.dps önerir.
  • Kullanıcıya güvenli aralık hakkında bilgi verir.

Seri Yakınsama Doğruluğu (0.1.3)

  • $\Gamma$ kutbu nedeniyle sıfır çıkan seri terimi (örn. $\alpha k + \beta$ negatif tam sayıya denk gelirse) yakınsama kanıtı olarak sayılmaz; seri erken kesilmez (örn. $E_{0.5,-0.5}(0.05)$).
  • Prabhakar mpmath yedeklemesinde rgamma kullanılır: $\beta = 0, -1, \dots$ kutuplarında hata yerine doğru değer (örn. $E^{2}_{1,0}(z) = (z^{2}+2z),e^{z}$).

Parametre Doğrulaması

__post_init__ içinde otomatik doğrulama:

Parametre Kural
alpha $\alpha \ge 0$, sonlu ($\alpha = 0$ için değerlendirme aşamasında $\lvert z \rvert < 1$ zorunlu)
beta Sonlu reel
gamma $\gamma > 0$, sonlu
tolerance $0 < \varepsilon < 1$
series_threshold $\ge 0$
max_series_terms Pozitif tam sayı

API Özellikleri

İçe Aktarma

from mlfp import MittagLeffler, mittag_leffler, MittagLefflerError

Sınıf Tabanlı API (Tekrar Kullanılabilir)

ml = MittagLeffler(alpha=0.5, beta=1.0, tolerance=1e-14)
print(ml(1.0))                    # gerçek argüman → float
print(ml.evaluate_complex(1.0j))  # karmaşık argüman → complex

Fonksiyon Tabanlı API (Tek Seferlik)

value = mittag_leffler(1.0, alpha=0.5, beta=1.0)
print(value)

# 0.1.3: serinin en fazla kaç terim toplanacağı artık fonksiyon API'sinden de ayarlanabilir
value = mittag_leffler(0.05, alpha=0.5, beta=-0.5, max_series_terms=200_000)

Çift Çıktı Modu

Metot Girdi Çıktı Kullanım
__call__ / evaluate Gerçek $z$ float64 Gerçek hesaplamalar
evaluate_complex Karmaşık $z$ complex128 Tam karmaşık sonuç

Karmaşık $z$ gerçek API'ye verilirse açıklayıcı hata fırlatılır:

For complex z, use evaluate_complex() to obtain the full complex-valued result.

Vektörleştirme

  • NumPy dizileri doğrudan desteklenir.
  • Skaler/dizi tutarlılığı garanti edilir.
  • Boş girdiler güvenle işlenir.
import numpy as np
z = np.array([0.1, 0.5, 1.0, 2.0], dtype=complex)
result = ml.evaluate_complex(z)   # NDArray[np.complex128]
print(z)
print(result)

Tip İpuçları

  • Tam tip ipuçları — ArrayLike, NDArray[np.float64], NDArray[np.complex128].
  • from __future__ import annotations — ileri uyumluluk.
  • ClassVar — slots=True dataclass'ta sabit doğru tanımlı.
  • IDE/mypy dostu.

Hata Yönetimi

class MittagLefflerError(ValueError):
    """Geçersiz parametre veya argümanlar için fırlatılır."""

Tüm hatalar tek bir istisna sınıfından türetilir → try/except ile kolay yakalama.

Yan Etkisiz İçe Aktarma (0.1.3)

import mlfp artık mpmath'ın küresel mp.dps değerini değiştirmez; yedekleme kendi workdps bağlamı içinde çalışır.


Yazılım Mühendisliği Özellikleri

Performans

  • Vektörleştirilmiş hesaplama — OPC integrandı NumPy ile bir kerede değerlendirilir.
  • Otomatik düğüm sayısı — $\text{nodes} \le 200$ hedefine göre dinamik ayar.
  • Hibrit geçiş — küçük $\lvert z \rvert$ için seri (OPC'den çok daha hızlı).
  • İndirgeme hızlı yolu (0.1.3) — $E^{2}_{\alpha,\alpha+1}$ ailesi OPC üzerinden ~50–100× hızlı.
  • Yeniden kullanılabilir sınıf — parametre doğrulaması bir kez yapılır.

Kod Kalitesi

  • slots=True dataclass — bellek verimliliği.
  • Final / ClassVar — sabitlerin doğru tanımı.
  • Kapsamlı docstring'ler — tüm public API belgelenmiş.
  • SPDX lisans başlığı — MIT lisansı otomatik tanınır.
  • __repr__ — hata ayıklama için okunabilir gösterim.
>>> MittagLeffler(alpha=0.5, beta=1.0, gamma=1.0)
MittagLeffler(alpha=0.5, beta=1.0, gamma=1.0, tolerance=1e-15,
              series_threshold=0.1, max_series_terms=100000)

Python 3.15 Uyumluluğu

  • from __future__ import annotations — yeni tip sözdizimi.
  • PEP 604 (X | Y) — modern birleşim tipleri.
  • typing.override — override dekoratörü.
  • NumPy 2.x — yeni array API'si.

Doğrulama

Kapsamlı Test Altyapısı

Modül, 37 pytest testi ve 0.1.3 yamasıyla gelen 26 ek test ile doğrulanmıştır:

Test Grubu Kapsam Sayı
Özel değerler $e^{z}$, $\cosh\sqrt{z}$, $\mathrm{erfc}$ 5
Prabhakar $\gamma$ indirgemesi, Pochhammer 6
Sınır koşulları $z=0$, negatif eksen, taşma 5
Parametre doğrulama Geçersiz girdiler 10
Vektörleştirme Dizi–skaler tutarlılığı 3
Seri–OPC İç tutarlılık 4
Rekürans Fonksiyonel ilişki 3
0.1.3 yama testleri Sıfır terim, $\beta=0$ kutbu, indirgeme, $\alpha=0$, API, import yan etkisi, README regresyonu 26
Toplam 63 PASS + 1 SKIP

Adaptif mpmath Referansı

Referans değerler, gereken ondalık basamak sayısı

$$ \text{dps} \ge \frac{\lvert z \rvert^{1/\alpha}}{\ln 10} + 40 $$

ile dinamik olarak belirlenerek mpmath ile hesaplanır. Bu, küçük $\alpha$ ve büyük $\lvert z \rvert$ durumlarında oluşan katastrofik iptali engeller.

Doğrulanmış Sayısal Sonuçlar

  • Tüm geçerli kombinasyonlarda göreli hata $< 10^{-13}$.
  • Örnek: $\alpha=1.0$, $\beta=1.5$, $\theta=0$ için $\max_{\text{rel}} = 1.49 \times 10^{-15}$.
  • Örnek: $\alpha=0.25$, $\beta=0.5$, $\theta=0$ için $\max_{\text{rel}} = 7.23 \times 10^{-14}$.
  • Örnek (0.1.3): $E^{2}_{0.6,1.6}(-u^{0.6})$, 601 nokta, mpmath referansına göre maks. göreli sapma $4.7 \times 10^{-15}$.

Doğrulama Araçları

Dosya İşlev
test_special_cases.py 37 pytest testi
test_mlfp_fixes.py 0.1.3 yama testleri (orijinal 0.1.2 ile karşılaştırmalı)
run_comparison.py Kapsamlı konsol karşılaştırması
plot_comparison.py Değer, mutlak hata, göreli hata panelleri
_ml_helpers.py Adaptif referans + hata istatistikleri

Mevcut Kütüphanelerle Karşılaştırma

Özellik mlfp pymittagleffler khinsen/ml numfracpy
İki parametreli ML ✅ ✅ ✅ ✅
Prabhakar ($\gamma \neq 1$) ✅ ❌ ❌ Kısmi
$\alpha = 0$ kapalı formu ✅ ❌ ❌ ❌
$E^{2}_{\alpha,\alpha+1}$ indirgemesi ✅ ❌ ❌ ❌
Float64 taşma güvenliği ✅ ❌ ❌ ❌
Açıklayıcı hata mesajları ✅ ❌ ❌ ❌
Adaptif test referansı ✅ ❌ ❌ ❌
Çift API (gerçek/karmaşık) ✅ ❌ ✅ ✅
Vektörleştirme ✅ ✅ ❌ ✅
NumPy uyumlu tipler ✅ ✅ ❌ Kısmi
Modern Python 3.15 ✅ ✅ ❌ ❌

Sınırlamalar

Sınırlama Açıklama Gelecek Çalışma
Prabhakar büyük $\lvert z \rvert$ $\gamma \neq 1$ ve büyük $\lvert z \rvert$ için otomatik mpmath yedeklemesi kullanılır (doğru ama yavaş) OPC'nin Prabhakar'a doğrudan uyarlanması (Garrappa 2015 üç parametreli kapsamı); asimptotik açılım
$\alpha = 0$ değerlendirme aralığı Kapalı form yalnızca $\lvert z \rvert < 1$ için yakınsar; $\lvert z \rvert \ge 1$'de açıklayıcı hata fırlatılır Analitik devam
Matris argüman Yalnızca skaler/karmaşık $z$ desteklenir Matris değerli ML fonksiyonu eklenebilir
Yüksek duyarlık float64 ile sınırlı; $\gamma \neq 1$ ve büyük $\lvert z \rvert$ için mpmath otomatik yedekleme zaten vardır Kullanıcıya açık dps ayarı

Sürüm Geçmişi

0.1.4 düzeltmeleri (0.1.3'e göre)

  1. call otomatik tip seçimi (NumPy np.exp / np.sin geleneğiyle uyumlu): gerçek z → float64; karmaşık z → complex128; karmaşık dizi → complex128 dizi; karışık dizi → complex128 dizi. evaluate_complex(z) her zaman complex128 döner (davranışı korundu). mittag_leffler() fonksiyonu da aynı otomatik tipi kullanır.

  2. _invert_laplace_transform_two_parameter: rezidü kontrolü kontur integralinden ÖNCE yapılıyor (hızlı başarısızlık); integrand hesabı np.errstate(over, invalid, under="ignore") içinde (RuntimeWarning sızıntısı önlenir); sonuç isfinite kontrolünden geçiriliyor (sessiz inf/nan yerine açıklayıcı MittagLefflerError).

  3. _mpmath_fallback: complex(total) dönüşümünden ÖNCE log10|total| > 308 kontrolü — float64 aralığını sessizce aşan sonuçlar için açıklayıcı MittagLefflerError fırlatılır.

  4. Global _mp.mp.dps = 50 ataması kaldırıldı — import yan etkisi yok. _mpmath_fallback zaten with _mp.workdps(dps) bağlamını kullanır; çağıran tarafın mpmath hassasiyeti etkilenmez.

0.1.3 düzeltmeleri (referans)

  • Düzeltme: $\Gamma$ kutbundan sıfır çıkan seri terimi artık yakınsama kanıtı sayılmıyor ($E_{0.5,-0.5}(0.05)$ hatası giderildi).
  • Düzeltme: mpmath yedeklemesinde rgamma — $\beta = 0, -1, \dots$ kutuplarında "gamma function pole" hatası yerine doğru değer (örn. $E^{2}_{1,0}(-1) = -e^{-1}$).
  • Yeni: $\gamma = 2,\ \beta = \alpha + 1$ indirgemesi $E^{2}{\alpha,\alpha+1}(z) = E{\alpha,\alpha}(z)/\alpha$ — OPC hızlı yolu, ~50–100× hızlanma.
  • Yeni: $\alpha = 0$ dalı — $E^{\gamma}_{0,\beta}(z) = (1-z)^{-\gamma}/\Gamma(\beta)$, $\lvert z \rvert < 1$.
  • Yeni: mittag_leffler() işlev API'sinde max_series_terms parametresi.
  • Değişiklik: import mlfp artık mpmath'ın küresel mp.dps değerini değiştirmiyor.

0.1.2

  • İlk kararlı PyPI sürümü.

Kaynaklar

  • PyPI: https://pypi.org/project/mlfp/
  • Lisans: MIT
  • Ana referanslar:
    • Garrappa, R. (2015). Numerical evaluation of two and three parameter Mittag-Leffler functions. SIAM Journal on Numerical Analysis, 53(3), 1350–1369. doi:10.1137/140971191
    • Gorenflo, R., Kilbas, A. A., Mainardi, F., & Rogosin, S. V. (2020). Mittag-Leffler Functions, Related Topics and Applications. Springer. doi:10.1007/978-3-662-61550-8
    • Prabhakar, T. R. (1971). A singular integral equation with a generalized Mittag-Leffler function in the kernel. Yokohama Mathematical Journal, 19, 7–15.
    • Mainardi, F., & Garrappa, R. (2017). On complete monotonicity and asymptotic behaviour of the Prabhakar function. Fractional Calculus and Applied Analysis, 20(6), 1369–1386. doi:10.1515/fca-2017-0073

Lisans

MIT Lisansı altında dağıtılmaktadır. Ayrıntılar için LICENSE dosyasına bakın.


Atıf

Bu kütüphaneyi akademik bir çalışmada kullanıyorsanız, aşağıdaki biçimde atıf yapabilirsiniz:

@article{kececi_2026_23605556,
  author       = {Keçeci, Mehmet},
  title        = {Kesirli Kuantum Dinamiği Altında Stratum Mimarisi:
                   NV-Weyl-Majorana Karma Sistemlerinde Topolojik
                   Koruma, Kuantum Hata Düzeltme ve Işınlanma
                  },
  month        = oct,
  year         = 2026,
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.23605556},
  url          = {https://doi.org/10.5281/zenodo.23605556},
}
@article{kececi_2026_23550352,
  author       = {Keçeci, Mehmet},
  title        = {Mittag-Leffler ve Prabhakar Fonksiyonlarının
                   Python'da Güvenli ve Doğru Hesaplanması
                  },
  month        = oct,
  year         = 2026,
  publisher    = {Open Science Articles (OSAs), Zenodo},
  doi          = {10.5281/zenodo.23550352},
  url          = {https://doi.org/10.5281/zenodo.23550352},
}
@software{kececi_2026_23549172,
  author       = {Keçeci, Mehmet},
  title        = {mlfp},
  month        = oct,
  year         = 2026,
  publisher    = {Open Science Articles (OSAs), Zenodo},
  version      = {0.1.3},
  doi          = {10.5281/zenodo.23549172},
  url          = {https://doi.org/10.5281/zenodo.23549172},
}
@software{mlfp2026,
  title  = {mlfp: Mittag-Leffler and Prabhakar Functions for Python},
  author = {Keçeci, Mehmet},
  year   = {2026},
  url    = {https://github.com/WhiteSymmetry/mlfp},
  note   = {MIT License}
}
@software{mlfp2026p,
  title  = {mlfp: Mittag-Leffler and Prabhakar Functions for Python},
  author = {Keçeci, Mehmet},
  year   = {2026},
  url    = {https://pypi.org/project/mlfp/},
  note   = {MIT License}
}
@software{mlfp2026a,
  title  = {mlfp: Mittag-Leffler and Prabhakar Functions for Python},
  author = {Keçeci, Mehmet},
  year   = {2026},
  url    = {https://anaconda.org/channels/bilgi/packages/mlfp},
  note   = {MIT License}
}
@software{mlfp2026d,
  title  = {mlfp: Mittag-Leffler and Prabhakar Functions for Python},
  author = {Keçeci, Mehmet},
  year   = {2026},
  url    = {https://prefix.dev/channels/bilgi/packages/mlfp},
  note   = {MIT License}
}

Metadata

Release files for mlfp 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mlfp 0.1.4
File Size Uploaded Provenance
mlfp-0.1.4.tar.gz 30.4 kB With provenance Details

Built distribution (wheel)

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

Total release size: 52.3 kB

Release files / mlfp-0.1.4.tar.gz

Download URL mlfp-0.1.4.tar.gz
Size 30.4 kB
Tags Source
SHA-256 checksum
How to use checksums
1b2efb4f5d5ca5b7f5dddf01dfa2ba32b79297d855b562c923611769be06bb1d
BLAKE2b-256 checksum
How to use checksums
4ecb7cb2adbd0cdc8d14f4930284e0467d789ea947fe779d14a635675f87e959
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / mlfp-0.1.4-py3-none-any.whl

Download URL mlfp-0.1.4-py3-none-any.whl
Size 22.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9312273a94a1e07998311f9be14a79ae311a69b8f62caecaa6e31a001de30ef6
BLAKE2b-256 checksum
How to use checksums
a30344ca6be562e2423fa8f406eed556891e8e7515a4545a063c5a8c3e6f308f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Security for mlfp 0.1.4

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for mlfp-0.1.4.tar.gz

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 Oct 25, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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