use crate::{types, Value};
use std::mem::MaybeUninit;
#[doc(alias = "gsl_sf_hydrogenicR_1")]
pub fn hydrogenicR_1(Z: f64, r: f64) -> f64 {
unsafe { sys::gsl_sf_hydrogenicR_1(Z, r) }
}
#[doc(alias = "gsl_sf_hydrogenicR_1_e")]
pub fn hydrogenicR_1_e(Z: f64, r: f64) -> Result<types::Result, Value> {
let mut result = MaybeUninit::<sys::gsl_sf_result>::uninit();
let ret = unsafe { sys::gsl_sf_hydrogenicR_1_e(Z, r, result.as_mut_ptr()) };
result_handler!(ret, unsafe { result.assume_init() }.into())
}
#[doc(alias = "gsl_sf_hydrogenicR")]
pub fn hydrogenicR(n: i32, l: i32, Z: f64, r: f64) -> f64 {
unsafe { sys::gsl_sf_hydrogenicR(n, l, Z, r) }
}
#[doc(alias = "gsl_sf_hydrogenicR_e")]
pub fn hydrogenicR_e(n: i32, l: i32, Z: f64, r: f64) -> Result<types::Result, Value> {
let mut result = MaybeUninit::<sys::gsl_sf_result>::uninit();
let ret = unsafe { sys::gsl_sf_hydrogenicR_e(n, l, Z, r, result.as_mut_ptr()) };
result_handler!(ret, unsafe { result.assume_init() }.into())
}
#[doc(alias = "gsl_sf_coulomb_wave_FG_e")]
pub fn wave_FG_e(
eta: f64,
x: f64,
L_F: f64,
k: i32,
exp_F: &mut f64,
exp_G: &mut f64,
) -> Result<
(
::types::Result,
::types::Result,
::types::Result,
::types::Result,
),
Value,
> {
let mut F = MaybeUninit::<sys::gsl_sf_result>::uninit();
let mut Fp = MaybeUninit::<sys::gsl_sf_result>::uninit();
let mut G = MaybeUninit::<sys::gsl_sf_result>::uninit();
let mut Gp = MaybeUninit::<sys::gsl_sf_result>::uninit();
let ret = unsafe {
sys::gsl_sf_coulomb_wave_FG_e(
eta,
x,
L_F,
k,
F.as_mut_ptr(),
Fp.as_mut_ptr(),
G.as_mut_ptr(),
Gp.as_mut_ptr(),
exp_F,
exp_G,
)
};
result_handler!(
ret,
(
unsafe { F.assume_init() }.into(),
unsafe { Fp.assume_init() }.into(),
unsafe { G.assume_init() }.into(),
unsafe { Gp.assume_init() }.into(),
)
)
}
#[doc(alias = "gsl_sf_coulomb_wave_F_array")]
pub fn wave_F_array(L_min: f64, eta: f64, x: f64, fc_array: &mut [f64]) -> Result<f64, Value> {
let mut F_exponent = 0.;
let ret = unsafe {
sys::gsl_sf_coulomb_wave_F_array(
L_min,
fc_array.len() as i32,
eta,
x,
fc_array.as_mut_ptr(),
&mut F_exponent,
)
};
result_handler!(ret, F_exponent)
}
#[doc(alias = "gsl_sf_coulomb_wave_FG_array")]
pub fn wave_FG_array(
L_min: f64,
eta: f64,
x: f64,
fc_array: &mut [f64],
gc_array: &mut [f64],
) -> Result<(f64, f64), Value> {
let mut F_exponent = 0.;
let mut G_exponent = 0.;
let ret = unsafe {
sys::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(),
&mut F_exponent,
&mut G_exponent,
)
};
result_handler!(ret, (F_exponent, G_exponent))
}
#[doc(alias = "gsl_sf_coulomb_wave_FGp_array")]
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],
) -> Result<(f64, f64), Value> {
let mut F_exponent = 0.;
let mut G_exponent = 0.;
let ret = unsafe {
sys::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(),
&mut F_exponent,
&mut G_exponent,
)
};
result_handler!(ret, (F_exponent, G_exponent))
}
#[doc(alias = "gsl_sf_coulomb_wave_sphF_array")]
pub fn wave_sphF_array(L_min: f64, eta: f64, x: f64, fc_array: &mut [f64]) -> Result<f64, Value> {
let mut F_exponent = 0.;
let ret = unsafe {
sys::gsl_sf_coulomb_wave_sphF_array(
L_min,
fc_array.len() as i32,
eta,
x,
fc_array.as_mut_ptr(),
&mut F_exponent,
)
};
result_handler!(ret, F_exponent)
}
#[doc(alias = "gsl_sf_coulomb_CL_e")]
pub fn CL_e(L: f64, eta: f64) -> Result<types::Result, Value> {
let mut result = MaybeUninit::<sys::gsl_sf_result>::uninit();
let ret = unsafe { sys::gsl_sf_coulomb_CL_e(L, eta, result.as_mut_ptr()) };
result_handler!(ret, unsafe { result.assume_init() }.into())
}
#[doc(alias = "gsl_sf_coulomb_CL_array")]
pub fn CL_array(Lmin: f64, eta: f64, cl: &mut [f64]) -> Result<(), Value> {
let ret = unsafe { sys::gsl_sf_coulomb_CL_array(Lmin, cl.len() as i32, eta, cl.as_mut_ptr()) };
result_handler!(ret, ())
}