BestLime: a C++ library for computing Fourier-Bessel transforms with Levin's integration method
Description
Features
BestLime provides methods for computing the integral of a function f(z) times J(nu, z q), where J(nu, x) is a Bessel function of the first kind. The values of the function f(z) are required on an interpolation grid that is independent of q and can be selected by the user. The order nu of the Bessel function can be positive or zero, the lower limit of the z integration can be zero or finite, and the upper limit can be finite or infinity.
The integration algorithm is described in Ref [1], with the main ingredients being an integration method by Levin (Ref [2]) and Chebyshev interpolation. By design, the algorithm is not adaptive, which provides high efficiency when the function f(z) is expensive to compute. In turn, the accuracy of the results depends on an appropriate choice of interpolation grid. Details are given in the documentation of the class Bessel_integrator and in Ref [1].
Requirements
To install and use BestLime, you need
- a C++14 compiler
- CMake (at least 3.16)
- the GNU Scientific Library (at least GSL 2.0)
Installation and Documentation
To view the documentation of the library, point your browser to the file doc/html/index.html in the main source tree. This will also display the contents of the files README.md and INSTALL.md.
Included Packages
Linear algebra operations are performed using the Eigen library. The present distribution includes the headers of Eigen version 3.4.0 for dense matrix operations.
References
[1] M. Diehl and O. Grocholski,
Efficient computation of Fourier-Bessel transforms for transverse-momentum dependent parton distributions and other functions,
preprint DESY-24-057 [INSPIRE]
[2] D. Levin,
Fast integration of rapidly oscillatory functions,
Journal of Computational and Applied Mathematics 67 (1996) 95
Files
bestlime-1.0.zip
Files
(2.2 MB)
Name | Size | Download all |
---|---|---|
md5:9c1281b8cda85024eaabc5d3f5fd9bfc
|
2.2 MB | Preview Download |