Skip to main content

Provide function to calculate the modified Bessel function of the second kind

Project description

logbesselk

Provide function to calculate the modified Bessel function of the second kind and its derivatives.

Reference

Takashi Takekawa, Fast parallel calculation of modified Bessel function of the second kind and its derivatives, SoftwareX, 17, 100923, 2022.

Author

TAKEKAWA Takashi takekawa@tk2lab.org

For Tensorflow

Require

  • Python (>=3.8)
  • Tensorflow (>=2.6)

Installation

pip install tensorflow logbesselk

Examples

import tensorflow as tf
from logbesselk.tensorflow import log_bessel_k as logk
from logbesselk.jax import bessel_ke as ke
from logbesselk.jax import bessel_kratio as kratio

v = 1.0
x = 1.0
a = logk(v, x)

v = jnp.linspace(1, 10, 10)
x = jnp.linspace(1, 10, 10)
b = logk(v, x)

# gradient
with tf.GradientTape() as g:
    g.watch(v, x)
    f = logk(v, x)
dlogkdv = g.gradient(f, v)
dlogkdx = g.gradient(f, x)

# use tf.function
logk = tf.function(logk)

# advanced version
from logbesselk.tensorflow import log_abs_deriv_bessel_k

logk = lambda v, x: log_abs_deriv_bessel_k(v, x, 0, 0)
logdkdv = lambda v, x: log_abs_deriv_bessel_k(v, x, 1, 0)
logdkdx = lambda v, x: log_abs_deriv_bessel_k(v, x, 0, 1)

For jax

Require

  • Python (>=3.8)
  • jax (>=0.3)

Installation

pip install jax[cuda] -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
pip install logbesselk

Examples

import jax
import jax.numpy as jnp
from logbesselk.jax import log_bessel_k as logk
from logbesselk.jax import bessel_ke as ke
from logbesselk.jax import bessel_kratio as kratio

# scalar func and grad
v = 1.0
x = 1.0
a = logk(v, x)

# dlogK/dv = (dK/dv) / K
dlogkdv = jax.grad(logk, 0)
b = dlogkdv(v, x)

# dlogK/dx = (dK/dx) / K
dlogkdx = jax.grad(logk, 1)
c = dlogkdx(v, x)

# misc
d = ke(v, x)
e = kratio(v, x, d=1)

# vectorize
logk_vec = jax.vmap(logk)

v = jnp.linspace(1, 10, 10)
x = jnp.linspace(1, 10, 10)
f = logk_vec(v)

# use jit
logk_vec_jit = jax.jit(logk_vec)

# advanced version
from logbesselk.jax import log_abs_devel_bessel_k

log_dkdv = lambda v, x: log_abs_deriv_bessel_k(v, x, 1, 0)
log_dkdx = lambda v, x: log_abs_deriv_bessel_k(v, x, 0, 1)

log_dkdv_jit = jax.jit(jax.vmap(log_dkdv))
log_dkdx_jit = jax.jit(jax.vmap(log_dkdx))

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

logbesselk-3.2.1.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

logbesselk-3.2.1-py3-none-any.whl (22.6 kB view details)

Uploaded Python 3

File details

Details for the file logbesselk-3.2.1.tar.gz.

File metadata

  • Download URL: logbesselk-3.2.1.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.10.14 Linux/6.5.0-1021-azure

File hashes

Hashes for logbesselk-3.2.1.tar.gz
Algorithm Hash digest
SHA256 c42af080f83d70ce0c11ea77cd208affd0552b62c0a09fc482656dd0ca98ebb4
MD5 00b017547464504d006932e2a89e9585
BLAKE2b-256 59f4a544abbd2b7b61b80d4a5d302a5081093e6a5c67b06695b75a13eee58286

See more details on using hashes here.

File details

Details for the file logbesselk-3.2.1-py3-none-any.whl.

File metadata

  • Download URL: logbesselk-3.2.1-py3-none-any.whl
  • Upload date:
  • Size: 22.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.10.14 Linux/6.5.0-1021-azure

File hashes

Hashes for logbesselk-3.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b56346c7b7810754d19a5364613cd3e8d3109b4ebcbab5bfb1e9fc3bbe44e9f9
MD5 4b3a5aba9559f420bbbb14c75cfac92f
BLAKE2b-256 ac9c3f6be75a3dd11d50db957940e9a7956ef73590ca4f9bcea7e5516c816535

See more details on using hashes here.

Supported by

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