Skip to content

heltonmc/Struve.jl

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Struve.jl

This package provides methods to compute the Struve functions H, K, L, and M.

Build Status codecov

plot of four Struve functions (H₀, K₀, L₀, M₀) on the real axis

The default methods currently use a mixture of power series, large argument expansions, and integral representations of the functions which are computed numerically using QuadGK.jl and SpecialFunctions.jl.

Struve.jl exports four functions:

struveh(ν, z)
struvek(ν, z)
sruvel(ν, z)
struvem(ν, z)

which compute the Struve functions of the first and second kind (struveh and struvek), and the modified Struve functions of the first and second kind (struvel and struvem).

It also implements fast approximations for H₀ and H₁ on the real axis (with absolute error below 2×10⁻³). For fast, high accuracy approximations ApproxFun.jl may be used.

Struve.H0_fast(x)
Struve.H1_fast(x)

Please note: Implementations are verified against function's power series computed in higher precision as well as explicit forms. In general, we try to provide maximum relative errors throughout the entire range better than 1e-13 in double precision. There may be some regions around cutoffs that are less accurate. Bug reports are very welcome as it is difficult to test over all ranges of order and argument. Rigorous implementations of Struve functions are difficult to find but comparisons to Mathematica or Keisan would be helpful. The power series can also be called directly (e.g., Struve.struveh_power_series(big"1.5", big"90.0")) using higher precision which will be a good comparison for the lower precisions calculations.

About

Struve functions for Julia

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Julia 100.0%