#include #include int main( int argc, char *argv[] ) { int l = 20; double eta = -100.; /* Method 1: obtain F directly */ { printf("Method 1: obtain F directly\n"); gsl_sf_result F, Fp, G, Gp; double exp_F, exp_G; for(double rho=0.01; rho<20.; rho+=0.01) { printf("%f\t",rho); for(int i=0; i<=l; i++) { gsl_sf_coulomb_wave_FG_e(eta, rho, i, 0, &F, &Fp, &G, &Gp, &exp_F, &exp_G); printf("%e\t",F.val); } printf("\n"); } } /* Method 2: obtain F from recurrence */ { printf("Method 2: obtain F from recurrence\n"); double F[1+l], exp_F[1+l]; for(double rho=0.01; rho<20.; rho+=0.01) { gsl_sf_coulomb_wave_F_array(0., l, eta, rho, F, exp_F); printf("%f\t",rho); for(int i=0; i<=l; i++) { printf("%e\t",F[i]); } printf("\n"); } } }