20#ifndef CCGSL_SF_COULOMB_HPP
21#define CCGSL_SF_COULOMB_HPP
23#include<gsl/gsl_sf_coulomb.h>
39 return gsl_sf_hydrogenicR_1_e( Z, r, &
result ); }
49 return gsl_sf_hydrogenicR_1( Z, r ); }
62 return gsl_sf_hydrogenicR_e(
n, l, Z, r, &
result ); }
73 inline double hydrogenicR(
int const n,
int const l,
double const Z,
double const r ){
74 return gsl_sf_hydrogenicR(
n, l, Z, r ); }
111 inline int wave_FG_e(
double const eta,
double const x,
double const lam_F,
int const k_lam_G,
113 return gsl_sf_coulomb_wave_FG_e(
eta, x, lam_F, k_lam_G, &
F, &Fp, &G, &Gp, exp_F, exp_G ); }
146 inline int wave_FG_e( double const eta, double const x, double const lam_F, int const k_lam_G,
148 return gsl_sf_coulomb_wave_FG_e(
eta, x, lam_F, k_lam_G, &
F, &Fp, &G, &Gp, &exp_F, &exp_G ); }
160 inline int wave_F_array(
double lam_min,
int kmax,
double eta,
double x,
161 double* fc_array,
double* F_exponent ){
162 return gsl_sf_coulomb_wave_F_array( lam_min, kmax,
eta, x, fc_array, F_exponent ); }
174 template<typename DATA>
176 DATA& fc_array,
double& F_exponent ){
177 if(fc_array.size() <
static_cast<size_t>(kmax)){
return GSL_EBADLEN;}
178 return gsl_sf_coulomb_wave_F_array( lam_min, kmax,
eta, x, fc_array.data(),
193 inline int wave_FG_array(
double lam_min,
int kmax,
double eta,
double x,
double* fc_array,
194 double* gc_array,
double* F_exponent,
double* G_exponent ){
195 return gsl_sf_coulomb_wave_FG_array( lam_min, kmax,
eta, x, fc_array, gc_array,
196 F_exponent, G_exponent ); }
210 template<typename DATA>
212 DATA& gc_array,
double& F_exponent,
double& G_exponent ){
213 if(fc_array.size() <
static_cast<size_t>(kmax)){
return GSL_EBADLEN;}
214 if(gc_array.size() <
static_cast<size_t>(kmax)){
return GSL_EBADLEN;}
215 return gsl_sf_coulomb_wave_FG_array( lam_min, kmax,
eta, x, fc_array.data(),
216 gc_array.data(), &F_exponent, &G_exponent ); }
233 double* fc_array,
double* fcp_array,
double* gc_array,
234 double* gcp_array,
double* F_exponent,
235 double* G_exponent ){
236 return gsl_sf_coulomb_wave_FGp_array( lam_min, kmax,
eta, x, fc_array, fcp_array,
237 gc_array, gcp_array, F_exponent, G_exponent ); }
253 template<typename DATA>
255 DATA& fc_array, DATA& fcp_array, DATA& gc_array,
256 DATA& gcp_array,
double& F_exponent,
257 double& G_exponent ){
258 if(fc_array.size() <
static_cast<size_t>(kmax)){
return GSL_EBADLEN;}
259 if(fcp_array.size() <
static_cast<size_t>(kmax)){
return GSL_EBADLEN;}
260 if(gc_array.size() <
static_cast<size_t>(kmax)){
return GSL_EBADLEN;}
261 if(gcp_array.size() <
static_cast<size_t>(kmax)){
return GSL_EBADLEN;}
262 return gsl_sf_coulomb_wave_FGp_array( lam_min, kmax,
eta, x, fc_array.data(),
263 fcp_array.data(), gc_array.data(),
264 gcp_array.data(), &F_exponent, &G_exponent ); }
277 double* fc_array,
double* F_exponent ){
278 return gsl_sf_coulomb_wave_sphF_array( lam_min, kmax,
eta, x, fc_array, F_exponent ); }
290 template<typename DATA>
292 DATA& fc_array,
double& F_exponent ){
293 if(fc_array.size() <
static_cast<size_t>(kmax)){
return GSL_EBADLEN;}
294 return gsl_sf_coulomb_wave_sphF_array( lam_min, kmax,
eta, x, fc_array.data(),
304 return gsl_sf_coulomb_CL_e( L,
eta, &
result ); }
314 inline int CL_array(
double Lmin,
int kmax,
double eta,
double* cl ){
315 return gsl_sf_coulomb_CL_array( Lmin, kmax,
eta, cl ); }
325 template<typename DATA>
326 inline int CL_array(
double Lmin,
int kmax,
double eta, DATA& cl ){
327 if(cl.size() <
static_cast<size_t>(kmax)){
return GSL_EBADLEN;}
328 return gsl_sf_coulomb_CL_array( Lmin, kmax,
eta, cl.data() ); }
size_t n(workspace const &w)
C++ version of gsl_rstat_n().
int wave_F_array(double lam_min, int kmax, double eta, double x, DATA &fc_array, double &F_exponent)
C++ version of gsl_sf_coulomb_wave_F_array().
int CL_e(double L, double eta, result &result)
C++ version of gsl_sf_coulomb_CL_e().
int wave_FG_array(double lam_min, int kmax, double eta, double x, DATA &fc_array, DATA &gc_array, double &F_exponent, double &G_exponent)
C++ version of gsl_sf_coulomb_wave_FG_array().
int wave_FG_e(double const eta, double const x, double const lam_F, int const k_lam_G, result &F, result &Fp, result &G, result &Gp, double &exp_F, double &exp_G)
C++ version of gsl_sf_coulomb_wave_FG_e().
int wave_FGp_array(double lam_min, int kmax, double eta, double x, DATA &fc_array, DATA &fcp_array, DATA &gc_array, DATA &gcp_array, double &F_exponent, double &G_exponent)
C++ version of gsl_sf_coulomb_wave_FGp_array().
int wave_sphF_array(double lam_min, int kmax, double eta, double x, DATA &fc_array, double &F_exponent)
C++ version of gsl_sf_coulomb_wave_sphF_array().
int CL_array(double Lmin, int kmax, double eta, DATA &cl)
C++ version of gsl_sf_coulomb_CL_array().
double F(double phi, double k, mode_t mode)
C++ version of gsl_sf_ellint_F().
double hydrogenicR(int const n, int const l, double const Z, double const r)
C++ version of gsl_sf_hydrogenicR().
double eta(double const s)
C++ version of gsl_sf_eta().
int hydrogenicR_e(int const n, int const l, double const Z, double const r, result &result)
C++ version of gsl_sf_hydrogenicR_e().
int hydrogenicR_1_e(double const Z, double const r, result &result)
C++ version of gsl_sf_hydrogenicR_1().
double hydrogenicR_1(double const Z, double const r)
C++ version of gsl_sf_hydrogenicR_1().
gsl_sf_result result
Typedef for gsl_sf_result.
The gsl package creates an interface to the GNU Scientific Library for C++.