#include <emscripten/bind.h>
#include <gsl/gsl_mode.h>
#include <gsl/gsl_errno.h>
#include <gsl/gsl_pow_int.h>
#include <gsl/gsl_minmax.h>
#include <specfunc/gsl_sf.h>

using namespace emscripten;

EMSCRIPTEN_BINDINGS(my_module) {

  class_<gsl_sf_result>("result")
      .constructor()
      .property("val", &gsl_sf_result::val)
      .property("err", &gsl_sf_result::err);

  class_<gsl_sf_result_e10>("result_e10")
      .constructor()
      .property("val", &gsl_sf_result_e10::val)
      .property("err", &gsl_sf_result_e10::err)
      .property("e10", &gsl_sf_result_e10::e10);

  function("airy_Ai_deriv",&gsl_sf_airy_Ai_deriv);
  function("airy_Ai",&gsl_sf_airy_Ai);
  function("airy_Ai_deriv_e",&gsl_sf_airy_Ai_deriv_e, allow_raw_pointers());
  function("airy_Ai_deriv_scaled",&gsl_sf_airy_Ai_deriv_scaled);
  function("airy_Ai_deriv_scaled_e",&gsl_sf_airy_Ai_deriv_scaled_e, allow_raw_pointers());
  function("airy_Ai_e",&gsl_sf_airy_Ai_e, allow_raw_pointers());
  function("airy_Ai_scaled",&gsl_sf_airy_Ai_scaled);
  function("airy_Ai_scaled_e",&gsl_sf_airy_Ai_scaled_e, allow_raw_pointers());
  function("airy_Bi",&gsl_sf_airy_Bi);
  function("airy_Bi_deriv",&gsl_sf_airy_Bi_deriv);
  function("airy_Bi_deriv_e",&gsl_sf_airy_Bi_deriv_e, allow_raw_pointers());
  function("airy_Bi_deriv_scaled",&gsl_sf_airy_Bi_deriv_scaled);
  function("airy_Bi_deriv_scaled_e",&gsl_sf_airy_Bi_deriv_scaled_e, allow_raw_pointers());
  function("airy_Bi_e",&gsl_sf_airy_Bi_e, allow_raw_pointers());
  function("airy_Bi_scaled",&gsl_sf_airy_Bi_scaled);
  function("airy_Bi_scaled_e",&gsl_sf_airy_Bi_scaled_e, allow_raw_pointers());
  function("airy_zero_Ai",&gsl_sf_airy_zero_Ai);
  function("airy_zero_Ai_deriv",&gsl_sf_airy_zero_Ai_deriv);
  function("airy_zero_Ai_deriv_e",&gsl_sf_airy_zero_Ai_deriv_e, allow_raw_pointers());
  function("airy_zero_Ai_e",&gsl_sf_airy_zero_Ai_e, allow_raw_pointers());
  function("airy_zero_Bi",&gsl_sf_airy_zero_Bi);
  function("airy_zero_Bi_deriv",&gsl_sf_airy_zero_Bi_deriv);
  function("airy_zero_Bi_deriv_e",&gsl_sf_airy_zero_Bi_deriv_e, allow_raw_pointers());
  function("airy_zero_Bi_e",&gsl_sf_airy_zero_Bi_e, allow_raw_pointers());
  function("angle_restrict_pos",&gsl_sf_angle_restrict_pos);
  function("angle_restrict_pos_e",&gsl_sf_angle_restrict_pos_e, allow_raw_pointers());
  function("angle_restrict_symm",&gsl_sf_angle_restrict_symm);
  function("angle_restrict_symm_e",&gsl_sf_angle_restrict_symm_e, allow_raw_pointers());
  function("atanint",&gsl_sf_atanint);
  function("atanint_e",&gsl_sf_atanint_e, allow_raw_pointers());
  function("bessel_I0",&gsl_sf_bessel_I0);
  function("bessel_I0_e",&gsl_sf_bessel_I0_e, allow_raw_pointers());
  function("bessel_I0_scaled",&gsl_sf_bessel_I0_scaled);
  function("bessel_i0_scaled",&gsl_sf_bessel_i0_scaled);
  function("bessel_I0_scaled_e",&gsl_sf_bessel_I0_scaled_e, allow_raw_pointers());
  function("bessel_i0_scaled_e",&gsl_sf_bessel_i0_scaled_e, allow_raw_pointers());
  function("bessel_I1",&gsl_sf_bessel_I1);
  function("bessel_I1_e",&gsl_sf_bessel_I1_e, allow_raw_pointers());
  function("bessel_I1_scaled",&gsl_sf_bessel_I1_scaled);
  function("bessel_i1_scaled",&gsl_sf_bessel_i1_scaled);
  function("bessel_I1_scaled_e",&gsl_sf_bessel_I1_scaled_e, allow_raw_pointers());
  function("bessel_i1_scaled_e",&gsl_sf_bessel_i1_scaled_e, allow_raw_pointers());
  function("bessel_i2_scaled",&gsl_sf_bessel_i2_scaled);
  function("bessel_i2_scaled_e",&gsl_sf_bessel_i2_scaled_e, allow_raw_pointers());
  function("bessel_il_scaled",&gsl_sf_bessel_il_scaled);
  // function("bessel_il_scaled_array",&gsl_sf_bessel_il_scaled_array);
  function("bessel_il_scaled_e",&gsl_sf_bessel_il_scaled_e, allow_raw_pointers());
  function("bessel_In",&gsl_sf_bessel_In);
  function("bessel_Inu",&gsl_sf_bessel_Inu);
  function("bessel_Inu_e",&gsl_sf_bessel_Inu_e, allow_raw_pointers());
  function("bessel_Inu_scaled",&gsl_sf_bessel_Inu_scaled);
  function("bessel_Inu_scaled_e",&gsl_sf_bessel_Inu_scaled_e, allow_raw_pointers());
  // function("bessel_In_array",&gsl_sf_bessel_In_array);
  function("bessel_In_e",&gsl_sf_bessel_In_e, allow_raw_pointers());
  function("bessel_In_scaled",&gsl_sf_bessel_In_scaled);
  // function("bessel_In_scaled_array",&gsl_sf_bessel_In_scaled_array);
  function("bessel_In_scaled_e",&gsl_sf_bessel_In_scaled_e, allow_raw_pointers());
  function("bessel_J0",&gsl_sf_bessel_J0);
  function("bessel_j0",&gsl_sf_bessel_j0);
  function("bessel_J0_e",&gsl_sf_bessel_J0_e, allow_raw_pointers());
  function("bessel_j0_e",&gsl_sf_bessel_j0_e, allow_raw_pointers());
  function("bessel_J1",&gsl_sf_bessel_J1);
  function("bessel_j1",&gsl_sf_bessel_j1);
  function("bessel_J1_e",&gsl_sf_bessel_J1_e, allow_raw_pointers());
  function("bessel_j1_e",&gsl_sf_bessel_j1_e, allow_raw_pointers());
  function("bessel_j2",&gsl_sf_bessel_j2);
  function("bessel_j2_e",&gsl_sf_bessel_j2_e, allow_raw_pointers());
  function("bessel_jl",&gsl_sf_bessel_jl);
  // function("bessel_jl_array",&gsl_sf_bessel_jl_array);
  function("bessel_jl_e",&gsl_sf_bessel_jl_e, allow_raw_pointers());
  // function("bessel_jl_steed_array",&gsl_sf_bessel_jl_steed_array, allow_raw_pointers());
  function("bessel_Jn",&gsl_sf_bessel_Jn);
  function("bessel_Jnu",&gsl_sf_bessel_Jnu);
  function("bessel_Jnu_e",&gsl_sf_bessel_Jnu_e, allow_raw_pointers());
  // function("bessel_Jn_array",&gsl_sf_bessel_Jn_array);
  function("bessel_Jn_e",&gsl_sf_bessel_Jn_e, allow_raw_pointers());
  function("bessel_K0",&gsl_sf_bessel_K0);
  function("bessel_K0_e",&gsl_sf_bessel_K0_e, allow_raw_pointers());
  function("bessel_K0_scaled",&gsl_sf_bessel_K0_scaled);
  function("bessel_k0_scaled",&gsl_sf_bessel_k0_scaled);
  function("bessel_K0_scaled_e",&gsl_sf_bessel_K0_scaled_e, allow_raw_pointers());
  function("bessel_k0_scaled_e",&gsl_sf_bessel_k0_scaled_e, allow_raw_pointers());
  function("bessel_K1",&gsl_sf_bessel_K1);
  function("bessel_K1_e",&gsl_sf_bessel_K1_e, allow_raw_pointers());
  function("bessel_K1_scaled",&gsl_sf_bessel_K1_scaled);
  function("bessel_k1_scaled",&gsl_sf_bessel_k1_scaled);
  function("bessel_K1_scaled_e",&gsl_sf_bessel_K1_scaled_e, allow_raw_pointers());
  function("bessel_k1_scaled_e",&gsl_sf_bessel_k1_scaled_e, allow_raw_pointers());
  function("bessel_k2_scaled",&gsl_sf_bessel_k2_scaled);
  function("bessel_k2_scaled_e",&gsl_sf_bessel_k2_scaled_e, allow_raw_pointers());
  function("bessel_kl_scaled",&gsl_sf_bessel_kl_scaled);
  // function("bessel_kl_scaled_array",&gsl_sf_bessel_kl_scaled_array);
  function("bessel_kl_scaled_e",&gsl_sf_bessel_kl_scaled_e, allow_raw_pointers());
  function("bessel_Kn",&gsl_sf_bessel_Kn);
  function("bessel_Knu",&gsl_sf_bessel_Knu);
  function("bessel_Knu_e",&gsl_sf_bessel_Knu_e, allow_raw_pointers());
  function("bessel_Knu_scaled",&gsl_sf_bessel_Knu_scaled);
  function("bessel_Knu_scaled_e",&gsl_sf_bessel_Knu_scaled_e, allow_raw_pointers());
  // function("bessel_Kn_array",&gsl_sf_bessel_Kn_array);
  function("bessel_Kn_e",&gsl_sf_bessel_Kn_e, allow_raw_pointers());
  function("bessel_Kn_scaled",&gsl_sf_bessel_Kn_scaled);
  // function("bessel_Kn_scaled_array",&gsl_sf_bessel_Kn_scaled_array);
  function("bessel_Kn_scaled_e",&gsl_sf_bessel_Kn_scaled_e, allow_raw_pointers());
  function("bessel_lnKnu",&gsl_sf_bessel_lnKnu);
  function("bessel_lnKnu_e",&gsl_sf_bessel_lnKnu_e, allow_raw_pointers());
  function("bessel_sequence_Jnu_e",&gsl_sf_bessel_sequence_Jnu_e, allow_raw_pointers());
  function("bessel_Y0",&gsl_sf_bessel_Y0);
  function("bessel_y0",&gsl_sf_bessel_y0);
  function("bessel_Y0_e",&gsl_sf_bessel_Y0_e, allow_raw_pointers());
  function("bessel_y0_e",&gsl_sf_bessel_y0_e, allow_raw_pointers());
  function("bessel_Y1",&gsl_sf_bessel_Y1);
  function("bessel_y1",&gsl_sf_bessel_y1);
  function("bessel_Y1_e",&gsl_sf_bessel_Y1_e, allow_raw_pointers());
  function("bessel_y1_e",&gsl_sf_bessel_y1_e, allow_raw_pointers());
  function("bessel_y2",&gsl_sf_bessel_y2);
  function("bessel_y2_e",&gsl_sf_bessel_y2_e, allow_raw_pointers());
  function("bessel_yl",&gsl_sf_bessel_yl);
  // function("bessel_yl_array",&gsl_sf_bessel_yl_array);
  function("bessel_yl_e",&gsl_sf_bessel_yl_e, allow_raw_pointers());
  function("bessel_Yn",&gsl_sf_bessel_Yn);
  function("bessel_Ynu",&gsl_sf_bessel_Ynu);
  function("bessel_Ynu_e",&gsl_sf_bessel_Ynu_e, allow_raw_pointers());
  // function("bessel_Yn_array",&gsl_sf_bessel_Yn_array);
  function("bessel_Yn_e",&gsl_sf_bessel_Yn_e, allow_raw_pointers());
  function("bessel_zero_J0",&gsl_sf_bessel_zero_J0);
  function("bessel_zero_J0_e",&gsl_sf_bessel_zero_J0_e, allow_raw_pointers());
  function("bessel_zero_J1",&gsl_sf_bessel_zero_J1);
  function("bessel_zero_J1_e",&gsl_sf_bessel_zero_J1_e, allow_raw_pointers());
  function("bessel_zero_Jnu",&gsl_sf_bessel_zero_Jnu);
  function("bessel_zero_Jnu_e",&gsl_sf_bessel_zero_Jnu_e, allow_raw_pointers());
  function("beta",&gsl_sf_beta);
  function("beta_e",&gsl_sf_beta_e, allow_raw_pointers());
  function("beta_inc",&gsl_sf_beta_inc);
  function("beta_inc_e",&gsl_sf_beta_inc_e, allow_raw_pointers());
  function("Chi",&gsl_sf_Chi);
  function("Chi_e",&gsl_sf_Chi_e, allow_raw_pointers());
  function("choose",&gsl_sf_choose);
  function("choose_e",&gsl_sf_choose_e, allow_raw_pointers());
  function("Ci",&gsl_sf_Ci);
  function("Ci_e",&gsl_sf_Ci_e, allow_raw_pointers());
  function("clausen",&gsl_sf_clausen);
  function("clausen_e",&gsl_sf_clausen_e, allow_raw_pointers());
  function("complex_cos_e",&gsl_sf_complex_cos_e, allow_raw_pointers());
  function("complex_dilog_e",&gsl_sf_complex_dilog_e, allow_raw_pointers());
  function("complex_logsin_e",&gsl_sf_complex_logsin_e, allow_raw_pointers());
  function("complex_log_e",&gsl_sf_complex_log_e, allow_raw_pointers());
  function("complex_sin_e",&gsl_sf_complex_sin_e, allow_raw_pointers());
  function("conicalP_0",&gsl_sf_conicalP_0);
  function("conicalP_0_e",&gsl_sf_conicalP_0_e, allow_raw_pointers());
  function("conicalP_1",&gsl_sf_conicalP_1);
  function("conicalP_1_e",&gsl_sf_conicalP_1_e, allow_raw_pointers());
  function("conicalP_cyl_reg",&gsl_sf_conicalP_cyl_reg);
  function("conicalP_cyl_reg_e",&gsl_sf_conicalP_cyl_reg_e, allow_raw_pointers());
  function("conicalP_half",&gsl_sf_conicalP_half);
  function("conicalP_half_e",&gsl_sf_conicalP_half_e, allow_raw_pointers());
  function("conicalP_mhalf",&gsl_sf_conicalP_mhalf);
  function("conicalP_mhalf_e",&gsl_sf_conicalP_mhalf_e, allow_raw_pointers());
  function("conicalP_sph_reg",&gsl_sf_conicalP_sph_reg);
  function("conicalP_sph_reg_e",&gsl_sf_conicalP_sph_reg_e, allow_raw_pointers());
  function("cos",&gsl_sf_cos);
  function("cos_e",&gsl_sf_cos_e, allow_raw_pointers());
  function("cos_err_e",&gsl_sf_cos_err_e, allow_raw_pointers());
//   function("coulomb_CL_array",&gsl_sf_coulomb_CL_array);
  function("coulomb_CL_e",&gsl_sf_coulomb_CL_e, allow_raw_pointers());
//  function("coulomb_wave_FGp_array",&gsl_sf_coulomb_wave_FGp_array);
//  function("coulomb_wave_FG_array",&gsl_sf_coulomb_wave_FG_array);
  function("coulomb_wave_FG_e",&gsl_sf_coulomb_wave_FG_e, allow_raw_pointers());
//  function("coulomb_wave_F_array",&gsl_sf_coulomb_wave_F_array);
//  function("coulomb_wave_sphF_array",&gsl_sf_coulomb_wave_sphF_array);
  function("coupling_3j",&gsl_sf_coupling_3j);
  function("coupling_3j_e",&gsl_sf_coupling_3j_e, allow_raw_pointers());
  function("coupling_6j",&gsl_sf_coupling_6j);
  function("coupling_6j_e",&gsl_sf_coupling_6j_e, allow_raw_pointers());
  function("coupling_9j",&gsl_sf_coupling_9j);
  function("coupling_9j_e",&gsl_sf_coupling_9j_e, allow_raw_pointers());
  function("dawson",&gsl_sf_dawson);
  function("dawson_e",&gsl_sf_dawson_e, allow_raw_pointers());
  function("debye_1",&gsl_sf_debye_1);
  function("debye_1_e",&gsl_sf_debye_1_e, allow_raw_pointers());
  function("debye_2",&gsl_sf_debye_2);
  function("debye_2_e",&gsl_sf_debye_2_e, allow_raw_pointers());
  function("debye_3",&gsl_sf_debye_3);
  function("debye_3_e",&gsl_sf_debye_3_e, allow_raw_pointers());
  function("debye_4",&gsl_sf_debye_4);
  function("debye_4_e",&gsl_sf_debye_4_e, allow_raw_pointers());
  function("debye_5",&gsl_sf_debye_5);
  function("debye_5_e",&gsl_sf_debye_5_e, allow_raw_pointers());
  function("debye_6",&gsl_sf_debye_6);
  function("debye_6_e",&gsl_sf_debye_6_e, allow_raw_pointers());
  function("dilog",&gsl_sf_dilog);
  function("dilog_e",&gsl_sf_dilog_e, allow_raw_pointers());
  function("doublefact",&gsl_sf_doublefact);
  function("doublefact_e",&gsl_sf_doublefact_e, allow_raw_pointers());
  function("ellint_D",&gsl_sf_ellint_D);
  function("ellint_D_e",&gsl_sf_ellint_D_e, allow_raw_pointers());
  function("ellint_E",&gsl_sf_ellint_E);
  function("ellint_Ecomp",&gsl_sf_ellint_Ecomp);
  function("ellint_Ecomp_e",&gsl_sf_ellint_Ecomp_e, allow_raw_pointers());
  function("ellint_E_e",&gsl_sf_ellint_E_e, allow_raw_pointers());
  function("ellint_F",&gsl_sf_ellint_F);
  function("ellint_F_e",&gsl_sf_ellint_F_e, allow_raw_pointers());
  function("ellint_Kcomp",&gsl_sf_ellint_Kcomp);
  function("ellint_Kcomp_e",&gsl_sf_ellint_Kcomp_e, allow_raw_pointers());
  function("ellint_P",&gsl_sf_ellint_P);
  function("ellint_Pcomp",&gsl_sf_ellint_Pcomp);
  function("ellint_Pcomp_e",&gsl_sf_ellint_Pcomp_e, allow_raw_pointers());
  function("ellint_P_e",&gsl_sf_ellint_P_e, allow_raw_pointers());
  function("ellint_RC",&gsl_sf_ellint_RC);
  function("ellint_RC_e",&gsl_sf_ellint_RC_e, allow_raw_pointers());
  function("ellint_RD",&gsl_sf_ellint_RD);
  function("ellint_RD_e",&gsl_sf_ellint_RD_e, allow_raw_pointers());
  function("ellint_RF",&gsl_sf_ellint_RF);
  function("ellint_RF_e",&gsl_sf_ellint_RF_e, allow_raw_pointers());
  function("ellint_RJ",&gsl_sf_ellint_RJ);
  function("ellint_RJ_e",&gsl_sf_ellint_RJ_e, allow_raw_pointers());
  function("elljac_e",&gsl_sf_elljac_e, allow_raw_pointers());
  function("erf",&gsl_sf_erf);
  function("erfc",&gsl_sf_erfc);
  function("erfc_e",&gsl_sf_erfc_e, allow_raw_pointers());
  function("erf_e",&gsl_sf_erf_e, allow_raw_pointers());
  function("erf_Q",&gsl_sf_erf_Q);
  function("erf_Q_e",&gsl_sf_erf_Q_e, allow_raw_pointers());
  function("erf_Z",&gsl_sf_erf_Z);
  function("erf_Z_e",&gsl_sf_erf_Z_e, allow_raw_pointers());
  function("eta",&gsl_sf_eta);
  function("eta_e",&gsl_sf_eta_e, allow_raw_pointers());
  function("eta_int",&gsl_sf_eta_int);
  function("eta_int_e",&gsl_sf_eta_int_e, allow_raw_pointers());
  function("exp",&gsl_sf_exp);
  function("expint_3",&gsl_sf_expint_3);
  function("expint_3_e",&gsl_sf_expint_3_e, allow_raw_pointers());
  function("expint_E1",&gsl_sf_expint_E1);
  function("expint_E1_e",&gsl_sf_expint_E1_e, allow_raw_pointers());
  function("expint_E2",&gsl_sf_expint_E2);
  function("expint_E2_e",&gsl_sf_expint_E2_e, allow_raw_pointers());
  function("expint_Ei",&gsl_sf_expint_Ei);
  function("expint_Ei_e",&gsl_sf_expint_Ei_e, allow_raw_pointers());
  function("expint_En",&gsl_sf_expint_En);
  function("expint_En_e",&gsl_sf_expint_En_e, allow_raw_pointers());
  function("expm1",&gsl_sf_expm1);
  function("expm1_e",&gsl_sf_expm1_e, allow_raw_pointers());
  function("exprel",&gsl_sf_exprel);
  function("exprel_2",&gsl_sf_exprel_2);
  function("exprel_2_e",&gsl_sf_exprel_2_e, allow_raw_pointers());
  function("exprel_e",&gsl_sf_exprel_e, allow_raw_pointers());
  function("exprel_n",&gsl_sf_exprel_n);
  function("exprel_n_e",&gsl_sf_exprel_n_e, allow_raw_pointers());
  function("exp_e",&gsl_sf_exp_e, allow_raw_pointers());
  function("exp_e10_e",&gsl_sf_exp_e10_e, allow_raw_pointers());
  function("exp_err_e",&gsl_sf_exp_err_e, allow_raw_pointers());
  function("exp_err_e10_e",&gsl_sf_exp_err_e10_e, allow_raw_pointers());
  function("exp_mult",&gsl_sf_exp_mult);
  function("exp_mult_e",&gsl_sf_exp_mult_e, allow_raw_pointers());
  function("exp_mult_e10_e",&gsl_sf_exp_mult_e10_e, allow_raw_pointers());
  function("exp_mult_err_e",&gsl_sf_exp_mult_err_e, allow_raw_pointers());
  function("exp_mult_err_e10_e",&gsl_sf_exp_mult_err_e10_e, allow_raw_pointers());
  function("fact",&gsl_sf_fact);
  function("fact_e",&gsl_sf_fact_e, allow_raw_pointers());
  function("fermi_dirac_0",&gsl_sf_fermi_dirac_0);
  function("fermi_dirac_0_e",&gsl_sf_fermi_dirac_0_e, allow_raw_pointers());
  function("fermi_dirac_1",&gsl_sf_fermi_dirac_1);
  function("fermi_dirac_1_e",&gsl_sf_fermi_dirac_1_e, allow_raw_pointers());
  function("fermi_dirac_2",&gsl_sf_fermi_dirac_2);
  function("fermi_dirac_2_e",&gsl_sf_fermi_dirac_2_e, allow_raw_pointers());
  function("fermi_dirac_3half",&gsl_sf_fermi_dirac_3half);
  function("fermi_dirac_3half_e",&gsl_sf_fermi_dirac_3half_e, allow_raw_pointers());
  function("fermi_dirac_half",&gsl_sf_fermi_dirac_half);
  function("fermi_dirac_half_e",&gsl_sf_fermi_dirac_half_e, allow_raw_pointers());
  function("fermi_dirac_inc_0",&gsl_sf_fermi_dirac_inc_0);
  function("fermi_dirac_inc_0_e",&gsl_sf_fermi_dirac_inc_0_e, allow_raw_pointers());
  function("fermi_dirac_int",&gsl_sf_fermi_dirac_int);
  function("fermi_dirac_int_e",&gsl_sf_fermi_dirac_int_e, allow_raw_pointers());
  function("fermi_dirac_m1",&gsl_sf_fermi_dirac_m1);
  function("fermi_dirac_m1_e",&gsl_sf_fermi_dirac_m1_e, allow_raw_pointers());
  function("fermi_dirac_mhalf",&gsl_sf_fermi_dirac_mhalf);
  function("fermi_dirac_mhalf_e",&gsl_sf_fermi_dirac_mhalf_e, allow_raw_pointers());
  function("gamma",&gsl_sf_gamma);
  function("gammainv",&gsl_sf_gammainv);
  function("gammainv_e",&gsl_sf_gammainv_e, allow_raw_pointers());
  function("gammastar",&gsl_sf_gammastar);
  function("gammastar_e",&gsl_sf_gammastar_e, allow_raw_pointers());
  function("gamma_e",&gsl_sf_gamma_e, allow_raw_pointers());
  function("gamma_inc",&gsl_sf_gamma_inc);
  function("gamma_inc_e",&gsl_sf_gamma_inc_e, allow_raw_pointers());
  function("gamma_inc_P",&gsl_sf_gamma_inc_P);
  function("gamma_inc_P_e",&gsl_sf_gamma_inc_P_e, allow_raw_pointers());
  function("gamma_inc_Q",&gsl_sf_gamma_inc_Q);
  function("gamma_inc_Q_e",&gsl_sf_gamma_inc_Q_e, allow_raw_pointers());
  function("gegenpoly_1",&gsl_sf_gegenpoly_1);
  function("gegenpoly_1_e",&gsl_sf_gegenpoly_1_e, allow_raw_pointers());
  function("gegenpoly_2",&gsl_sf_gegenpoly_2);
  function("gegenpoly_2_e",&gsl_sf_gegenpoly_2_e, allow_raw_pointers());
  function("gegenpoly_3",&gsl_sf_gegenpoly_3);
  function("gegenpoly_3_e",&gsl_sf_gegenpoly_3_e, allow_raw_pointers());
//  function("gegenpoly_array",&gsl_sf_gegenpoly_array);
  function("gegenpoly_n",&gsl_sf_gegenpoly_n);
  function("gegenpoly_n_e",&gsl_sf_gegenpoly_n_e, allow_raw_pointers());
  function("hazard",&gsl_sf_hazard);
  function("hazard_e",&gsl_sf_hazard_e, allow_raw_pointers());
  function("hydrogenicR",&gsl_sf_hydrogenicR);
  function("hydrogenicR_1",&gsl_sf_hydrogenicR_1);
  function("hydrogenicR_1_e",&gsl_sf_hydrogenicR_1_e, allow_raw_pointers());
  function("hydrogenicR_e",&gsl_sf_hydrogenicR_e, allow_raw_pointers());
  function("hyperg_0F1",&gsl_sf_hyperg_0F1);
  function("hyperg_0F1_e",&gsl_sf_hyperg_0F1_e, allow_raw_pointers());
  function("hyperg_1F1",&gsl_sf_hyperg_1F1);
  function("hyperg_1F1_e",&gsl_sf_hyperg_1F1_e, allow_raw_pointers());
  function("hyperg_1F1_int",&gsl_sf_hyperg_1F1_int);
  function("hyperg_1F1_int_e",&gsl_sf_hyperg_1F1_int_e, allow_raw_pointers());
  function("hyperg_2F0",&gsl_sf_hyperg_2F0);
  function("hyperg_2F0_e",&gsl_sf_hyperg_2F0_e, allow_raw_pointers());
  function("hyperg_2F1",&gsl_sf_hyperg_2F1);
  function("hyperg_2F1_conj",&gsl_sf_hyperg_2F1_conj);
  function("hyperg_2F1_conj_e",&gsl_sf_hyperg_2F1_conj_e, allow_raw_pointers());
  function("hyperg_2F1_conj_renorm",&gsl_sf_hyperg_2F1_conj_renorm);
  function("hyperg_2F1_conj_renorm_e",&gsl_sf_hyperg_2F1_conj_renorm_e, allow_raw_pointers());
  function("hyperg_2F1_e",&gsl_sf_hyperg_2F1_e, allow_raw_pointers());
  function("hyperg_2F1_renorm",&gsl_sf_hyperg_2F1_renorm);
  function("hyperg_2F1_renorm_e",&gsl_sf_hyperg_2F1_renorm_e, allow_raw_pointers());
  function("hyperg_U",&gsl_sf_hyperg_U);
  function("hyperg_U_e",&gsl_sf_hyperg_U_e, allow_raw_pointers());
  function("hyperg_U_e10_e",&gsl_sf_hyperg_U_e10_e, allow_raw_pointers());
  function("hyperg_U_int",&gsl_sf_hyperg_U_int);
  function("hyperg_U_int_e",&gsl_sf_hyperg_U_int_e, allow_raw_pointers());
  function("hyperg_U_int_e10_e",&gsl_sf_hyperg_U_int_e10_e, allow_raw_pointers());
  function("hypot",&gsl_sf_hypot);
  function("hypot_e",&gsl_sf_hypot_e, allow_raw_pointers());
  function("hzeta",&gsl_sf_hzeta);
  function("hzeta_e",&gsl_sf_hzeta_e, allow_raw_pointers());
  function("laguerre_1",&gsl_sf_laguerre_1);
  function("laguerre_1_e",&gsl_sf_laguerre_1_e, allow_raw_pointers());
  function("laguerre_2",&gsl_sf_laguerre_2);
  function("laguerre_2_e",&gsl_sf_laguerre_2_e, allow_raw_pointers());
  function("laguerre_3",&gsl_sf_laguerre_3);
  function("laguerre_3_e",&gsl_sf_laguerre_3_e, allow_raw_pointers());
  function("laguerre_n",&gsl_sf_laguerre_n);
  function("laguerre_n_e",&gsl_sf_laguerre_n_e, allow_raw_pointers());
  function("lambert_W0",&gsl_sf_lambert_W0);
  function("lambert_W0_e",&gsl_sf_lambert_W0_e, allow_raw_pointers());
  function("lambert_Wm1",&gsl_sf_lambert_Wm1);
  function("lambert_Wm1_e",&gsl_sf_lambert_Wm1_e, allow_raw_pointers());
  function("legendre_array_size",&gsl_sf_legendre_array_size);
  function("legendre_H3d",&gsl_sf_legendre_H3d);
  function("legendre_H3d_0",&gsl_sf_legendre_H3d_0);
  function("legendre_H3d_0_e",&gsl_sf_legendre_H3d_0_e, allow_raw_pointers());
  function("legendre_H3d_1",&gsl_sf_legendre_H3d_1);
  function("legendre_H3d_1_e",&gsl_sf_legendre_H3d_1_e, allow_raw_pointers());
//   function("legendre_H3d_array",&gsl_sf_legendre_H3d_array);
  function("legendre_H3d_e",&gsl_sf_legendre_H3d_e, allow_raw_pointers());
  function("legendre_P1",&gsl_sf_legendre_P1);
  function("legendre_P1_e",&gsl_sf_legendre_P1_e, allow_raw_pointers());
  function("legendre_P2",&gsl_sf_legendre_P2);
  function("legendre_P2_e",&gsl_sf_legendre_P2_e, allow_raw_pointers());
  function("legendre_P3",&gsl_sf_legendre_P3);
  function("legendre_P3_e",&gsl_sf_legendre_P3_e, allow_raw_pointers());
  function("legendre_Pl",&gsl_sf_legendre_Pl);
  function("legendre_Plm",&gsl_sf_legendre_Plm);
//   function("legendre_Plm_array",&gsl_sf_legendre_Plm_array);
//  function("legendre_Plm_deriv_array",&gsl_sf_legendre_Plm_deriv_array);
  function("legendre_Plm_e",&gsl_sf_legendre_Plm_e, allow_raw_pointers());
//   function("legendre_Pl_array",&gsl_sf_legendre_Pl_array);
//  function("legendre_Pl_deriv_array",&gsl_sf_legendre_Pl_deriv_array);
  function("legendre_Pl_e",&gsl_sf_legendre_Pl_e, allow_raw_pointers());
  function("legendre_Q0",&gsl_sf_legendre_Q0);
  function("legendre_Q0_e",&gsl_sf_legendre_Q0_e, allow_raw_pointers());
  function("legendre_Q1",&gsl_sf_legendre_Q1);
  function("legendre_Q1_e",&gsl_sf_legendre_Q1_e, allow_raw_pointers());
  function("legendre_Ql",&gsl_sf_legendre_Ql);
  function("legendre_Ql_e",&gsl_sf_legendre_Ql_e, allow_raw_pointers());
  function("legendre_sphPlm",&gsl_sf_legendre_sphPlm);
//  function("legendre_sphPlm_array",&gsl_sf_legendre_sphPlm_array);
//  function("legendre_sphPlm_deriv_array",&gsl_sf_legendre_sphPlm_deriv_array);
  function("legendre_sphPlm_e",&gsl_sf_legendre_sphPlm_e, allow_raw_pointers());
  function("lnbeta",&gsl_sf_lnbeta);
  function("lnbeta_e",&gsl_sf_lnbeta_e, allow_raw_pointers());
  function("lnchoose",&gsl_sf_lnchoose);
  function("lnchoose_e",&gsl_sf_lnchoose_e, allow_raw_pointers());
  function("lncosh",&gsl_sf_lncosh);
  function("lncosh_e",&gsl_sf_lncosh_e, allow_raw_pointers());
  function("lndoublefact",&gsl_sf_lndoublefact);
  function("lndoublefact_e",&gsl_sf_lndoublefact_e, allow_raw_pointers());
  function("lnfact",&gsl_sf_lnfact);
  function("lnfact_e",&gsl_sf_lnfact_e, allow_raw_pointers());
  function("lngamma",&gsl_sf_lngamma);
  function("lngamma_complex_e",&gsl_sf_lngamma_complex_e, allow_raw_pointers());
  function("lngamma_e",&gsl_sf_lngamma_e, allow_raw_pointers());
  function("lngamma_sgn_e",&gsl_sf_lngamma_sgn_e, allow_raw_pointers());
  function("lnpoch",&gsl_sf_lnpoch);
  function("lnpoch_e",&gsl_sf_lnpoch_e, allow_raw_pointers());
  function("lnpoch_sgn_e",&gsl_sf_lnpoch_sgn_e, allow_raw_pointers());
  function("lnsinh",&gsl_sf_lnsinh);
  function("lnsinh_e",&gsl_sf_lnsinh_e, allow_raw_pointers());
  function("log",&gsl_sf_log);
  function("log_1plusx",&gsl_sf_log_1plusx);
  function("log_1plusx_e",&gsl_sf_log_1plusx_e, allow_raw_pointers());
  function("log_1plusx_mx",&gsl_sf_log_1plusx_mx);
  function("log_1plusx_mx_e",&gsl_sf_log_1plusx_mx_e, allow_raw_pointers());
  function("log_abs",&gsl_sf_log_abs);
  function("log_abs_e",&gsl_sf_log_abs_e, allow_raw_pointers());
  function("log_e",&gsl_sf_log_e, allow_raw_pointers());
  function("log_erfc",&gsl_sf_log_erfc);
  function("log_erfc_e",&gsl_sf_log_erfc_e, allow_raw_pointers());
//  function("mathieu_a",&gsl_sf_mathieu_a);
//  function("mathieu_alloc",&gsl_sf_mathieu_alloc);
//  function("mathieu_a_array",&gsl_sf_mathieu_a_array);
//  function("mathieu_b",&gsl_sf_mathieu_b);
//   function("mathieu_b_array",&gsl_sf_mathieu_b_array);
//  function("mathieu_ce",&gsl_sf_mathieu_ce);
//   function("mathieu_ce_array",&gsl_sf_mathieu_ce_array);
//  function("mathieu_free",&gsl_sf_mathieu_free);
//  function("mathieu_Mc",&gsl_sf_mathieu_Mc);
//  function("mathieu_Mc_array",&gsl_sf_mathieu_Mc_array);
//  function("mathieu_Ms",&gsl_sf_mathieu_Ms);
//  function("mathieu_Ms_array",&gsl_sf_mathieu_Ms_array);
//  function("mathieu_se",&gsl_sf_mathieu_se);
//  function("mathieu_se_array",&gsl_sf_mathieu_se_array);
  function("multiply_e",&gsl_sf_multiply_e, allow_raw_pointers());
  function("multiply_err_e",&gsl_sf_multiply_err_e, allow_raw_pointers());
  function("poch",&gsl_sf_poch);
  function("pochrel",&gsl_sf_pochrel);
  function("pochrel_e",&gsl_sf_pochrel_e, allow_raw_pointers());
  function("poch_e",&gsl_sf_poch_e, allow_raw_pointers());
//  function("polar_to_rect",&gsl_sf_polar_to_rect);
  function("pow_int",&gsl_sf_pow_int);
  function("pow_int_e",&gsl_sf_pow_int_e, allow_raw_pointers());
  function("psi",&gsl_sf_psi);
  function("psi_1",&gsl_sf_psi_1);
  function("psi_1piy",&gsl_sf_psi_1piy);
  function("psi_1piy_e",&gsl_sf_psi_1piy_e, allow_raw_pointers());
  function("psi_1_e",&gsl_sf_psi_1_e, allow_raw_pointers());
  function("psi_1_int",&gsl_sf_psi_1_int);
  function("psi_1_int_e",&gsl_sf_psi_1_int_e, allow_raw_pointers());
  function("psi_e",&gsl_sf_psi_e, allow_raw_pointers());
  function("psi_int",&gsl_sf_psi_int);
  function("psi_int_e",&gsl_sf_psi_int_e, allow_raw_pointers());
  function("psi_n",&gsl_sf_psi_n);
  function("psi_n_e",&gsl_sf_psi_n_e, allow_raw_pointers());
  // function("rect_to_polar",&gsl_sf_rect_to_polar);
  function("Shi",&gsl_sf_Shi);
  function("Shi_e",&gsl_sf_Shi_e, allow_raw_pointers());
  function("Si",&gsl_sf_Si);
  function("sinc",&gsl_sf_sinc);
  function("sin",&gsl_sf_sin);
  function("sinc_e",&gsl_sf_sinc_e, allow_raw_pointers());
  function("sin_e",&gsl_sf_sin_e, allow_raw_pointers());
  function("sin_err_e",&gsl_sf_sin_err_e, allow_raw_pointers());
  function("Si_e",&gsl_sf_Si_e, allow_raw_pointers());
  function("synchrotron_1",&gsl_sf_synchrotron_1);
  function("synchrotron_1_e",&gsl_sf_synchrotron_1_e, allow_raw_pointers());
  function("synchrotron_2",&gsl_sf_synchrotron_2);
  function("synchrotron_2_e",&gsl_sf_synchrotron_2_e, allow_raw_pointers());
  function("taylorcoeff",&gsl_sf_taylorcoeff);
  function("taylorcoeff_e",&gsl_sf_taylorcoeff_e, allow_raw_pointers());
  function("transport_2",&gsl_sf_transport_2);
  function("transport_2_e",&gsl_sf_transport_2_e, allow_raw_pointers());
  function("transport_3",&gsl_sf_transport_3);
  function("transport_3_e",&gsl_sf_transport_3_e, allow_raw_pointers());
  function("transport_4",&gsl_sf_transport_4);
  function("transport_4_e",&gsl_sf_transport_4_e, allow_raw_pointers());
  function("transport_5",&gsl_sf_transport_5);
  function("transport_5_e",&gsl_sf_transport_5_e, allow_raw_pointers());
  function("zeta",&gsl_sf_zeta);
  function("zetam1",&gsl_sf_zetam1);
  function("zetam1_e",&gsl_sf_zetam1_e, allow_raw_pointers());
  function("zetam1_int",&gsl_sf_zetam1_int);
  function("zetam1_int_e",&gsl_sf_zetam1_int_e, allow_raw_pointers());
  function("zeta_e",&gsl_sf_zeta_e, allow_raw_pointers());
  function("zeta_int",&gsl_sf_zeta_int);
  function("zeta_int_e",&gsl_sf_zeta_int_e, allow_raw_pointers());
}
