Skip to content

Latest commit

 

History

History
71 lines (52 loc) · 3.38 KB

README.md

File metadata and controls

71 lines (52 loc) · 3.38 KB

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