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, ::types::Result) {
let mut result = unsafe { zeroed::<ffi::gsl_sf_result>() };
let ret = unsafe { ffi::gsl_sf_hydrogenicR_1_e(Z, r, &mut result) };
(enums::Value::from(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, ::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) };
(enums::Value::from(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, ::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) };
(enums::Value::from(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 {
enums::Value::from(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 {
enums::Value::from(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 {
enums::Value::from(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 {
enums::Value::from(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, ::types::Result) {
let mut result = unsafe { zeroed::<ffi::gsl_sf_result>() };
let ret = unsafe { ffi::gsl_sf_coulomb_CL_e(L, eta, &mut result) };
(enums::Value::from(ret), ::types::Result{val: result.val, err: result.err})
}
pub fn CL_array(Lmin: f64, eta: f64, cl: &mut [f64]) -> enums::Value {
enums::Value::from(unsafe { ffi::gsl_sf_coulomb_CL_array(Lmin, cl.len() as i32, eta,
cl.as_mut_ptr()) })
}