single-gsl.c
1 //! @file single-gsl.c
2 //! @author J. Marcel van der Veer
3 //!
4 //! @section Copyright
5 //!
6 //! This file is part of Algol68G - an Algol 68 compiler-interpreter.
7 //! Copyright 2001-2023 J. Marcel van der Veer [algol68g@xs4all.nl].
8 //!
9 //! @section License
10 //!
11 //! This program is free software; you can redistribute it and/or modify it
12 //! under the terms of the GNU General Public License as published by the
13 //! Free Software Foundation; either version 3 of the License, or
14 //! (at your option) any later version.
15 //!
16 //! This program is distributed in the hope that it will be useful, but
17 //! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
18 //! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
19 //! more details. You should have received a copy of the GNU General Public
20 //! License along with this program. If not, see [http://www.gnu.org/licenses/].
21
22 //! @section Synopsis
23 //!
24 //! REAL routines using GSL.
25
26 #include "a68g.h"
27 #include "a68g-genie.h"
28 #include "a68g-prelude.h"
29 #include "a68g-prelude-gsl.h"
30 #include "a68g-double.h"
31 #include "a68g-numbers.h"
32
33 #if defined (HAVE_GSL)
34
35 //! @brief Convert VECTOR to [] REAL.
36
37 #define PROC_RR_R(p, g, f)\
38 void g (NODE_T *p) {\
39 A68 (f_entry) = p;\
40 A68_REAL *x;\
41 int status;\
42 POP_OPERAND_ADDRESS (p, x, A68_REAL);\
43 (void) gsl_set_error_handler_off ();\
44 status = f (& (VALUE (x)));\
45 MATH_RTE (p, status != 0, M_REAL, (char *) gsl_strerror (status));\
46 }
47
48 #define PROC_R_R(p, g, f)\
49 void g (NODE_T *p) {\
50 A68 (f_entry) = p;\
51 A68_REAL *x;\
52 gsl_sf_result y;\
53 int status;\
54 POP_OPERAND_ADDRESS (p, x, A68_REAL);\
55 (void) gsl_set_error_handler_off ();\
56 status = f (VALUE (x), &y);\
57 MATH_RTE (p, status != 0, M_REAL, (char *) gsl_strerror (status));\
58 VALUE (x) = VAL (&y);\
59 }
60
61 #define PROC_R_R_DBL(p, g, f)\
62 void g (NODE_T *p) {\
63 A68 (f_entry) = p;\
64 A68_REAL *x;\
65 gsl_sf_result y;\
66 int status;\
67 POP_OPERAND_ADDRESS (p, x, A68_REAL);\
68 (void) gsl_set_error_handler_off ();\
69 status = f (VALUE (x), GSL_PREC_DOUBLE, &y);\
70 MATH_RTE (p, status != 0, M_REAL, (char *) gsl_strerror (status));\
71 VALUE (x) = VAL (&y);\
72 }
73
74 #define PROC_I_R(p, g, f)\
75 void g (NODE_T *p) {\
76 A68 (f_entry) = p;\
77 A68_INT s;\
78 gsl_sf_result y;\
79 int status;\
80 POP_OBJECT (p, &s, A68_INT);\
81 (void) gsl_set_error_handler_off ();\
82 status = f (VALUE (&s), &y);\
83 MATH_RTE (p, status != 0, M_REAL, (char *) gsl_strerror (status));\
84 PUSH_VALUE (p, VAL (&y), A68_REAL);\
85 }
86
87 #define PROC_R_R_R(p, g, f)\
88 void g (NODE_T *p) {\
89 A68 (f_entry) = p;\
90 A68_REAL *x, *y;\
91 gsl_sf_result r;\
92 int status;\
93 POP_OPERAND_ADDRESSES (p, x, y, A68_REAL);\
94 (void) gsl_set_error_handler_off ();\
95 status = f (VALUE (x), VALUE (y), &r);\
96 MATH_RTE (p, status != 0, M_REAL, (char *) gsl_strerror (status));\
97 VALUE (x) = VAL (&r);\
98 }
99
100 #define PROC_I_R_R(p, g, f)\
101 void g (NODE_T *p) {\
102 A68 (f_entry) = p;\
103 A68_INT s;\
104 A68_REAL x;\
105 gsl_sf_result r;\
106 int status;\
107 POP_OBJECT (p, &x, A68_REAL);\
108 POP_OBJECT (p, &s, A68_INT);\
109 (void) gsl_set_error_handler_off ();\
110 status = f (VALUE (&s), VALUE (&x), &r);\
111 MATH_RTE (p, status != 0, M_REAL, (char *) gsl_strerror (status));\
112 PUSH_VALUE (p, VAL (&r), A68_REAL);\
113 }
114
115 #define PROC_I_R_R_REVERSED(p, g, f)\
116 void g (NODE_T *p) {\
117 A68 (f_entry) = p;\
118 A68_INT s;\
119 A68_REAL x;\
120 gsl_sf_result r;\
121 int status;\
122 POP_OBJECT (p, &x, A68_REAL);\
123 POP_OBJECT (p, &s, A68_INT);\
124 (void) gsl_set_error_handler_off ();\
125 status = f (VALUE (&x), VALUE (&s), &r);\
126 MATH_RTE (p, status != 0, M_REAL, (char *) gsl_strerror (status));\
127 PUSH_VALUE (p, VAL (&r), A68_REAL);\
128 }
129
130 #define PROC_R_R_R_DBL(p, g, f)\
131 void g (NODE_T *p) {\
132 A68 (f_entry) = p;\
133 A68_REAL *x, *y;\
134 gsl_sf_result r;\
135 int status;\
136 POP_OPERAND_ADDRESSES (p, x, y, A68_REAL);\
137 (void) gsl_set_error_handler_off ();\
138 status = f (VALUE (x), VALUE (y), GSL_PREC_DOUBLE, &r);\
139 MATH_RTE (p, status != 0, M_REAL, (char *) gsl_strerror (status));\
140 VALUE (x) = VAL (&r);\
141 }
142
143 #define PROC_R_R_R_R(p, g, f)\
144 void g (NODE_T *p) {\
145 A68 (f_entry) = p;\
146 A68_REAL *x, *y, *z;\
147 gsl_sf_result r;\
148 int status;\
149 POP_ADDRESS (p, z, A68_REAL);\
150 POP_OPERAND_ADDRESSES (p, x, y, A68_REAL);\
151 (void) gsl_set_error_handler_off ();\
152 status = f (VALUE (x), VALUE (y), VALUE (z), &r);\
153 MATH_RTE (p, status != 0, M_REAL, (char *) gsl_strerror (status));\
154 VALUE (x) = VAL (&r);\
155 }
156
157 #define PROC_I_R_R_R(p, g, f)\
158 void g (NODE_T *p) {\
159 A68 (f_entry) = p;\
160 A68_INT s;\
161 A68_REAL x, y;\
162 gsl_sf_result r;\
163 int status;\
164 POP_OBJECT (p, &y, A68_REAL);\
165 POP_OBJECT (p, &x, A68_REAL);\
166 POP_OBJECT (p, &s, A68_INT);\
167 (void) gsl_set_error_handler_off ();\
168 status = f (VALUE (&s), VALUE (&x), VALUE (&y), &r);\
169 MATH_RTE (p, status != 0, M_REAL, (char *) gsl_strerror (status));\
170 PUSH_VALUE (p, VAL (&r), A68_REAL);\
171 }
172
173 #define PROC_R_R_R_R_DBL(p, g, f)\
174 void g (NODE_T *p) {\
175 A68 (f_entry) = p;\
176 A68_REAL *x, *y, *z;\
177 gsl_sf_result r;\
178 int status;\
179 POP_ADDRESS (p, z, A68_REAL);\
180 POP_OPERAND_ADDRESSES (p, x, y, A68_REAL);\
181 (void) gsl_set_error_handler_off ();\
182 status = f (VALUE (x), VALUE (y), VALUE (z), GSL_PREC_DOUBLE, &r);\
183 MATH_RTE (p, status != 0, M_REAL, (char *) gsl_strerror (status));\
184 VALUE (x) = VAL (&r);\
185 }
186
187 #define PROC_R_R_R_R_R_DBL(p, g, f)\
188 void g (NODE_T *p) {\
189 A68 (f_entry) = p;\
190 A68_REAL *x, *y, *z, *rho;\
191 gsl_sf_result r;\
192 int status;\
193 POP_ADDRESS (p, rho, A68_REAL);\
194 POP_ADDRESS (p, z, A68_REAL);\
195 POP_OPERAND_ADDRESSES (p, x, y, A68_REAL);\
196 (void) gsl_set_error_handler_off ();\
197 status = f (VALUE (x), VALUE (y), VALUE (z), VALUE (rho), GSL_PREC_DOUBLE, &r);\
198 MATH_RTE (p, status != 0, M_REAL, (char *) gsl_strerror (status));\
199 VALUE (x) = VAL (&r);\
200 }
201
202 //! @brief PROC airy ai = (REAL x) REAL
203
204 PROC_R_R_DBL (p, genie_airy_ai_real, gsl_sf_airy_Ai_e);
205
206 //! @brief PROC airy bi = (REAL x) REAL
207
208 PROC_R_R_DBL (p, genie_airy_bi_real, gsl_sf_airy_Bi_e);
209
210 //! @brief PROC airy ai scaled = (REAL x) REAL
211
212 PROC_R_R_DBL (p, genie_airy_ai_scaled_real, gsl_sf_airy_Ai_scaled_e);
213
214 //! @brief PROC airy bi scaled = (REAL x) REAL
215
216 PROC_R_R_DBL (p, genie_airy_bi_scaled_real, gsl_sf_airy_Bi_scaled_e);
217
218 //! @brief PROC airy ai deriv = (REAL x) REAL
219
220 PROC_R_R_DBL (p, genie_airy_ai_deriv_real, gsl_sf_airy_Ai_deriv_e);
221
222 //! @brief PROC airy bi deriv = (REAL x) REAL
223
224 PROC_R_R_DBL (p, genie_airy_bi_deriv_real, gsl_sf_airy_Bi_deriv_e);
225
226 //! @brief PROC airy ai deriv scaled = (REAL x) REAL
227
228 PROC_R_R_DBL (p, genie_airy_ai_deriv_scaled_real, gsl_sf_airy_Ai_deriv_scaled_e);
229
230 //! @brief PROC airy bi deriv scaled = (REAL x) REAL
231
232 PROC_R_R_DBL (p, genie_airy_bi_deriv_scaled_real, gsl_sf_airy_Bi_deriv_scaled_e);
233
234 //! @brief PROC airy zero ai = (INT s) REAL
235
236 PROC_I_R (p, genie_airy_zero_ai_real, gsl_sf_airy_zero_Ai_e);
237
238 //! @brief PROC airy zero bi = (INT s) REAL
239
240 PROC_I_R (p, genie_airy_zero_bi_real, gsl_sf_airy_zero_Bi_e);
241
242 //! @brief PROC airy zero ai deriv = (INT s) REAL
243
244 PROC_I_R (p, genie_airy_zero_ai_deriv_real, gsl_sf_airy_zero_Ai_deriv_e);
245
246 //! @brief PROC airy zero bi deriv = (INT s) REAL
247
248 PROC_I_R (p, genie_airy_zero_bi_deriv_real, gsl_sf_airy_zero_Bi_deriv_e);
249
250 //! @brief PROC clausen = (REAL x) REAL
251
252 PROC_R_R (p, genie_clausen_real, gsl_sf_clausen_e);
253
254 //! @brief PROC bessel jn0 = (REAL x) REAL
255
256 PROC_R_R (p, genie_bessel_jn0_real, gsl_sf_bessel_J0_e);
257
258 //! @brief PROC bessel jn1 = (REAL x) REAL
259
260 PROC_R_R (p, genie_bessel_jn1_real, gsl_sf_bessel_J1_e);
261
262 //! @brief PROC bessel jn = (INT n, REAL x) REAL
263
264 PROC_I_R_R (p, genie_bessel_jn_real, gsl_sf_bessel_Jn_e);
265
266 //! @brief PROC bessel yn0 = (REAL x) REAL
267
268 PROC_R_R (p, genie_bessel_yn0_real, gsl_sf_bessel_Y0_e);
269
270 //! @brief PROC bessel yn1 = (REAL x) REAL
271
272 PROC_R_R (p, genie_bessel_yn1_real, gsl_sf_bessel_Y1_e);
273
274 //! @brief PROC bessel yn = (INT n, REAL x) REAL
275
276 PROC_I_R_R (p, genie_bessel_yn_real, gsl_sf_bessel_Yn_e);
277
278 //! @brief PROC bessel in0 = (REAL x) REAL
279
280 PROC_R_R (p, genie_bessel_in0_real, gsl_sf_bessel_I0_e);
281
282 //! @brief PROC bessel in1 = (REAL x) REAL
283
284 PROC_R_R (p, genie_bessel_in1_real, gsl_sf_bessel_I1_e);
285
286 //! @brief PROC bessel in = (INT n, REAL x) REAL
287
288 PROC_I_R_R (p, genie_bessel_in_real, gsl_sf_bessel_In_e);
289
290 //! @brief PROC bessel in0 scaled = (REAL x) REAL
291
292 PROC_R_R (p, genie_bessel_in0_scaled_real, gsl_sf_bessel_I0_scaled_e);
293
294 //! @brief PROC bessel in1 scaled = (REAL x) REAL
295
296 PROC_R_R (p, genie_bessel_in1_scaled_real, gsl_sf_bessel_I1_scaled_e);
297
298 //! @brief PROC bessel in scaled = (INT n, REAL x) REAL
299
300 PROC_I_R_R (p, genie_bessel_in_scaled_real, gsl_sf_bessel_In_scaled_e);
301
302 //! @brief PROC bessel kn0 = (REAL x) REAL
303
304 PROC_R_R (p, genie_bessel_kn0_real, gsl_sf_bessel_K0_e);
305
306 //! @brief PROC bessel kn1 = (REAL x) REAL
307
308 PROC_R_R (p, genie_bessel_kn1_real, gsl_sf_bessel_K1_e);
309
310 //! @brief PROC bessel kn = (INT n, REAL x) REAL
311
312 PROC_I_R_R (p, genie_bessel_kn_real, gsl_sf_bessel_Kn_e);
313
314 //! @brief PROC bessel kn0 scaled = (REAL x) REAL
315
316 PROC_R_R (p, genie_bessel_kn0_scaled_real, gsl_sf_bessel_K0_scaled_e);
317
318 //! @brief PROC bessel kn1 scaled = (REAL x) REAL
319
320 PROC_R_R (p, genie_bessel_kn1_scaled_real, gsl_sf_bessel_K1_scaled_e);
321
322 //! @brief PROC bessel kn scaled = (INT n, REAL x) REAL
323
324 PROC_I_R_R (p, genie_bessel_kn_scaled_real, gsl_sf_bessel_Kn_scaled_e);
325
326 //! @brief PROC bessel jl0 = (REAL x) REAL
327
328 PROC_R_R (p, genie_bessel_jl0_real, gsl_sf_bessel_j0_e);
329
330 //! @brief PROC bessel jl1 = (REAL x) REAL
331
332 PROC_R_R (p, genie_bessel_jl1_real, gsl_sf_bessel_j1_e);
333
334 //! @brief PROC bessel jl2 = (REAL x) REAL
335
336 PROC_R_R (p, genie_bessel_jl2_real, gsl_sf_bessel_j2_e);
337
338 //! @brief PROC bessel jl = (INT l, REAL x) REAL
339
340 PROC_I_R_R (p, genie_bessel_jl_real, gsl_sf_bessel_jl_e);
341
342 //! @brief PROC bessel yl0 = (REAL x) REAL
343
344 PROC_R_R (p, genie_bessel_yl0_real, gsl_sf_bessel_y0_e);
345
346 //! @brief PROC bessel yl1 = (REAL x) REAL
347
348 PROC_R_R (p, genie_bessel_yl1_real, gsl_sf_bessel_y1_e);
349
350 //! @brief PROC bessel yl2 = (REAL x) REAL
351
352 PROC_R_R (p, genie_bessel_yl2_real, gsl_sf_bessel_y2_e);
353
354 //! @brief PROC bessel yl = (INT l, REAL x) REAL
355
356 PROC_I_R_R (p, genie_bessel_yl_real, gsl_sf_bessel_yl_e);
357
358 //! @brief PROC bessel il0 scaled = (REAL x) REAL
359
360 PROC_R_R (p, genie_bessel_il0_scaled_real, gsl_sf_bessel_i0_scaled_e);
361
362 //! @brief PROC bessel il1 scaled = (REAL x) REAL
363
364 PROC_R_R (p, genie_bessel_il1_scaled_real, gsl_sf_bessel_i1_scaled_e);
365
366 //! @brief PROC bessel il2 scaled = (REAL x) REAL
367
368 PROC_R_R (p, genie_bessel_il2_scaled_real, gsl_sf_bessel_i2_scaled_e);
369
370 //! @brief PROC bessel il scaled = (INT l, REAL x) REAL
371
372 PROC_I_R_R (p, genie_bessel_il_scaled_real, gsl_sf_bessel_il_scaled_e);
373
374 //! @brief PROC bessel kl0 scaled = (REAL x) REAL
375
376 PROC_R_R (p, genie_bessel_kl0_scaled_real, gsl_sf_bessel_k0_scaled_e);
377
378 //! @brief PROC bessel kl1 scaled = (REAL x) REAL
379
380 PROC_R_R (p, genie_bessel_kl1_scaled_real, gsl_sf_bessel_k1_scaled_e);
381
382 //! @brief PROC bessel kl2 scaled = (REAL x) REAL
383
384 PROC_R_R (p, genie_bessel_kl2_scaled_real, gsl_sf_bessel_k2_scaled_e);
385
386 //! @brief PROC bessel kl scaled = (INT l, REAL x) REAL
387
388 PROC_I_R_R (p, genie_bessel_kl_scaled_real, gsl_sf_bessel_kl_scaled_e);
389
390 //! @brief PROC bessel jnu = (REAL nu, REAL x) REAL
391
392 PROC_R_R_R (p, genie_bessel_jnu_real, gsl_sf_bessel_Jnu_e);
393
394 //! @brief PROC bessel ynu = (REAL nu, x) REAL
395
396 PROC_R_R_R (p, genie_bessel_ynu_real, gsl_sf_bessel_Ynu_e);
397
398 //! @brief PROC bessel inu = (REAL nu, x) REAL
399
400 PROC_R_R_R (p, genie_bessel_inu_real, gsl_sf_bessel_Inu_e);
401
402 //! @brief PROC bessel inu scaled = (REAL nu, x) REAL
403
404 PROC_R_R_R (p, genie_bessel_inu_scaled_real, gsl_sf_bessel_Inu_scaled_e);
405
406 //! @brief PROC bessel knu = (REAL nu, x) REAL
407
408 PROC_R_R_R (p, genie_bessel_knu_real, gsl_sf_bessel_Knu_e);
409
410 //! @brief PROC bessel ln knu = (REAL nu, x) REAL
411
412 PROC_R_R_R (p, genie_bessel_ln_knu_real, gsl_sf_bessel_lnKnu_e);
413
414 //! @brief PROC bessel knu scaled = (REAL nu, x) REAL
415
416 PROC_R_R_R (p, genie_bessel_knu_scaled_real, gsl_sf_bessel_Knu_scaled_e);
417
418 //! @brief PROC bessel zero jnu0 = (INT s) REAL
419
420 PROC_I_R (p, genie_bessel_zero_jnu0_real, gsl_sf_bessel_zero_J0_e);
421
422 //! @brief PROC bessel zero jnu1 = (INT s) REAL
423
424 PROC_I_R (p, genie_bessel_zero_jnu1_real, gsl_sf_bessel_zero_J1_e);
425
426 //! @brief PROC bessel zero jnu = (INT s, REAL nu) REAL
427
428 PROC_I_R_R_REVERSED (p, genie_bessel_zero_jnu_real, gsl_sf_bessel_zero_Jnu_e);
429
430 //! @brief PROC dawson = (REAL x) REAL
431
432 PROC_R_R (p, genie_dawson_real, gsl_sf_dawson_e);
433
434 //! @brief PROC debye 1 = (REAL x) REAL
435
436 PROC_R_R (p, genie_debye_1_real, gsl_sf_debye_1_e);
437
438 //! @brief PROC debye 2 = (REAL x) REAL
439
440 PROC_R_R (p, genie_debye_2_real, gsl_sf_debye_2_e);
441
442 //! @brief PROC debye 3 = (REAL x) REAL
443
444 PROC_R_R (p, genie_debye_3_real, gsl_sf_debye_3_e);
445
446 //! @brief PROC debye 4 = (REAL x) REAL
447
448 PROC_R_R (p, genie_debye_4_real, gsl_sf_debye_4_e);
449
450 //! @brief PROC debye 5 = (REAL x) REAL
451
452 PROC_R_R (p, genie_debye_5_real, gsl_sf_debye_5_e);
453
454 //! @brief PROC debye 6 = (REAL x) REAL
455
456 PROC_R_R (p, genie_debye_6_real, gsl_sf_debye_6_e);
457
458 //! @brief PROC dilog = (REAL x) REAL
459
460 PROC_R_R (p, genie_dilog_real, gsl_sf_dilog_e);
461
462 //! @brief PROC ellint k comp = (REAL k) REAL
463
464 PROC_R_R_DBL (p, genie_ellint_k_comp_real, gsl_sf_ellint_Kcomp_e);
465
466 //! @brief PROC ellint e comp = (REAL k) REAL
467
468 PROC_R_R_DBL (p, genie_ellint_e_comp_real, gsl_sf_ellint_Ecomp_e);
469
470 //! @brief PROC ellint p comp = (REAL k, n) REAL
471
472 PROC_R_R_R_DBL (p, genie_ellint_p_comp_real, gsl_sf_ellint_Pcomp_e);
473
474 //! @brief PROC ellint d = (REAL phi, k) REAL
475
476 PROC_R_R_R_DBL (p, genie_ellint_d_real, gsl_sf_ellint_D_e);
477
478 //! @brief PROC ellint e = (REAL phi, k) REAL
479
480 PROC_R_R_R_DBL (p, genie_ellint_e_real, gsl_sf_ellint_E_e);
481
482 //! @brief PROC ellint f = (REAL phi, k) REAL
483
484 PROC_R_R_R_DBL (p, genie_ellint_f_real, gsl_sf_ellint_F_e);
485
486 //! @brief PROC ellint p = (REAL phi, k, n) REAL
487
488 PROC_R_R_R_R_DBL (p, genie_ellint_p_real, gsl_sf_ellint_P_e);
489
490 //! @brief PROC ellint rc = (REAL x, y) REAL
491
492 PROC_R_R_R_DBL (p, genie_ellint_rc_real, gsl_sf_ellint_RC_e);
493
494 //! @brief PROC ellint rf = (REAL x, y, z) REAL
495
496 PROC_R_R_R_R_DBL (p, genie_ellint_rf_real, gsl_sf_ellint_RF_e);
497
498 //! @brief PROC ellint rd = (REAL x, y, z) REAL
499
500 PROC_R_R_R_R_DBL (p, genie_ellint_rd_real, gsl_sf_ellint_RD_e);
501
502 //! @brief PROC ellint rj = (REAL x, y, z, p) REAL
503
504 PROC_R_R_R_R_R_DBL (p, genie_ellint_rj_real, gsl_sf_ellint_RJ_e);
505
506 //! @brief PROC expint e1 = (REAL x) REAL
507
508 PROC_R_R (p, genie_expint_e1_real, gsl_sf_expint_E1_e);
509
510 //! @brief PROC expint e2 = (REAL x) REAL
511
512 PROC_R_R (p, genie_expint_e2_real, gsl_sf_expint_E2_e);
513
514 //! @brief PROC expint en = (INT n, REAL x) REAL
515
516 PROC_I_R_R (p, genie_expint_en_real, gsl_sf_expint_En_e);
517
518 //! @brief PROC expint ei = (REAL x) REAL
519
520 PROC_R_R (p, genie_expint_ei_real, gsl_sf_expint_Ei_e);
521
522 //! @brief PROC shi = (REAL x) REAL
523
524 PROC_R_R (p, genie_shi_real, gsl_sf_Shi_e);
525
526 //! @brief PROC chi = (REAL x) REAL
527
528 PROC_R_R (p, genie_chi_real, gsl_sf_Chi_e);
529
530 //! @brief PROC expint 3 = (REAL x) REAL
531
532 PROC_R_R (p, genie_expint_3_real, gsl_sf_expint_3_e);
533
534 //! @brief PROC si = (REAL x) REAL
535
536 PROC_R_R (p, genie_si_real, gsl_sf_Si_e);
537
538 //! @brief PROC ci = (REAL x) REAL
539
540 PROC_R_R (p, genie_ci_real, gsl_sf_Ci_e);
541
542 //! @brief PROC atanint = (REAL x) REAL
543
544 PROC_R_R (p, genie_atanint_real, gsl_sf_atanint_e);
545
546 //! @brief PROC fermi dirac m1 = (REAL x) REAL
547
548 PROC_R_R (p, genie_fermi_dirac_m1_real, gsl_sf_fermi_dirac_m1_e);
549
550 //! @brief PROC fermi dirac 0 = (REAL x) REAL
551
552 PROC_R_R (p, genie_fermi_dirac_0_real, gsl_sf_fermi_dirac_0_e);
553
554 //! @brief PROC fermi dirac 1 = (REAL x) REAL
555
556 PROC_R_R (p, genie_fermi_dirac_1_real, gsl_sf_fermi_dirac_1_e);
557
558 //! @brief PROC fermi dirac 2 = (REAL x) REAL
559
560 PROC_R_R (p, genie_fermi_dirac_2_real, gsl_sf_fermi_dirac_2_e);
561
562 //! @brief PROC fermi dirac int = (INT n, REAL x) REAL
563
564 PROC_I_R_R (p, genie_fermi_dirac_int_real, gsl_sf_fermi_dirac_int_e);
565
566 //! @brief PROC fermi dirac m half = (REAL x) REAL
567
568 PROC_R_R (p, genie_fermi_dirac_mhalf_real, gsl_sf_fermi_dirac_mhalf_e);
569
570 //! @brief PROC fermi dirac half = (REAL x) REAL
571
572 PROC_R_R (p, genie_fermi_dirac_half_real, gsl_sf_fermi_dirac_half_e);
573
574 //! @brief PROC fermi dirac 3 half = (REAL x) REAL
575
576 PROC_R_R (p, genie_fermi_dirac_3half_real, gsl_sf_fermi_dirac_3half_e);
577
578 //! @brief PROC fermi dirac inc0 = (REAL x, b) REAL
579
580 PROC_R_R_R (p, genie_fermi_dirac_inc_0_real, gsl_sf_fermi_dirac_inc_0_e);
581
582 //! @brief PROC digamma = (REAL x) REAL
583
584 PROC_R_R (p, genie_digamma_real, gsl_sf_psi_e);
585
586 //! @brief PROC gamma star = (REAL x) REAL
587
588 PROC_R_R (p, genie_gammastar_real, gsl_sf_gammastar_e);
589
590 //! @brief PROC gamma inv = (REAL x) REAL
591
592 PROC_R_R (p, genie_gammainv_real, gsl_sf_gammainv_e);
593
594 //! @brief PROC double fact = (INT n) REAL
595
596 PROC_I_R (p, genie_doublefact_real, gsl_sf_doublefact_e);
597
598 //! @brief PROC ln double fact = (INT n) REAL
599
600 PROC_I_R (p, genie_lndoublefact_real, gsl_sf_lndoublefact_e);
601
602 //! @brief PROC taylor coeff = (INT n, REAL x) REAL
603
604 PROC_I_R_R (p, genie_taylorcoeff_real, gsl_sf_taylorcoeff_e);
605
606 //! @brief PROC poch = (REAL a, x) REAL
607
608 PROC_R_R_R (p, genie_poch_real, gsl_sf_poch_e);
609
610 //! @brief PROC lnpoch = (REAL a, x) REAL
611
612 PROC_R_R_R (p, genie_lnpoch_real, gsl_sf_lnpoch_e);
613
614 //! @brief PROC pochrel = (REAL a, x) REAL
615
616 PROC_R_R_R (p, genie_pochrel_real, gsl_sf_pochrel_e);
617
618 //! @brief PROC beta inc = (REAL a, b, x) REAL
619
620 PROC_R_R_R_R (p, genie_beta_inc_real, gsl_sf_beta_inc_e);
621
622 //! @brief PROC gamma inc = (REAL a, x) REAL
623
624 PROC_R_R_R (p, genie_gamma_inc_real, gsl_sf_gamma_inc_e);
625
626 //! @brief PROC gamma inc q = (REAL a, x) REAL
627
628 PROC_R_R_R (p, genie_gamma_inc_q_real, gsl_sf_gamma_inc_Q_e);
629
630 //! @brief PROC gamma inc p = (REAL a, x) REAL
631
632 PROC_R_R_R (p, genie_gamma_inc_p_real, gsl_sf_gamma_inc_P_e);
633
634 //! @brief PROC gegenpoly 1 = (REAL lambda, x) REAL
635
636 PROC_R_R_R (p, genie_gegenpoly_1_real, gsl_sf_gegenpoly_1_e);
637
638 //! @brief PROC gegenpoly 2 = (REAL lambda, x) REAL
639
640 PROC_R_R_R (p, genie_gegenpoly_2_real, gsl_sf_gegenpoly_2_e);
641
642 //! @brief PROC gegenpoly 3 = (REAL lambda, x) REAL
643
644 PROC_R_R_R (p, genie_gegenpoly_3_real, gsl_sf_gegenpoly_3_e);
645
646 //! @brief PROC gegenpoly n = (INT n, REAL lambda, x) REAL
647
648 PROC_I_R_R_R (p, genie_gegenpoly_n_real, gsl_sf_gegenpoly_n_e);
649
650 //! @brief PROC laguerre 1 = (REAL a, x) REAL
651
652 PROC_R_R_R (p, genie_laguerre_1_real, gsl_sf_laguerre_1_e);
653
654 //! @brief PROC laguerre 2 = (REAL a, x) REAL
655
656 PROC_R_R_R (p, genie_laguerre_2_real, gsl_sf_laguerre_2_e);
657
658 //! @brief PROC laguerre 3 = (REAL a, x) REAL
659
660 PROC_R_R_R (p, genie_laguerre_3_real, gsl_sf_laguerre_3_e);
661
662 //! @brief PROC laguerre n = (INT n, REAL a, x) REAL
663
664 PROC_I_R_R_R (p, genie_laguerre_n_real, gsl_sf_laguerre_n_e);
665
666 //! @brief PROC lambert w0 = (REAL x) REAL
667
668 PROC_R_R (p, genie_lambert_w0_real, gsl_sf_lambert_W0_e);
669
670 //! @brief PROC lambert wm1 = (REAL x) REAL
671
672 PROC_R_R (p, genie_lambert_wm1_real, gsl_sf_lambert_Wm1_e);
673
674 //! @brief PROC legendre p1 = (REAL x) REAL
675
676 PROC_R_R (p, genie_legendre_p1_real, gsl_sf_legendre_P1_e);
677
678 //! @brief PROC legendre p2 = (REAL x) REAL
679
680 PROC_R_R (p, genie_legendre_p2_real, gsl_sf_legendre_P2_e);
681
682 //! @brief PROC legendre p3 = (REAL x) REAL
683
684 PROC_R_R (p, genie_legendre_p3_real, gsl_sf_legendre_P3_e);
685
686 //! @brief PROC legendre pl = (INT l, REAL x) REAL
687
688 PROC_I_R_R (p, genie_legendre_pl_real, gsl_sf_legendre_Pl_e);
689
690 //! @brief PROC legendre q0 = (REAL x) REAL
691
692 PROC_R_R (p, genie_legendre_q0_real, gsl_sf_legendre_Q0_e);
693
694 //! @brief PROC legendre q1 = (REAL x) REAL
695
696 PROC_R_R (p, genie_legendre_q1_real, gsl_sf_legendre_Q1_e);
697
698 //! @brief PROC legendre ql = (INT l, REAL x) REAL
699
700 PROC_I_R_R (p, genie_legendre_ql_real, gsl_sf_legendre_Ql_e);
701
702 //! @brief PROC conicalp half = (REAL lambda, x) REAL
703
704 PROC_R_R_R (p, genie_conicalp_half_real, gsl_sf_conicalP_half_e);
705
706 //! @brief PROC conicalp mhalf = (REAL lambda, x) REAL
707
708 PROC_R_R_R (p, genie_conicalp_mhalf_real, gsl_sf_conicalP_mhalf_e);
709
710 //! @brief PROC conicalp 0 = (REAL lambda, x) REAL
711
712 PROC_R_R_R (p, genie_conicalp_0_real, gsl_sf_conicalP_0_e);
713
714 //! @brief PROC conicalp 1 = (REAL lambda, x) REAL
715
716 PROC_R_R_R (p, genie_conicalp_1_real, gsl_sf_conicalP_1_e);
717
718 //! @brief PROC conicalp sph reg = (INT n, REAL lambda, x) REAL
719
720 PROC_I_R_R_R (p, genie_conicalp_sph_reg_real, gsl_sf_conicalP_sph_reg_e);
721
722 //! @brief PROC conicalp cyl reg = (INT n, REAL lambda, x) REAL
723
724 PROC_I_R_R_R (p, genie_conicalp_cyl_reg_real, gsl_sf_conicalP_cyl_reg_e);
725
726 //! @brief PROC legendre h3d 0 = (REAL lambda, x) REAL
727
728 PROC_R_R_R (p, genie_legendre_h3d_0_real, gsl_sf_legendre_H3d_0_e);
729
730 //! @brief PROC legendre h3d 1 = (REAL lambda, x) REAL
731
732 PROC_R_R_R (p, genie_legendre_h3d_1_real, gsl_sf_legendre_H3d_1_e);
733
734 //! @brief PROC legendre h3d = (INT l, REAL lambda, x) REAL
735
736 PROC_I_R_R_R (p, genie_legendre_H3d_real, gsl_sf_legendre_H3d_e);
737
738 //! @brief PROC psi int = (INT n) REAL
739
740 PROC_I_R (p, genie_psi_int_real, gsl_sf_psi_int_e);
741
742 //! @brief PROC psi = (INT n) REAL
743
744 PROC_R_R (p, genie_psi_real, gsl_sf_psi_e);
745
746 //! @brief PROC psi 1piy = (INT n) REAL
747
748 PROC_R_R (p, genie_psi_1piy_real, gsl_sf_psi_1piy_e);
749
750 //! @brief PROC psi 1 = (INT n) REAL
751
752 PROC_I_R (p, genie_psi_1_int_real, gsl_sf_psi_1_int_e);
753
754 //! @brief PROC psi 1 = (REAL x) REAL
755
756 PROC_R_R (p, genie_psi_1_real, gsl_sf_psi_1_e);
757
758 //! @brief PROC psi n = (INT n, REAL x) REAL
759
760 PROC_I_R_R (p, genie_psi_n_real, gsl_sf_psi_n_e);
761
762 //! @brief PROC synchrotron 1 = (REAL x) REAL
763
764 PROC_R_R (p, genie_synchrotron_1_real, gsl_sf_synchrotron_1_e);
765
766 //! @brief PROC synchrotron 2 = (REAL x) REAL
767
768 PROC_R_R (p, genie_synchrotron_2_real, gsl_sf_synchrotron_2_e);
769
770 //! @brief PROC transport 2 = (REAL x) REAL
771
772 PROC_R_R (p, genie_transport_2_real, gsl_sf_transport_2_e);
773
774 //! @brief PROC transport 3 = (REAL x) REAL
775
776 PROC_R_R (p, genie_transport_3_real, gsl_sf_transport_3_e);
777
778 //! @brief PROC transport 4 = (REAL x) REAL
779
780 PROC_R_R (p, genie_transport_4_real, gsl_sf_transport_4_e);
781
782 //! @brief PROC transport 5 = (REAL x) REAL
783
784 PROC_R_R (p, genie_transport_5_real, gsl_sf_transport_5_e);
785
786 //! @brief PROC hypot = (REAL x) REAL
787
788 PROC_R_R_R (p, genie_hypot_real, gsl_sf_hypot_e);
789
790 //! @brief PROC sinc = (REAL x) REAL
791
792 PROC_R_R (p, genie_sinc_real, gsl_sf_sinc_e);
793
794 //! @brief PROC lnsinh = (REAL x) REAL
795
796 PROC_R_R (p, genie_lnsinh_real, gsl_sf_lnsinh_e);
797
798 //! @brief PROC lncosh = (REAL x) REAL
799
800 PROC_R_R (p, genie_lncosh_real, gsl_sf_lncosh_e);
801
802 //! @brief PROC angle restrict symm = (REAL theta) REAL
803
804 PROC_RR_R (p, genie_angle_restrict_symm_real, gsl_sf_angle_restrict_symm_e);
805
806 //! @brief PROC angle restrict pos = (REAL theta) REAL
807
808 PROC_RR_R (p, genie_angle_restrict_pos_real, gsl_sf_angle_restrict_pos_e);
809
810 //! @brief PROC zeta int = (INT n) REAL
811
812 PROC_I_R (p, genie_zeta_int_real, gsl_sf_zeta_int_e);
813
814 //! @brief PROC zeta = (REAL s) REAL
815
816 PROC_R_R (p, genie_zeta_real, gsl_sf_zeta_e);
817
818 //! @brief PROC zetam1 int = (INT n) REAL
819
820 PROC_I_R (p, genie_zetam1_int_real, gsl_sf_zetam1_int_e);
821
822 //! @brief PROC zetam1 = (REAL s) REAL
823
824 PROC_R_R (p, genie_zetam1_real, gsl_sf_zetam1_e);
825
826 //! @brief PROC hzeta = (REAL s, q) REAL
827
828 PROC_R_R_R (p, genie_hzeta_real, gsl_sf_hzeta_e);
829
830 //! @brief PROC eta int = (INT n) REAL
831
832 PROC_I_R (p, genie_etaint_real, gsl_sf_eta_int_e);
833
834 //! @brief PROC eta = (REAL s) REAL
835
836 PROC_R_R (p, genie_eta_real, gsl_sf_eta_e);
837
838 //! @brief PROC expm1 = (REAL x) REAL
839
840 PROC_R_R (p, genie_expm1_real, gsl_sf_expm1_e);
841
842 //! @brief PROC exprel = (REAL x) REAL
843
844 PROC_R_R (p, genie_exprel_real, gsl_sf_exprel_e);
845
846 //! @brief PROC exprel2 = (REAL x) REAL
847
848 PROC_R_R (p, genie_exprel_2_real, gsl_sf_exprel_2_e);
849
850 //! @brief PROC exprel n = (INT l, REAL x) REAL
851
852 PROC_I_R_R (p, genie_exprel_n_real, gsl_sf_exprel_n_e);
853
854 //! @brief PROC logabs = (REAL x) REAL
855
856 PROC_R_R (p, genie_log_abs_real, gsl_sf_log_abs_e);
857
858 //! @brief PROC log1plusx = (REAL x) REAL
859
860 PROC_R_R (p, genie_log_1plusx_real, gsl_sf_log_1plusx_e);
861
862 //! @brief PROC log1plusxmx = (REAL x) REAL
863
864 PROC_R_R (p, genie_log_1plusx_mx_real, gsl_sf_log_1plusx_mx_e);
865
866 //! @brief PROC hermite func = (INT n, REAL x) REAL
867
868 PROC_I_R_R (p, genie_hermite_func_real, gsl_sf_hermite_func_e);
869
870 #endif