Added script front-end for primer-design code
[htsworkflow.git] / htswanalysis / MACS / lib / gsl / gsl-1.11 / specfunc / test_coulomb.c
1 /* specfunc/test_coulomb.c
2  * 
3  * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
4  * 
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 3 of the License, or (at
8  * your option) any later version.
9  * 
10  * This program is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * General Public License for more details.
14  * 
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  */
19
20 /* Author:  G. Jungman */
21
22 #include <config.h>
23 #include <gsl/gsl_test.h>
24 #include <gsl/gsl_sf.h>
25 #include "test_sf.h"
26
27 #define PRINT(n) printf("%22.18g  %22.18g  %22.18g  %22.18g\n", F[n], Fp[n], G[n], Gp[n])
28
29 #define WKB_TOL (1.0e+04 * TEST_SQRT_TOL0)
30
31
32 int test_coulomb(void)
33 {
34   gsl_sf_result r;
35   int status = 0;
36   int s = 0;
37   
38   char message_buff[2048];
39
40   /* const int kmax = 20; */
41   /* double F[kmax+1], Fp[kmax+1], G[kmax+1], Gp[kmax+1]; */
42   gsl_sf_result F, Fp, G, Gp;
43   double Fe, Ge;
44   double lam_min;
45   double lam_F;
46   double eta, x;
47   int k_G;
48
49   TEST_SF(s, gsl_sf_hydrogenicR_1_e, (3.0, 2.0, &r),  0.025759948256148471036,  TEST_TOL0, GSL_SUCCESS);
50   TEST_SF(s, gsl_sf_hydrogenicR_1_e, (3.0, 10.0, &r), 9.724727052062819704e-13, TEST_TOL1, GSL_SUCCESS);
51   status += s;
52
53   TEST_SF(s, gsl_sf_hydrogenicR_e, (4, 1, 3.0, 0.0, &r),  0.0,  TEST_TOL0, GSL_SUCCESS);
54   TEST_SF(s, gsl_sf_hydrogenicR_e, (4, 0, 3.0, 2.0, &r), -0.03623182256981820062,  TEST_TOL2, GSL_SUCCESS);
55   TEST_SF(s, gsl_sf_hydrogenicR_e, (4, 1, 3.0, 2.0, &r), -0.028065049083129581005, TEST_TOL2, GSL_SUCCESS);
56   TEST_SF(s, gsl_sf_hydrogenicR_e, (4, 2, 3.0, 2.0, &r),  0.14583027278668431009,  TEST_TOL0, GSL_SUCCESS);
57   status += s;
58
59   TEST_SF(s, gsl_sf_hydrogenicR_e, (100,  0, 3.0, 2.0, &r), -0.00007938950980052281367, TEST_TOL3, GSL_SUCCESS);
60   TEST_SF(s, gsl_sf_hydrogenicR_e, (100, 10, 3.0, 2.0, &r),  7.112823375353605977e-12,  TEST_TOL2, GSL_SUCCESS);
61   TEST_SF(s, gsl_sf_hydrogenicR_e, (100, 90, 3.0, 2.0, &r),  5.845231751418131548e-245, TEST_TOL2, GSL_SUCCESS);
62   status += s;
63
64   lam_F = 0.0;
65   k_G   = 0;
66   eta = 1.0;
67   x = 5.0;
68   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
69   s = 0;
70   message_buff[0] = 0;
71   s += test_sf_check_result(message_buff,  F,  0.6849374120059439677, TEST_TOL3);
72   s += test_sf_check_result(message_buff, Fp, -0.7236423862556063963, TEST_TOL3);
73   s += test_sf_check_result(message_buff,  G, -0.8984143590920205487, TEST_TOL3);
74   s += test_sf_check_result(message_buff, Gp, -0.5108047585190350106, TEST_TOL3);
75   printf("%s", message_buff);
76   gsl_test(s,"  gsl_sf_coulomb_wave_FG_e(1.0, 5.0, lam_F=0, lam_G=0)");
77   status += s;
78
79   lam_F = 10.0;
80   k_G   = 2;
81   eta = 1.0;
82   x = 5.0;
83   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
84   s = 0;
85   message_buff[0] = 0;
86   s += test_sf_check_result(message_buff,  F,  0.0006423773354915823698, TEST_TOL3);
87   s += test_sf_check_result(message_buff, Fp,  0.0013299570958719702545, TEST_TOL3);
88   s += test_sf_check_result(message_buff,  G,  33.27615734455096130,     TEST_TOL3);
89   s += test_sf_check_result(message_buff, Gp, -45.49180102261540580,     TEST_TOL3);
90   printf("%s", message_buff);
91   gsl_test(s,"  gsl_sf_coulomb_wave_FG_e(1.0, 5.0, lam_F=10, lam_G=8)");
92   status += s;
93
94   lam_F = 4.0;
95   k_G   = 2;
96   eta = 50.0;
97   x = 120.0;
98   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
99   s = 0;
100   message_buff[0] = 0;
101   s += test_sf_check_result(message_buff,  F,  0.0735194711823798495, TEST_TOL3);
102   s += test_sf_check_result(message_buff, Fp,  0.6368149124126783325, TEST_TOL3);
103   /*
104   s += test_sf_check_result(message_buff,  G,  , TEST_TOL5);
105   s += test_sf_check_result(message_buff, Gp, , TEST_TOL5);
106   */
107   printf("%s", message_buff);
108   gsl_test(s,"  gsl_sf_coulomb_wave_FG_e(50.0, 120.0, lam_F=4, lam_G=2)");
109   status += s;
110
111   lam_F = 0.0;
112   k_G = 0;
113   eta = -1000.0;
114   x = 1.0;
115   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
116   s = 0;
117   message_buff[0] = 0;
118   s += test_sf_check_result(message_buff,  F,  9.68222518991341e-02, TEST_TOL3);
119   s += test_sf_check_result(message_buff, Fp,  5.12063396274631e+00, TEST_TOL3);
120   s += test_sf_check_result(message_buff,  G,  1.13936784379472e-01, TEST_TOL3);
121   s += test_sf_check_result(message_buff, Gp, -4.30243486522438e+00, TEST_TOL3);
122   printf("%s", message_buff);
123   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(-1000.0, 1.0, lam_F=0, lam_G=0)");
124   status += s;
125
126   lam_min = 0.0;
127   eta = -50.0;
128   x = 5.0;
129   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
130   s = 0;
131   message_buff[0] = 0;
132   s += test_sf_check_result(message_buff,  F,  1.52236975714236e-01, TEST_TOL3);
133   s += test_sf_check_result(message_buff, Fp,  2.03091041166137e+00, TEST_TOL3);
134   s += test_sf_check_result(message_buff,  G,  4.41680690236251e-01, TEST_TOL3);
135   s += test_sf_check_result(message_buff, Gp, -6.76485374766869e-01, TEST_TOL3);
136   printf("%s", message_buff);
137   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(-50.0, 5.0, lam_F=0, lam_G=0)");
138   status += s;
139
140   lam_min = 0.0;
141   eta = -50.0;
142   x = 1000.0;
143   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
144   s = 0;
145   message_buff[0] = 0;
146   s += test_sf_check_result(message_buff,  F, -0.2267212182760888523, TEST_TOL3);
147   s += test_sf_check_result(message_buff, Fp, -0.9961306810018401525, TEST_TOL3);
148   s += test_sf_check_result(message_buff,  G, -0.9497684438900352186, TEST_TOL3);
149   s += test_sf_check_result(message_buff, Gp,  0.2377656295411961399, TEST_TOL3);
150   printf("%s", message_buff);
151   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(-50.0, 1000.0, lam_F=0, lam_G=0)");
152   status += s;
153
154   lam_F = 10.0;
155   k_G = 0;
156   eta = -50.0;
157   x = 5.0;
158   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
159   s = 0;
160   message_buff[0] = 0;
161   s += test_sf_check_result(message_buff,  F, -3.681143602184922e-01, TEST_TOL3);
162   s += test_sf_check_result(message_buff, Fp,  1.338467510317215e+00, TEST_TOL3);
163   s += test_sf_check_result(message_buff,  G,  3.315883246109351e-01, TEST_TOL3);
164   s += test_sf_check_result(message_buff, Gp,  1.510888628136180e+00, TEST_TOL3);
165   printf("%s", message_buff);
166   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(-50.0, 5.0, lam_F=10, lam_G=10)");
167   status += s;
168
169   lam_F = 0.0;
170   k_G = 0;
171   eta = -4.0;
172   x = 5.0;
173   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
174   s = 0;
175   message_buff[0] = 0;
176   s += test_sf_check_result(message_buff,  F,  4.078627230056172e-01, TEST_TOL3);
177   s += test_sf_check_result(message_buff, Fp,  1.098212336357310e+00, TEST_TOL3);
178   s += test_sf_check_result(message_buff,  G,  6.743270353832442e-01, TEST_TOL3);
179   s += test_sf_check_result(message_buff, Gp, -6.361104272804447e-01, TEST_TOL3);
180   printf("%s", message_buff);
181   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(-4.0, 5.0, lam_F=0, lam_G=0");
182   status += s;
183
184   lam_F = 3.0;
185   k_G = 0;
186   eta = -4.0;
187   x = 5.0;
188   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
189   s = 0;
190   message_buff[0] = 0;
191   s += test_sf_check_result(message_buff,  F, -2.568630935581323e-01, TEST_TOL3);
192   s += test_sf_check_result(message_buff, Fp,  1.143229422014827e+00, TEST_TOL3);
193   s += test_sf_check_result(message_buff,  G,  7.879899223927996e-01, TEST_TOL3);
194   s += test_sf_check_result(message_buff, Gp,  3.859905878106713e-01, TEST_TOL3);
195   printf("%s", message_buff);
196   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(-4.0, 5.0, lam_F=3, lam_G=3");
197   status += s;
198
199   lam_F = 0.0;
200   k_G = 0;
201   eta = 1.0;
202   x = 2.0;
203   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
204   s = 0;
205   message_buff[0] = 0;
206   s += test_sf_check_result(message_buff,  F,  6.61781613832681e-01, TEST_TOL3);
207   s += test_sf_check_result(message_buff, Fp,  4.81557455709949e-01, TEST_TOL3);
208   s += test_sf_check_result(message_buff,  G,  1.27577878476828e+00, TEST_TOL3);
209   s += test_sf_check_result(message_buff, Gp, -5.82728813097184e-01, TEST_TOL3);
210   printf("%s", message_buff);
211   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(1.0, 2.0, lam_F=0, lam_G=0)");
212   status += s;
213
214   lam_F = 0.0;
215   k_G = 0;
216   eta = 1.0;
217   x = 0.5;
218   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
219   s = 0;
220   message_buff[0] = 0;
221   s += test_sf_check_result(message_buff,  F,  0.08315404535022023302, TEST_TOL3);
222   s += test_sf_check_result(message_buff, Fp,  0.22693874616222787568, TEST_TOL3);
223   s += test_sf_check_result(message_buff,  G,  3.1060069279548875140,  TEST_TOL3);
224   s += test_sf_check_result(message_buff, Gp, -3.549156038719924236,   TEST_TOL3);
225   printf("%s", message_buff);
226   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(1.0, 0.5, lam_F=0, lam_G=0)");
227   status += s;
228
229   lam_F = 0.5;
230   k_G = 0;
231   eta = 1.0;
232   x = 0.5;
233   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
234   s = 0;
235   message_buff[0] = 0;
236   s += test_sf_check_result(message_buff,  F,  0.04049078073829290935, TEST_TOL3);
237   s += test_sf_check_result(message_buff, Fp,  0.14194939168094778795, TEST_TOL3);
238   s += test_sf_check_result(message_buff,  G,  4.720553853049677897,   TEST_TOL3);
239   s += test_sf_check_result(message_buff, Gp, -8.148033852319180005,   TEST_TOL3);
240   printf("%s", message_buff);
241   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(1.0, 0.5, lam_F=0.5, lam_G=0.5)");
242   status += s;
243
244   lam_F = 0.1;
245   k_G = 0;
246   eta = 1.0;
247   x = 0.5;
248   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
249   s = 0;
250   message_buff[0] = 0;
251   s += test_sf_check_result(message_buff,  F,  0.07365466672379703418, TEST_TOL5);
252   s += test_sf_check_result(message_buff, Fp,  0.21147121807178518647, TEST_TOL5);
253   s += test_sf_check_result(message_buff,  G,  3.306705446241024890, TEST_TOL5);
254   s += test_sf_check_result(message_buff, Gp, -4.082931670935696644, TEST_TOL5);
255   printf("%s", message_buff);
256   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(1.0, 0.5, lam_F=0.1, lam_G=0.1)");
257   status += s;
258
259   lam_F = 0.0;
260   k_G = 0;
261   eta = 8.0;
262   x = 1.05;
263   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
264   s = 0;
265   message_buff[0] = 0;
266   s += test_sf_check_result(message_buff,  F,  9.882706082810274357e-09, TEST_TOL5);
267   s += test_sf_check_result(message_buff, Fp,  4.005167028235547770e-08, TEST_TOL5);
268   s += test_sf_check_result(message_buff,  G,  1.333127992006686320e+07, TEST_SQRT_TOL0);
269   s += test_sf_check_result(message_buff, Gp, -4.715914530842402330e+07, TEST_SQRT_TOL0);
270   printf("%s", message_buff);
271   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(8.0, 1.05, lam_F=0, lam_G=0)");
272   status += s;
273
274   lam_F = 0.1;
275   k_G = 0;
276   eta = 8.0;
277   x = 1.05;
278   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
279   s = 0;
280   message_buff[0] = 0;
281   s += test_sf_check_result(message_buff,  F,  9.611416736061987761e-09, TEST_TOL5);
282   s += test_sf_check_result(message_buff, Fp,  3.909628126126824140e-08, TEST_TOL5);
283   s += test_sf_check_result(message_buff,  G,  1.365928464219262581e+07, 4.0*TEST_SQRT_TOL0);
284   s += test_sf_check_result(message_buff, Gp, -4.848117385783386850e+07, 4.0*TEST_SQRT_TOL0);
285   printf("%s", message_buff);
286   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(8.0, 1.05, lam_F=0.1, lam_G=0.1)");
287   status += s;
288
289   lam_F = 0.0;
290   k_G = 0;
291   eta = 50.0;
292   x = 0.1;
293   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
294   s = 0;
295   message_buff[0] = 0;
296   s += test_sf_check_result(message_buff,  F,  2.807788027954216071e-67, TEST_TOL5);
297   s += test_sf_check_result(message_buff, Fp,  9.677600748751576606e-66, TEST_TOL5);
298   s += test_sf_check_result(message_buff,  G,  5.579810686998358766e+64, TEST_SQRT_TOL0);
299   s += test_sf_check_result(message_buff, Gp, -1.638329512756321424e+66, TEST_SQRT_TOL0);
300   printf("%s", message_buff);
301   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(50.0, 0.1, lam_F=0, lam_G=0)");
302   status += s;
303
304   lam_F = 0.0;
305   k_G = 0;
306   eta = 10.0;
307   x = 5.0;
308   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
309   s = 0;
310   message_buff[0] = 0;
311   s += test_sf_check_result(message_buff,  F,  1.7207454091787930614e-06, 10.0*WKB_TOL);
312   s += test_sf_check_result(message_buff, Fp,  3.0975994706405458046e-06, 10.0*WKB_TOL);
313   s += test_sf_check_result(message_buff,  G,  167637.56609459967623, 10.0*WKB_TOL);
314   s += test_sf_check_result(message_buff, Gp, -279370.76655361803075, 10.0*WKB_TOL);
315   printf("%s", message_buff);
316   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(10.0, 5.0, lam_F=0, lam_G=0)");
317   status += s;
318
319   lam_F = 0.0;
320   k_G = 0;
321   eta = 25.0;
322   x = 10.0;
323   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
324   s = 0;
325   message_buff[0] = 0;
326   s += test_sf_check_result(message_buff,  F,  1.5451274501076114315e-16, 5.0*WKB_TOL);
327   s += test_sf_check_result(message_buff, Fp,  3.1390869393378630928e-16, 5.0*WKB_TOL);
328   s += test_sf_check_result(message_buff,  G,  1.6177129008336318136e+15, 5.0*WKB_TOL);
329   s += test_sf_check_result(message_buff, Gp, -3.1854062013149740860e+15, 5.0*WKB_TOL);
330   printf("%s", message_buff);
331   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(25.0, 10.0, lam_F=0, lam_G=0)");
332   status += s;
333
334   lam_F = 0.0;
335   k_G = 0;
336   eta = 1.0;
337   x = 9.2;
338   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
339   s = 0;
340   message_buff[0] = 0;
341   s += test_sf_check_result(message_buff,  F, -0.25632012319757955655, TEST_TOL5);
342   s += test_sf_check_result(message_buff, Fp,  0.91518792286724220370, TEST_TOL5);
343   s += test_sf_check_result(message_buff,  G,  1.03120585918973466110, TEST_SQRT_TOL0);
344   s += test_sf_check_result(message_buff, Gp,  0.21946326717491250193, TEST_SQRT_TOL0);
345   printf("%s", message_buff);
346   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(1.0, 9.2, lam_F=0, lam_G=0)");
347   status += s;
348
349   lam_F = 0.0;
350   eta = 10.0;
351   x = 10.0;
352   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
353   s = 0;
354   message_buff[0] = 0;
355   s += test_sf_check_result(message_buff,  F,  0.0016262711250135878249, WKB_TOL);
356   s += test_sf_check_result(message_buff, Fp,  0.0017060476320792806014, WKB_TOL);
357   s += test_sf_check_result(message_buff,  G,  307.87321661090837987, WKB_TOL);
358   s += test_sf_check_result(message_buff, Gp, -291.92772380826822871, WKB_TOL);
359   printf("%s", message_buff);
360   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(10.0, 10.0, lam_F=0, lam_G=0)");
361   status += s;
362
363   lam_F = 0.0;
364   eta = 100.0;
365   x = 1.0;
366   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
367   s = 0;
368   message_buff[0] = 0;
369   s += test_sf_check_result(message_buff,  F,  8.999367996930662705e-126, 10.0*WKB_TOL);
370   s += test_sf_check_result(message_buff, Fp,  1.292746745757069321e-124, 10.0*WKB_TOL);
371   s += test_sf_check_result(message_buff,  G,  3.936654148133683610e+123, 10.0*WKB_TOL);
372   s += test_sf_check_result(message_buff, Gp, -5.456942268061526371e+124, 10.0*WKB_TOL);
373   printf("%s", message_buff);
374   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(100.0, 1.0, lam_F=0, lam_G=0)");
375   status += s;
376
377   /* compute F_1(eta=0,x=3.25), F'_1 and G_1(eta=0,x=3.25), G'_1 */
378
379   lam_F = 1.0;
380   eta = 0.0;
381   x = 3.25;
382   k_G = 0;
383   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
384   s = 0;
385   message_buff[0] = 0;
386   s += test_sf_check_result(message_buff,  F,  sin(x)/x - cos(x), TEST_TOL3);
387   s += test_sf_check_result(message_buff, Fp,  -sin(x)/(x*x) + cos(x)/x +sin(x), TEST_TOL3);
388   s += test_sf_check_result(message_buff,  G,  cos(x)/x + sin(x), TEST_TOL3);
389   s += test_sf_check_result(message_buff, Gp,  -cos(x)/(x*x) - sin(x)/x + cos(x), TEST_TOL3);
390   printf("%s", message_buff);
391   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(3.25, 0.0, lam_F=1, lam_G=1)");
392   status += s;
393
394   /* compute F_1(eta=0,x=3.25), F'_1 and G_0(eta=0,x=3.25), G'_0 */
395
396   lam_F = 1.0;
397   eta = 0.0;
398   x = 3.25;
399   k_G = 1;
400   gsl_sf_coulomb_wave_FG_e(eta, x, lam_F, k_G, &F, &Fp, &G, &Gp, &Fe, &Ge);
401   s = 0;
402   message_buff[0] = 0;
403   s += test_sf_check_result(message_buff,  F,  sin(x)/x - cos(x), TEST_TOL3);
404   s += test_sf_check_result(message_buff, Fp,  -sin(x)/(x*x) + cos(x)/x +sin(x), TEST_TOL3);
405   s += test_sf_check_result(message_buff,  G,  cos(x), TEST_TOL3);
406   s += test_sf_check_result(message_buff, Gp,  -sin(x), TEST_TOL3);
407   printf("%s", message_buff);
408   gsl_test(s, "  gsl_sf_coulomb_wave_FG_e(3.25, 0.0, lam_F=1, lam_G=0)");
409   status += s;
410
411   return status;
412 }