### ----------------------------------------------------
### -- Math::Libgsl::Function
### -- Licenses: Artistic-2.0
### -- Authors: Fernando Santagata
### -- File: lib/Math/Libgsl/Raw/Function.rakumod
### ----------------------------------------------------
### -- Chunk 1 of 3
use v6;

unit module Math::Libgsl::Raw::Function:ver<0.0.3>:auth<zef:FRITH>;

use NativeCall;

sub LIB {
  run('/sbin/ldconfig', '-p', :chomp, :out).out.slurp(:close).split("\n").grep(/^ \s+ libgsl\.so\. \d+ /).sort.head.comb(/\S+/).head;
}

class gsl_sf_result is repr('CStruct') is export {
  has num64 $.val;
  has num64 $.err;
}

class gsl_sf_result_e10 is repr('CStruct') is export {
  has num64 $.val;
  has num64 $.err;
  has int32 $.e10;
}

class gsl_block is repr('CStruct') is export {
  has size_t         $.size;
  has Pointer[num64] $.data;
}

class gsl_vector is repr('CStruct') is export {
  has size_t         $.size;
  has size_t         $.stride;
  has Pointer[num64] $.data;
  has gsl_block      $.block;
  has int32          $.owner;
}

class gsl_matrix is repr('CStruct') is export {
  has size_t         $.size1;
  has size_t         $.size2;
  has size_t         $.tda;
  has Pointer[num64] $.data;
  has gsl_block      $.block;
  has int32          $.owner;
}

class gsl_eigen_symmv_workspace is repr('CStruct') is export {
  has size_t         $.size;
  has Pointer[num64] $.d;
  has Pointer[num64] $.sd;
  has Pointer[num64] $.gc;
  has Pointer[num64] $.gs;
}

class gsl_sf_mathieu_workspace is repr('CStruct') is export {
  has size_t                    $.size;
  has size_t                    $.even_order;
  has size_t                    $.odd_order;
  has int32                     $.extra_values;
  has num64                     $.qa;
  has num64                     $.qb;
  has Pointer[num64]            $.aa;
  has Pointer[num64]            $.bb;
  has Pointer[num64]            $.dd;
  has Pointer[num64]            $.ee;
  has Pointer[num64]            $.tt;
  has Pointer[num64]            $.e2;
  has Pointer[num64]            $.zz;
  has gsl_vector                $.eval;
  has gsl_matrix                $.evec;
  has gsl_eigen_symmv_workspace $.wmat;
}

# Airy Functions
sub gsl_sf_airy_Ai(num64 $x, uint32 $mode --> num64) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_Ai_e(num64 $x, uint32 $mode, gsl_sf_result $result --> int32) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_Bi(num64 $x, uint32 $mode --> num64) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_Bi_e(num64 $x, uint32 $mode, gsl_sf_result $result --> int32) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_Ai_scaled(num64 $x, uint32 $mode --> num64) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_Ai_scaled_e(num64 $x, uint32 $mode, gsl_sf_result $result --> int32) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_Bi_scaled(num64 $x, uint32 $mode --> num64) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_Bi_scaled_e(num64 $x, uint32 $mode, gsl_sf_result $result --> int32) is native(&LIB) is export(:airy) { * }
# Derivatives of Airy Functions
sub gsl_sf_airy_Ai_deriv(num64 $x, uint32 $mode --> num64) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_Ai_deriv_e(num64 $x, uint32 $mode, gsl_sf_result $result --> int32) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_Bi_deriv(num64 $x, uint32 $mode --> num64) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_Bi_deriv_e(num64 $x, uint32 $mode, gsl_sf_result $result --> int32) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_Ai_deriv_scaled(num64 $x, uint32 $mode --> num64) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_Ai_deriv_scaled_e(num64 $x, uint32 $mode, gsl_sf_result $result --> int32) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_Bi_deriv_scaled(num64 $x, uint32 $mode --> num64) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_Bi_deriv_scaled_e(num64 $x, uint32 $mode, gsl_sf_result $result --> int32) is native(&LIB) is export(:airy) { * }
# Zeros of Airy Functions
sub gsl_sf_airy_zero_Ai(uint32 $s --> num64) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_zero_Ai_e(uint32 $s, gsl_sf_result $result --> int32) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_zero_Bi(uint32 $s --> num64) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_zero_Bi_e(uint32 $s, gsl_sf_result $result --> int32) is native(&LIB) is export(:airy) { * }
# Zeros of Derivatives of Airy Functions
sub gsl_sf_airy_zero_Ai_deriv(uint32 $s --> num64) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_zero_Ai_deriv_e(uint32 $s, gsl_sf_result $result --> int32) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_zero_Bi_deriv(uint32 $s --> num64) is native(&LIB) is export(:airy) { * }
sub gsl_sf_airy_zero_Bi_deriv_e(uint32 $s, gsl_sf_result $result --> int32) is native(&LIB) is export(:airy) { * }
# Regular Cylindrical Bessel Functions
sub gsl_sf_bessel_J0(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_J0_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_J1(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_J1_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Jn(int32 $n, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Jn_e(int32 $n, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Jn_array(int32 $nmin, int32 $nmax, num64 $x, CArray[num64] $result_array --> int32) is native(&LIB) is export(:bessel) { * }
# Irregular Cylindrical Bessel Functions
sub gsl_sf_bessel_Y0(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Y0_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Y1(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Y1_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Yn(int32 $n, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Yn_e(int32 $n, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Yn_array(int32 $nmin, int32 $nmax, num64 $x, CArray[num64] $result_array --> int32) is native(&LIB) is export(:bessel) { * }
# Regular Modified Cylindrical Bessel Functions
sub gsl_sf_bessel_I0(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_I0_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_I1(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_I1_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_In(int32 $n, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_In_e(int32 $n, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_In_array(int32 $nmin, int32 $nmax, num64 $x, CArray[num64] $result_array --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_I0_scaled(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_I0_scaled_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_I1_scaled(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_I1_scaled_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_In_scaled(int32 $n, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_In_scaled_e(int32 $n, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_In_scaled_array(int32 $nmin, int32 $nmax, num64 $x, CArray[num64] $result_array --> int32) is native(&LIB) is export(:bessel) { * }
# Irregular Modified Cylindrical Bessel Functions
sub gsl_sf_bessel_K0(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_K0_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_K1(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_K1_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Kn(int32 $n, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Kn_e(int32 $n, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Kn_array(int32 $nmin, int32 $nmax, num64 $x, CArray[num64] $result_array --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_K0_scaled(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_K0_scaled_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_K1_scaled(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_K1_scaled_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Kn_scaled(int32 $n, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Kn_scaled_e(int32 $n, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Kn_scaled_array(int32 $nmin, int32 $nmax, num64 $x, CArray[num64] $result_array --> int32) is native(&LIB) is export(:bessel) { * }
# Regular Spherical Bessel Functions
sub gsl_sf_bessel_j0(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_j0_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_j1(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_j1_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_j2(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_j2_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_jl(int32 $l, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_jl_e(int32 $l, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_jl_array(int32 $lmax, num64 $x, CArray[num64] $result_array --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_jl_steed_array(int32 $lmax, num64 $x, CArray[num64] $result_array --> int32) is native(&LIB) is export(:bessel) { * }
# Irregular Spherical Bessel Functions
sub gsl_sf_bessel_y0(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_y0_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_y1(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_y1_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_y2(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_y2_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_yl(int32 $l, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_yl_e(int32 $l, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_yl_array(int32 $lmax, num64 $x, CArray[num64] $result_array --> int32) is native(&LIB) is export(:bessel) { * }
# Regular Modified Spherical Bessel Functions
sub gsl_sf_bessel_i0_scaled(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_i0_scaled_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_i1_scaled(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_i1_scaled_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_i2_scaled(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_i2_scaled_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_il_scaled(int32 $l, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_il_scaled_e(int32 $l, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_il_scaled_array(int32 $lmax, num64 $x, CArray[num64] $result_array --> int32) is native(&LIB) is export(:bessel) { * }
# Irregular Modified Spherical Bessel Functions
sub gsl_sf_bessel_k0_scaled(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_k0_scaled_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_k1_scaled(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_k1_scaled_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_k2_scaled(num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_k2_scaled_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_kl_scaled(int32 $l, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_kl_scaled_e(int32 $l, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_kl_scaled_array(int32 $lmax, num64 $x, CArray[num64] $result_array --> int32) is native(&LIB) is export(:bessel) { * }
# Regular Bessel Function—Fractional Order
sub gsl_sf_bessel_Jnu(num64 $nu, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Jnu_e(num64 $nu, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_sequence_Jnu_e(num64 $nu, uint32 $mode, size_t $size, CArray[num64] $v --> int32) is native(&LIB) is export(:bessel) { * }
# Irregular Bessel Function—Fractional Order
sub gsl_sf_bessel_Ynu(num64 $nu, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Ynu_e(num64 $nu, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
# Regular Modified Bessel Functions—Fractional Order
sub gsl_sf_bessel_Inu(num64 $nu, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Inu_e(num64 $nu, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Inu_scaled(num64 $nu, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Inu_scaled_e(num64 $nu, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
# Irregular Modified Bessel Functions—Fractional Order
sub gsl_sf_bessel_Knu(num64 $nu, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Knu_e(num64 $nu, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_lnKnu(num64 $nu, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_lnKnu_e(num64 $nu, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Knu_scaled(num64 $nu, num64 $x --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_Knu_scaled_e(num64 $nu, num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
# Zeros of Regular Bessel Functions
sub gsl_sf_bessel_zero_J0(uint32 $s --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_zero_J0_e(uint32 $s, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_zero_J1(uint32 $s --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_zero_J1_e(uint32 $s, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_zero_Jnu(num64 $nu, uint32 $s --> num64) is native(&LIB) is export(:bessel) { * }
sub gsl_sf_bessel_zero_Jnu_e(num64 $nu, uint32 $s, gsl_sf_result $result --> int32) is native(&LIB) is export(:bessel) { * }
# Clausen integral
sub gsl_sf_clausen(num64 $x --> num64) is native(&LIB) is export(:clausen) { * }
sub gsl_sf_clausen_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:clausen) { * }
# Coulomb functions
# Coulomb Normalized Hydrogenic Bound States
sub gsl_sf_hydrogenicR_1(num64 $Z, num64 $r --> num64) is native(&LIB) is export(:coulomb) { * }
sub gsl_sf_hydrogenicR_1_e(num64 $Z, num64 $r, gsl_sf_result $result --> int32) is native(&LIB) is export(:coulomb) { * }
sub gsl_sf_hydrogenicR(int32 $n, int32 $l, num64 $Z, num64 $r --> num64) is native(&LIB) is export(:coulomb) { * }
sub gsl_sf_hydrogenicR_e(int32 $n, int32 $l, num64 $Z, num64 $r, gsl_sf_result $result --> int32) is native(&LIB) is export(:coulomb) { * }
# Coulomb Wave Functions
sub gsl_sf_coulomb_wave_FG_e(num64 $eta, num64 $x, num64 $L_F, int32 $k, gsl_sf_result $F, gsl_sf_result $Fp,
  gsl_sf_result $G, gsl_sf_result $Gp, num64 $exp_F is rw, num64 $exp_G is rw --> int32)
  is native(&LIB) is export(:coulomb) { * }
sub gsl_sf_coulomb_wave_F_array(num64 $L_min, int32 $kmax, num64 $eta, num64 $x, CArray[num64] $fc_array,
  num64 $F_exponent is rw --> int32) is native(&LIB) is export(:coulomb) { * }
sub gsl_sf_coulomb_wave_FG_array(num64 $L_min, int32 $kmax, num64 $eta, num64 $x, CArray[num64] $fc_array,
  CArray[num64] $gc_array, num64 $F_exponent is rw, num64 $G_exponent is rw --> int32)
  is native(&LIB) is export(:coulomb) { * }
sub gsl_sf_coulomb_wave_FGp_array(num64 $L_min, int32 $kmax, num64 $eta, num64 $x, CArray[num64] $fc_array,
  CArray[num64] $fcp_array, CArray[num64] $gc_array, CArray[num64] $gcp_array, num64 $F_exponent is rw,
  num64 $G_exponent is rw --> int32) is native(&LIB) is export(:coulomb) { * }
sub gsl_sf_coulomb_wave_sphF_array(num64 $L_min, int32 $kmax, num64 $eta, num64 $x, CArray[num64] $fc_array,
  num64 $F_exponent is rw --> int32) is native(&LIB) is export(:coulomb) { * }
# Coulomb Wave Function Normalization Constant
sub gsl_sf_coulomb_CL_e(num64 $L, num64 $eta, gsl_sf_result $result --> int32) is native(&LIB) is export(:coulomb) { * }
sub gsl_sf_coulomb_CL_array(num64 $Lmin, int32 $kmax, num64 $eta, CArray[num64] $cl --> int32) is native(&LIB) is export(:coulomb) { * }
# Coupling Coefficients
sub gsl_sf_coupling_3j(int32 $two_ja, int32 $two_jb, int32 $two_jc, int32 $two_ma, int32 $two_mb, int32 $two_mc --> num64) is native(&LIB) is export(:coupling) { * }
sub gsl_sf_coupling_3j_e(int32 $two_ja, int32 $two_jb, int32 $two_jc, int32 $two_ma, int32 $two_mb, int32 $two_mc, gsl_sf_result $result --> int32) is native(&LIB) is export(:coupling) { * }
sub gsl_sf_coupling_6j(int32 $two_ja, int32 $two_jb, int32 $two_jc, int32 $two_jd, int32 $two_je, int32 $two_jf --> num64) is native(&LIB) is export(:coupling) { * }
sub gsl_sf_coupling_6j_e(int32 $two_ja, int32 $two_jb, int32 $two_jc, int32 $two_jd, int32 $two_je, int32 $two_jf, gsl_sf_result $result --> int32) is native(&LIB) is export(:coupling) { * }
sub gsl_sf_coupling_9j(int32 $two_ja, int32 $two_jb, int32 $two_jc, int32 $two_jd, int32 $two_je, int32 $two_jf, int32 $two_jg, int32 $two_jh, int32 $two_ji --> num64) is native(&LIB) is export(:coupling) { * }
sub gsl_sf_coupling_9j_e(int32 $two_ja, int32 $two_jb, int32 $two_jc, int32 $two_jd, int32 $two_je, int32 $two_jf, int32 $two_jg, int32 $two_jh, int32 $two_ji, gsl_sf_result $result --> int32) is native(&LIB) is export(:coupling) { * }
# Dawson Function
sub gsl_sf_dawson(num64 $x --> num64) is native(&LIB) is export(:dawson) { * }
sub gsl_sf_dawson_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:dawson) { * }
# Debye Functions
sub gsl_sf_debye_1(num64 $x --> num64) is native(&LIB) is export(:debye) { * }
sub gsl_sf_debye_1_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:debye) { * }
sub gsl_sf_debye_2(num64 $x --> num64) is native(&LIB) is export(:debye) { * }
sub gsl_sf_debye_2_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:debye) { * }
sub gsl_sf_debye_3(num64 $x --> num64) is native(&LIB) is export(:debye) { * }
sub gsl_sf_debye_3_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:debye) { * }
sub gsl_sf_debye_4(num64 $x --> num64) is native(&LIB) is export(:debye) { * }
sub gsl_sf_debye_4_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:debye) { * }
sub gsl_sf_debye_5(num64 $x --> num64) is native(&LIB) is export(:debye) { * }
sub gsl_sf_debye_5_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:debye) { * }
sub gsl_sf_debye_6(num64 $x --> num64) is native(&LIB) is export(:debye) { * }
sub gsl_sf_debye_6_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:debye) { * }
# Dilogarithms
sub gsl_sf_dilog(num64 $x --> num64) is native(&LIB) is export(:dilog) { * }
sub gsl_sf_dilog_e(num64 $x, gsl_sf_result $result --> int32) is native(&LIB) is export(:dilog) { * }
sub gsl_sf_complex_dilog_xy_e(num64 $x, num64 $y, gsl_sf_result $result_re, gsl_sf_result $result_im --> int32) is native(&LIB) is export(:dilog) { * }
sub gsl_sf_complex_dilog_e(num64 $r, num64 $theta, gsl_sf_result $result_re, gsl_sf_result $result_im --> int32) is native(&LIB) is export(:dilog) { * }
sub gsl_sf_complex_spence_xy_e(num64 $x, num64 $y, gsl_sf_result $real_sp, gsl_sf_result $imag_sp --> int32) is native(&LIB) is export(:dilog) { * }
# Multiplication with propagation of errors
sub gsl_sf_multiply(num64 $x, num64 $y --> num64) is native(&LIB) is export(:mult) { * }
sub gsl_sf_multiply_e(num64 $x, num64 $y, gsl_sf_result $res --> int32) is native(&LIB) is export(:mult) { * }
sub gsl_sf_multiply_err_e(num64 $x, num64 $dx, num64 $y, num64 $dy, gsl_sf_result $res --> int32) is native(&LIB) is export(:mult) { * }
# Elliptic Integrals
# Legendre complete
sub gsl_sf_ellint_Kcomp(num64 $k, int32 $mode --> num64) is native(&LIB) is export(:ellint) { * }
sub gsl_sf_ellint_Kcomp_e(num64 $k, int32 $mode, gsl_sf_result $res --> int32) is native(&LIB) is export(:ellint) { * }
sub gsl_sf_ellint_Ecomp(num64 $k, int32 $mode --> num64) is native(&LIB) is export(:ellint) { * }
sub gsl_sf_ellint_Ecomp_e(num64 $k, int32 $mode, gsl_sf_result $res --> int32) is native(&LIB) is export(:ellint) { * }
sub gsl_sf_ellint_Pcomp(num64 $k, num64 $n, int32 $mode --> num64) is native(&LIB) is export(:ellint) { * }
sub gsl_sf_ellint_Pcomp_e(num64 $k, num64 $n, int32 $mode, gsl_sf_result $res --> int32) is native(&LIB) is export(:ellint) { * }
sub gsl_sf_ellint_Dcomp(num64 $k, int32 $mode --> num64) is native(&LIB) is export(:ellint) { * }
sub gsl_sf_