This package provides methods to compute the Struve functions H, K, L, and M.
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 (
struvek), and the modified Struve functions of the first and second kind (
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.