All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
For pre-1.0.0 releases we will increment the minor version when we export any new functions or alter exported API. For bug fixes, performance enhancements, or fixes to unexported functions we will increment the patch version. Note: The exported API can be considered very stable and likely will not change without serious consideration.
- Add support for complex numbers in
besseli0
,besseli1
,besselj0
,besselj1
(PR #68) - Add separate documentation page with API (PR #69). This currently fails to build see (Issue #70)
- Fixed wrong return when iterating over a range of
nu
values whenlength(nu) == 2
(PR #71)
- Add
Float16
andFloat32
gamma implementations (PR #65) contributed by @oscardssmith.
- Improve accuracy of
Float64
gamma implementation for negative values (PR #65) by @oscardssmith - Improve accuracy of
besselk
power series (PR #66) by @oscardssmith
- Add methods to preallocate sequences
Bessels.besselj!(out, nu, x)
,Bessels.bessely!(out, nu, x)
,Bessels.besseli!(out, nu, x)
,Bessels.besselk!(out, nu, x)
(PR #60).
- Clean up
gamma
implementation (PR #62) contributed by @oscardssmith. Small fixes for x = 0 added in (PR #63 - Improved inference in
sphericalbesselj
. (PR #61). Contributed by @Samuel3008.
- Fix bug for very large inputs (x>1e16) in besselj0 and friends routines. A particularly thank you to @jwscook for reporting the bug in (Issue #56) and providing a very detailed analysis.
- Enable auto-vectorization of asymptotic expansions to improve performance. This reduces computation time around ~20% in some domains (PR #45).
- Add support for nu isa AbstractRange (i.e.,
besselj(0:10, 1.0)
) to allow for fast computation of Bessel functions at many orders (PR #53).
- Support for all airy functions and derivatives in entire complex plane (PR #51). These are specialized routines for airy functions instead of relying on connection to besselk. These are a couple digits more accurate and faster than previous versions.
- Add more optimized methods for Float32 calculations that are faster (PR #43)
- Add methods for computing modified spherical bessel function of second (PR #46 contributed by @cgeoga and first (PR #47)) kind. These functions are currently not exported. Closes (Issue #25)
- Asymptotic expansion for x >> nu was added (PR #48) that decreases computation time for large arguments. Contributed by @cgeoga
- Reduce compile time and time to first call of besselj and bessely (PR #42)
- add an unexport method (
Bessels.besseljy(nu, x)
) for faster computation ofbesselj
andbessely
(#33) - add exported methods for Hankel functions
besselh(nu, k, x)
,hankelh1(nu, x)
,hankelh2(nu, x)
(#33) - add exported methods for spherical bessel function
sphericalbesselj(nu, x)
,sphericalbesselj(nu, x)
, (#38) - add exported methods for airy functions
airyai(x)
,airyaiprime(x)
,airybi(x)
,airybiprime(x)
, (#39)
- fix cutoff in
bessely
to not return error for integer orders and small arguments (#33) - fix NaN return for small arguments (issue [#35]) in bessely (#40)
- allow calling with integer argument and add float16 support (#40)
Initial release of Bessels.jl
- support bessel functions (
besselj
,bessely
,besseli
,besselk
) for real arguments - provide a gamma function (
Bessels.gamma
) for real arguments