3 Stars
Updated Last
11 Months Ago
Started In
May 2018


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.


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.

Used By Packages

No packages found.