1use crate::{types, Value};
6use std::mem::MaybeUninit;
7
8#[doc(alias = "gsl_sf_hydrogenicR_1")]
10pub fn hydrogenicR_1(Z: f64, r: f64) -> f64 {
11 unsafe { sys::gsl_sf_hydrogenicR_1(Z, r) }
12}
13
14#[doc(alias = "gsl_sf_hydrogenicR_1_e")]
16pub fn hydrogenicR_1_e(Z: f64, r: f64) -> Result<types::Result, Value> {
17 let mut result = MaybeUninit::<sys::gsl_sf_result>::uninit();
18 let ret = unsafe { sys::gsl_sf_hydrogenicR_1_e(Z, r, result.as_mut_ptr()) };
19
20 result_handler!(ret, unsafe { result.assume_init() }.into())
21}
22
23#[doc(alias = "gsl_sf_hydrogenicR")]
31pub fn hydrogenicR(n: i32, l: i32, Z: f64, r: f64) -> f64 {
32 unsafe { sys::gsl_sf_hydrogenicR(n, l, Z, r) }
33}
34
35#[doc(alias = "gsl_sf_hydrogenicR_e")]
43pub fn hydrogenicR_e(n: i32, l: i32, Z: f64, r: f64) -> Result<types::Result, Value> {
44 let mut result = MaybeUninit::<sys::gsl_sf_result>::uninit();
45 let ret = unsafe { sys::gsl_sf_hydrogenicR_e(n, l, Z, r, result.as_mut_ptr()) };
46
47 result_handler!(ret, unsafe { result.assume_init() }.into())
48}
49
50#[doc(alias = "gsl_sf_coulomb_wave_FG_e")]
55pub fn wave_FG_e(
56 eta: f64,
57 x: f64,
58 L_F: f64,
59 k: i32,
60 exp_F: &mut f64,
61 exp_G: &mut f64,
62) -> Result<
63 (
64 ::types::Result,
65 ::types::Result,
66 ::types::Result,
67 ::types::Result,
68 ),
69 Value,
70> {
71 let mut F = MaybeUninit::<sys::gsl_sf_result>::uninit();
72 let mut Fp = MaybeUninit::<sys::gsl_sf_result>::uninit();
73 let mut G = MaybeUninit::<sys::gsl_sf_result>::uninit();
74 let mut Gp = MaybeUninit::<sys::gsl_sf_result>::uninit();
75 let ret = unsafe {
76 sys::gsl_sf_coulomb_wave_FG_e(
77 eta,
78 x,
79 L_F,
80 k,
81 F.as_mut_ptr(),
82 Fp.as_mut_ptr(),
83 G.as_mut_ptr(),
84 Gp.as_mut_ptr(),
85 exp_F,
86 exp_G,
87 )
88 };
89
90 result_handler!(
91 ret,
92 (
93 unsafe { F.assume_init() }.into(),
94 unsafe { Fp.assume_init() }.into(),
95 unsafe { G.assume_init() }.into(),
96 unsafe { Gp.assume_init() }.into(),
97 )
98 )
99}
100
101#[doc(alias = "gsl_sf_coulomb_wave_F_array")]
106pub fn wave_F_array(L_min: f64, eta: f64, x: f64, fc_array: &mut [f64]) -> Result<f64, Value> {
107 let mut F_exponent = 0.;
108 let ret = unsafe {
109 sys::gsl_sf_coulomb_wave_F_array(
110 L_min,
111 fc_array.len() as i32,
112 eta,
113 x,
114 fc_array.as_mut_ptr(),
115 &mut F_exponent,
116 )
117 };
118 result_handler!(ret, F_exponent)
119}
120
121#[doc(alias = "gsl_sf_coulomb_wave_FG_array")]
127pub fn wave_FG_array(
128 L_min: f64,
129 eta: f64,
130 x: f64,
131 fc_array: &mut [f64],
132 gc_array: &mut [f64],
133) -> Result<(f64, f64), Value> {
134 let mut F_exponent = 0.;
135 let mut G_exponent = 0.;
136 let ret = unsafe {
137 sys::gsl_sf_coulomb_wave_FG_array(
138 L_min,
139 fc_array.len() as i32,
140 eta,
141 x,
142 fc_array.as_mut_ptr(),
143 gc_array.as_mut_ptr(),
144 &mut F_exponent,
145 &mut G_exponent,
146 )
147 };
148 result_handler!(ret, (F_exponent, G_exponent))
149}
150
151#[doc(alias = "gsl_sf_coulomb_wave_FGp_array")]
158pub fn wave_FGp_array(
159 L_min: f64,
160 eta: f64,
161 x: f64,
162 fc_array: &mut [f64],
163 fcp_array: &mut [f64],
164 gc_array: &mut [f64],
165 gcp_array: &mut [f64],
166) -> Result<(f64, f64), Value> {
167 let mut F_exponent = 0.;
168 let mut G_exponent = 0.;
169 let ret = unsafe {
170 sys::gsl_sf_coulomb_wave_FGp_array(
171 L_min,
172 fc_array.len() as i32,
173 eta,
174 x,
175 fc_array.as_mut_ptr(),
176 fcp_array.as_mut_ptr(),
177 gc_array.as_mut_ptr(),
178 gcp_array.as_mut_ptr(),
179 &mut F_exponent,
180 &mut G_exponent,
181 )
182 };
183 result_handler!(ret, (F_exponent, G_exponent))
184}
185
186#[doc(alias = "gsl_sf_coulomb_wave_sphF_array")]
193pub fn wave_sphF_array(L_min: f64, eta: f64, x: f64, fc_array: &mut [f64]) -> Result<f64, Value> {
194 let mut F_exponent = 0.;
195 let ret = unsafe {
196 sys::gsl_sf_coulomb_wave_sphF_array(
197 L_min,
198 fc_array.len() as i32,
199 eta,
200 x,
201 fc_array.as_mut_ptr(),
202 &mut F_exponent,
203 )
204 };
205 result_handler!(ret, F_exponent)
206}
207
208#[doc(alias = "gsl_sf_coulomb_CL_e")]
210pub fn CL_e(L: f64, eta: f64) -> Result<types::Result, Value> {
211 let mut result = MaybeUninit::<sys::gsl_sf_result>::uninit();
212 let ret = unsafe { sys::gsl_sf_coulomb_CL_e(L, eta, result.as_mut_ptr()) };
213
214 result_handler!(ret, unsafe { result.assume_init() }.into())
215}
216
217#[doc(alias = "gsl_sf_coulomb_CL_array")]
219pub fn CL_array(Lmin: f64, eta: f64, cl: &mut [f64]) -> Result<(), Value> {
220 let ret = unsafe { sys::gsl_sf_coulomb_CL_array(Lmin, cl.len() as i32, eta, cl.as_mut_ptr()) };
221 result_handler!(ret, ())
222}