single-gsl.c

You can download the current version of Algol 68 Genie and its documentation here.

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