Module Gsl_sf
Special functions
Airy functions
val airy_zero_Ai : int -> floatval airy_zero_Bi : int -> floatBessel functions
val bessel_J0 : float -> floatval bessel_J1 : float -> floatval bessel_Jn : int -> float -> floatval bessel_Jn_array : int -> float -> float array -> unitval bessel_Y0 : float -> floatval bessel_Y1 : float -> floatval bessel_Yn : int -> float -> floatval bessel_Yn_array : int -> float -> float array -> unitval bessel_I0 : float -> floatval bessel_I1 : float -> floatval bessel_In : int -> float -> floatval bessel_In_array : int -> float -> float array -> unitval bessel_K0 : float -> floatval bessel_K1 : float -> floatval bessel_Kn : int -> float -> floatval bessel_Kn_array : int -> float -> float array -> unitval bessel_I0_scaled : float -> floatval bessel_I1_scaled : float -> floatval bessel_In_scaled : int -> float -> floatval bessel_In_scaled_array : int -> float -> float array -> unitval bessel_K0_scaled : float -> floatval bessel_K1_scaled : float -> floatval bessel_Kn_scaled : int -> float -> floatval bessel_Kn_scaled_array : int -> float -> float array -> unitval bessel_j0 : float -> floatval bessel_j1 : float -> floatval bessel_j2 : float -> floatval bessel_jl : int -> float -> floatval bessel_jl_array : int -> float -> float array -> unitval bessel_jl_steed_array : float -> float array -> unitval bessel_y0 : float -> floatval bessel_y1 : float -> floatval bessel_y2 : float -> floatval bessel_yl : int -> float -> floatval bessel_yl_array : int -> float -> float array -> unitval bessel_i0_scaled : float -> floatval bessel_i1_scaled : float -> floatval bessel_il_scaled : int -> float -> floatval bessel_il_scaled_array : int -> float -> float array -> unitval bessel_k0_scaled : float -> floatval bessel_k1_scaled : float -> floatval bessel_kl_scaled : int -> float -> floatval bessel_kl_scaled_array : int -> float -> float array -> unitval bessel_Jnu : float -> float -> floatval bessel_sequence_Jnu_e : float -> Gsl_fun.mode -> float array -> unitval bessel_Ynu : float -> float -> floatval bessel_Inu : float -> float -> floatval bessel_Inu_scaled : float -> float -> floatval bessel_Knu : float -> float -> floatval bessel_lnKnu : float -> float -> floatval bessel_Knu_scaled : float -> float -> floatval bessel_zero_J0 : int -> floatval bessel_zero_J1 : int -> floatval bessel_zero_Jnu : float -> int -> floatClausen functions
val clausen : float -> floatCoulomb functions
val hydrogenicR_1 : float -> float -> floatval hydrogenicR : int -> int -> float -> float -> floatval coulomb_CL_array : float -> float -> float array -> unitDawson functions
val dawson : float -> floatDebye functions
val debye_1 : float -> floatval debye_2 : float -> floatval debye_3 : float -> floatval debye_4 : float -> floatval debye_5 : float -> floatval debye_6 : float -> floatDilogarithm
val dilog : float -> floatElementary operations
val multiply_err_e :
x:float ->
dx:float ->
y:float ->
dy:float ->
Gsl_fun.resultElliptic integrals
val ellint_P : float -> float -> float -> Gsl_fun.mode -> floatval ellint_RD : float -> float -> float -> Gsl_fun.mode -> floatval ellint_RF : float -> float -> float -> Gsl_fun.mode -> floatval ellint_RJ : float -> float -> float -> float -> Gsl_fun.mode -> floatError function
val erfc : float -> floatval log_erfc : float -> floatval erf_Z : float -> floatval erf_Q : float -> floatExponential functions
exp x computes the exponential function eˣ using GSL semantics and error checking.
exp_e10 x computes the exponential eˣ and returns a result with extended range. This function may be useful if the value of eˣ would overflow the numeric range of double.
val exp_mult : float -> float -> floatexp_mult x y exponentiate x and multiply by the factor y to return the product y eˣ.
Same as exp_e10 but return a result with extended numeric range.
val expm1 : float -> floatexpm1 x compute the quantity eˣ-1 using an algorithm that is accurate for small x.
val exprel : float -> floatexprel x compute the quantity (eˣ-1)/x using an algorithm that is accurate for small x. For small x the algorithm is based on the expansion (eˣ-1)/x = 1 + x/2 + x²/(2*3) + x³/(2*3*4) + ⋯
val exprel_2 : float -> floatexprel_2 x compute the quantity 2(eˣ-1-x)/x² using an algorithm that is accurate for small x. For small x the algorithm is based on the expansion 2(eˣ-1-x)/x^2 = 1 + x/3 + x²/(3*4) + x³/(3*4*5) + ⋯
val exprel_n : int -> float -> floatexprel_n x compute the n-relative exponential, which is the n-th generalization of the functions exprel and exprel_2. The N-relative exponential is given by,
n-1
exprel_n x = n!/xⁿ (aˣ - ∑ xᵏ/k!)
k=0
= 1 + x/(N+1) + x²/((N+1)(N+2)) + ⋯
val exp_mult_err_e :
x:float ->
dx:float ->
y:float ->
dy:float ->
Gsl_fun.resultExponential integrals
val expint_E1 : float -> floatval expint_E2 : float -> floatval expint_E1_scaled : float -> floatval expint_E2_scaled : float -> floatval expint_Ei : float -> floatval expint_Ei_scaled : float -> floatval expint_3 : float -> floatval atanint : float -> floatFermi-Dirac function
val fermi_dirac_m1 : float -> floatval fermi_dirac_0 : float -> floatval fermi_dirac_1 : float -> floatval fermi_dirac_2 : float -> floatval fermi_dirac_int : int -> float -> floatval fermi_dirac_mhalf : float -> floatval fermi_dirac_half : float -> floatval fermi_dirac_3half : float -> floatval fermi_dirac_inc_0 : float -> float -> floatGamma function
val gamma : float -> floatval lngamma : float -> floatval gammastar : float -> floatval gammainv : float -> floatval taylorcoeff : int -> float -> floatval doublefact : int -> floatval lnfact : int -> floatval lndoublefact : int -> floatval choose : int -> int -> floatval lnchoose : int -> int -> floatval poch : float -> float -> floatval lnpoch : float -> float -> floatval pochrel : float -> float -> floatval gamma_inc_Q : float -> float -> floatval gamma_inc_P : float -> float -> floatval gamma_inc : float -> float -> floatval beta : float -> float -> floatval lnbeta : float -> float -> floatval beta_inc : float -> float -> float -> floatGegenbauer functions aka Ultraspherical polynomials
Gegenbauer functions are defined in DLMF.
val gegenpoly_1 : float -> float -> floatgegenpoly_1 l x = C₁⁽ˡ⁾(x).
val gegenpoly_2 : float -> float -> floatgegenpoly_2 l x = C₂⁽ˡ⁾(x).
val gegenpoly_3 : float -> float -> floatgegenpoly_3 l x = C₃⁽ˡ⁾(x).
val gegenpoly_n : int -> float -> float -> floatgegenpoly_n n l x = Cₙ⁽ˡ⁾(x). Constraints: l > -1/2, n ≥ 0.
val gegenpoly_array : float -> float -> float array -> unitgegenpoly_array l x c computes an array of Gegenbauer polynomials c.(n) = Cₙ⁽ˡ⁾(x) for n = 0, 1, 2,̣..., Array.length c - 1. Constraints: l > -1/2.
Hypergeometric functions
Laguerre functions
val laguerre_1 : float -> float -> floatval laguerre_2 : float -> float -> floatval laguerre_3 : float -> float -> floatval laguerre_n : int -> float -> float -> floatLambert W functions
val lambert_W0 : float -> floatval lambert_Wm1 : float -> floatLegendre functions
val legendre_P1 : float -> floatval legendre_P2 : float -> floatval legendre_P3 : float -> floatval legendre_Pl : int -> float -> floatval legendre_Pl_array : float -> float array -> unitval legendre_Q0 : float -> floatval legendre_Q1 : float -> floatval legendre_Ql : int -> float -> floatAssociated Legendre functions and Spherical Harmonics
type legendre_t = | SchmidtSpecifies the computation of the Schmidt semi-normalized associated Legendre polynomials Sₗᵐ(x).
| SpharmSpecifies the computation of the spherical harmonic associated Legendre polynomials Yₗᵐ(x).
| FullSpecifies the computation of the fully normalized associated Legendre polynomials Nₗᵐ(x).
| NoneSpecifies the computation of the unnormalized associated Legendre polynomials Pₗᵐ(x).
val legendre_array : legendre_t -> int -> float -> float array -> unitlegendre_array norm lmax x result calculate all normalized associated Legendre polynomials for 0 ≤ l ≤ lmax and 0 ≤ m ≤ l for |x| ≤ 1. The norm parameter specifies which normalization is used. The normalized Pₗᵐ(x) values are stored in result, whose minimum size can be obtained from calling legendre_array_n. The array index of Pₗᵐ(x) is obtained from calling legendre_array_index(l, m). To include or exclude the Condon-Shortley phase factor of (-1)ᵐ, set the parameter csphase to either -1 or 1 respectively in the _e function. This factor is included by default.
val legendre_array_n : int -> intlegendre_array_n lmax returns the minimum array size for maximum degree lmax needed for the array versions of the associated Legendre functions. Size is calculated as the total number of Pₗᵐ(x) functions, plus extra space for precomputing multiplicative factors used in the recurrence relations.
val legendre_array_index : int -> int -> intlegendre_array_index l m returns the index into the result array of legendre_array, legendre_deriv_array, legendre_deriv_alt_array, legendre_deriv2_array, and legendre_deriv2_alt_array corresponding to Pₗᵐ(x), ∂ₓPₗᵐ(x), or ∂ₓ²Pₗₗᵐ(x). The index is given by l(l+1)/2 + m.
val legendre_Plm : int -> int -> float -> floatlegendre_Plm l m x and legendre_Plm_e l m x compute the associated Legendre polynomial Pₗᵐ(x) for m ≥ 0, l ≥ m, |x| ≤ 1.
val legendre_sphPlm : int -> int -> float -> floatlegendre_sphPlm l m x and legendre_Plm_e compute the normalized associated Legendre polynomial √((2l+1)/(4\pi)) √((l-m)!/(l+m)!) Pₗᵐ(x) suitable for use in spherical harmonics. The parameters must satisfy m ≥ 0, l ≥ m, |x| ≤ 1. Theses routines avoid the overflows that occur for the standard normalization of Pₗᵐ(x).
val log_abs : float -> floatval log_1plusx : float -> floatval log_1plusx_mx : float -> floatPower function
val pow_int : float -> int -> floatPsi (Digamma) function
val psi_int : int -> floatval psi_1piy : float -> floatval psi_1_int : int -> floatval psi_1 : float -> floatval psi_n : int -> float -> floatSynchrotron functions
val synchrotron_1 : float -> floatval synchrotron_2 : float -> floatTransport functions
val transport_2 : float -> floatval transport_3 : float -> floatval transport_4 : float -> floatval transport_5 : float -> floatTrigonometric functions
val hypot : float -> float -> floatval sinc : float -> floatval lnsinh : float -> floatval lncosh : float -> floatval angle_restrict_symm : float -> floatval angle_restrict_pos : float -> floatZeta functions
val zeta_int : int -> floatval zeta : float -> floatval hzeta : float -> float -> floatval eta_int : int -> float