Skip to content

marcobonici/FFTLog.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FFTLog.jl

Build status (Github Actions) codecov size Code Style: Blue ColPrac: Contributor's Guide on Collaborative Practices for Community Packages

Package to compute integrals involving Bessels functions such as

or Hankel transforms

The integrals are performed using the FFTLog algorithm (Hamilton 2000).

Usage

Given an array logarithmically spaced r and a function f evaluated over this array, we want to evaluate the Hankel transform for the multipole values contained in the array Ell. For instance, let us consider the following Hankel pair

Since we know the analytical transform, we can perform a check

  1. Instantiate an object HankelPlan
HankelTest = FFTLog.HankelPlan(x = k)
  1. Perform some precomputations
prepare_Hankel!(HankelTest, Ell)
  1. Compute the Hankel transform
Fy = evaluate_Hankel(HankelTest, Pk)
  1. If needed, the array y (the counterpart of the array r) can be obtained with
y = get_y(HankelTest)

Now, let us compare the numerical and the analytical transforms

analytical_check

We can also plot the relative difference

analytical_residuals

Quite good, isn't it?

Roadmap

Step Status Comment
Integrals with a Bessel function Implemented, needs some polishing
Hankel Transforms Implemented, needs some polishing
Multithreading ✔️ Implemented
Integrals with a Bessel derivative ✔️ Implemented
Automatic Differentiation 🚧 WIP
GPU compatibility 🚧 WIP
Integrals with two Bessel functions 🚧 WIP
Python wrapper 🚧 WIP

Authors

  • Marco Bonici, PostoDoctoral Researcher at INAF-IASF Milano

About

Compute integrals involving Bessel functions and Hankel transforms

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages