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