use ffi;
use std::mem::zeroed;
use enums;
pub fn hydrogenicR_1(Z: f64, r: f64) -> f64 {
unsafe { ffi::gsl_sf_hydrogenicR_1(Z, r) }
}
pub fn hydrogenicR_1_e(Z: f64, r: f64) -> (enums::value::Value, ::types::Result) {
let mut result = unsafe { zeroed::<ffi::gsl_sf_result>() };
let ret = unsafe { ffi::gsl_sf_hydrogenicR_1_e(Z, r, &mut result) };
(ret, ::types::Result{val: result.val, err: result.err})
}
pub fn hydrogenicR(n: i32, l: i32, Z: f64, r: f64) -> f64 {
unsafe { ffi::gsl_sf_hydrogenicR(n, l, Z, r) }
}
pub fn hydrogenicR_e(n: i32, l: i32, Z: f64, r: f64) -> (enums::value::Value, ::types::Result) {
let mut result = unsafe { zeroed::<ffi::gsl_sf_result>() };
let ret = unsafe { ffi::gsl_sf_hydrogenicR_e(n, l, Z, r, &mut result) };
(ret, ::types::Result{val: result.val, err: result.err})
}
pub fn wave_FG_e(eta: f64, x: f64, L_F: f64, k: i32, exp_F: &mut f64, exp_G: &mut f64) -> (enums::value::Value, ::types::Result, ::types::Result, ::types::Result, ::types::Result) {
let mut F = unsafe { zeroed::<ffi::gsl_sf_result>() };
let mut Fp = unsafe { zeroed::<ffi::gsl_sf_result>() };
let mut G = unsafe { zeroed::<ffi::gsl_sf_result>() };
let mut Gp = unsafe { zeroed::<ffi::gsl_sf_result>() };
let ret = unsafe { ffi::gsl_sf_coulomb_wave_FG_e(eta, x, L_F, k, &mut F, &mut Fp, &mut G, &mut Gp, exp_F, exp_G) };
(ret,
::types::Result{val: F.val, err: F.err},
::types::Result{val: Fp.val, err: Fp.err},
::types::Result{val: G.val, err: G.err},
::types::Result{val: Gp.val, err: Gp.err})
}
pub fn wave_F_array(L_min: f64, eta: f64, x: f64, fc_array: &mut[f64], F_exponent: &mut f64) -> enums::value::Value {
unsafe { ffi::gsl_sf_coulomb_wave_F_array(L_min, fc_array.len() as i32, eta, x, fc_array.as_mut_ptr(), F_exponent) }
}
pub fn wave_FG_array(L_min: f64, eta: f64, x: f64, fc_array: &mut[f64], gc_array: &mut[f64], F_exponent: &mut f64,
G_exponent: &mut f64) -> enums::value::Value {
unsafe { ffi::gsl_sf_coulomb_wave_FG_array(L_min, fc_array.len() as i32, eta, x, fc_array.as_mut_ptr(), gc_array.as_mut_ptr(),
F_exponent, G_exponent) }
}
pub fn wave_FGp_array(L_min: f64, eta: f64, x: f64, fc_array: &mut[f64], fcp_array: &mut[f64], gc_array: &mut[f64], gcp_array: &mut[f64],
F_exponent: &mut f64, G_exponent: &mut f64) -> enums::value::Value {
unsafe { ffi::gsl_sf_coulomb_wave_FGp_array(L_min, fc_array.len() as i32, eta, x, fc_array.as_mut_ptr(), fcp_array.as_mut_ptr(),
gc_array.as_mut_ptr(), gcp_array.as_mut_ptr(), F_exponent, G_exponent) }
}
pub fn wave_sphF_array(L_min: f64, eta: f64, x: f64, fc_array: &mut[f64], F_exponent: &mut f64) -> enums::value::Value {
unsafe { ffi::gsl_sf_coulomb_wave_sphF_array(L_min, fc_array.len() as i32, eta, x, fc_array.as_mut_ptr(), F_exponent) }
}
pub fn CL_e(L: f64, eta: f64) -> (enums::value::Value, ::types::Result) {
let mut result = unsafe { zeroed::<ffi::gsl_sf_result>() };
let ret = unsafe { ffi::gsl_sf_coulomb_CL_e(L, eta, &mut result) };
(ret, ::types::Result{val: result.val, err: result.err})
}
pub fn CL_array(Lmin: f64, eta: f64, cl: &mut [f64]) -> enums::value::Value {
unsafe { ffi::gsl_sf_coulomb_CL_array(Lmin, cl.len() as i32, eta, cl.as_mut_ptr()) }
}