You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Numerical routines for computing Bessel and Hankel functions for real arguments. These routines are written in the Julia programming language and are self contained without any external dependencies.
5
+
Numerical routines for computing Bessel, Airy, and Hankel functions for real arguments. These routines are written in the Julia programming language and are self contained without any external dependencies.
6
6
7
7
The goal of the library is to provide high quality numerical implementations of Bessel functions with high accuracy without comprimising on computational time. In general, we try to match (and often exceed) the accuracy of other open source routines such as those provided by [SpecialFunctions.jl](https://github.com/JuliaMath/SpecialFunctions.jl). There are instances where we don't quite match that desired accuracy (within a digit or two) but in general will provide implementations that are 5-10x faster (see [benchmarks](https://github.com/heltonmc/Bessels.jl/edit/update_readme/README.md#benchmarks)).
8
8
9
-
The library currently supports Bessel functions, modified Bessel functions, Hankel functions and spherical Bessel functions of the first and second kind for positive real arguments and integer and noninteger orders. Negative arguments are also supported only if the return value is real. We plan to support complex arguments in the future. An unexported gamma function is also provided.
9
+
The library currently supports Bessel functions, modified Bessel functions, Hankel functions, spherical Bessel functions, and Airy functions of the first and second kind for positive real arguments and integer and noninteger orders. Negative arguments are also supported only if the return value is real. We plan to support complex arguments in the future. An unexported gamma function is also provided.
10
10
11
11
# Quick start
12
12
@@ -170,7 +170,6 @@ We report the relative errors (`abs(1 - Bessels.f(x)/ArbNumerics.f(ArbFloat(x)))
170
170
| besseli(92.12, x) | 9e-15 | 7e-14 |
171
171
| Bessels.gamma(x) | 1.3e-16 | 5e-16
172
172
173
-
174
173
In general the largest relative errors are observed near the zeros of Bessel functions for `besselj` and `bessely`. Accuracy might also be slightly worse for very large arguments when using `Float64` precision.
175
174
176
175
# Benchmarks
@@ -189,7 +188,6 @@ We give brief performance comparisons to the implementations provided by [Specia
189
188
| besselk(nu, x) | 4x |
190
189
| Bessels.gamma(x) | 5x |
191
190
192
-
193
191
Benchmarks were run using Julia Version 1.7.2 on an Apple M1 using Rosetta.
194
192
195
193
# API
@@ -211,13 +209,16 @@ Benchmarks were run using Julia Version 1.7.2 on an Apple M1 using Rosetta.
211
209
-`hankelh2(nu, x)`
212
210
-`sphericalbesselj(nu, x)`
213
211
-`sphericalbessely(nu, x)`
212
+
-`airyai(x)`
213
+
-`airyaiprime(x)`
214
+
-`airybi(x)`
215
+
-`airybiprime(x)`
214
216
-`Bessels.gamma(x)`
215
217
216
218
# Current Development Plans
217
219
218
220
- Support for higher precision `Double64`, `Float128`
219
221
- Support for complex arguments (`x` and `nu`)
220
-
- Airy functions
221
222
- Support for derivatives with respect to argument and order
0 commit comments