28#include <gsl/gsl_combination.h>
29#include <gsl/gsl_randist.h>
30#include <gsl/gsl_rng.h>
31#include <gsl/gsl_sf.h>
36#define BESSEL_K_THRES 1.0e2
41double FC_FUNC_(oct_gamma, OCT_GAMMA)(
const double *x) {
42 return gsl_sf_gamma(*x);
45double FC_FUNC_(oct_incomplete_gamma, OCT_INCOMPLETE_GAMMA)(
const double *a,
47 return gsl_sf_gamma_inc_Q(*a, *x);
53 return gsl_sf_bessel_j0(*x);
55 return gsl_sf_bessel_j1(*x);
57 return gsl_sf_bessel_j2(*x);
59 return gsl_sf_bessel_jl(*
l, *x);
63double FC_FUNC_(oct_bessel, OCT_BESSEL)(
const fint *n,
const double *x) {
64 return gsl_sf_bessel_Jn(*n, *x);
67double FC_FUNC_(oct_bessel_in, OCT_BESSEL_IN)(
const fint *n,
const double *x) {
68 return gsl_sf_bessel_In(*n, *x);
71double FC_FUNC_(oct_bessel_j0, OCT_BESSEL_J0)(
const double *x) {
72 return gsl_sf_bessel_J0(*x);
75double FC_FUNC_(oct_bessel_j1, OCT_BESSEL_J1)(
const double *x) {
76 return gsl_sf_bessel_J1(*x);
79double FC_FUNC_(oct_bessel_k0, OCT_BESSEL_K0)(
const double *x) {
80 if (*x > BESSEL_K_THRES) {
83 return gsl_sf_bessel_K0(*x);
87double FC_FUNC_(oct_bessel_k1, OCT_BESSEL_K1)(
const double *x) {
88 if (*x > BESSEL_K_THRES) {
91 return gsl_sf_bessel_K1(*x);
96double FC_FUNC_(oct_erfc, OCT_ERFC)(
const double *x) {
103 return gsl_sf_erfc(*x);
107double FC_FUNC_(oct_erf, OCT_ERF)(
const double *x) {
114 return gsl_sf_erf(*x);
120 return gsl_sf_legendre_sphPlm(*
l, *m, *x);
124double FC_FUNC_(oct_sf_laguerre_n, OCT_SF_LAGUERRE_N)(
const int *n,
127 return gsl_sf_laguerre_n(*n, *a, *x);
132void FC_FUNC_(oct_combination_init, OCT_COMBINATION_INIT)(gsl_combination **c,
135 *c = gsl_combination_calloc(*n, *k);
138void FC_FUNC_(oct_combination_next, OCT_COMBINATION_NEXT)(gsl_combination **c,
140 *next = gsl_combination_next(((gsl_combination *)(*c)));
143void FC_FUNC_(oct_get_combination, OCT_GET_COMBINATION)(gsl_combination **c,
146 for (
i = 0;
i < ((gsl_combination *)(*c))->k;
i++) {
147 comb[
i] = (
fint)((gsl_combination *)(*c))->data[
i];
151void FC_FUNC_(oct_combination_end, OCT_COMBINATION_END)(gsl_combination **c) {
152 gsl_combination_free(((gsl_combination *)(*c)));
156void FC_FUNC_(oct_ran_init, OCT_RAN_INIT)(gsl_rng **r) {
158 *r = gsl_rng_alloc(gsl_rng_default);
161void FC_FUNC_(oct_ran_end, OCT_RAN_END)(gsl_rng **r) { gsl_rng_free(*r); }
164double FC_FUNC_(oct_ran_gaussian, OCT_RAN_GAUSSIAN)(
const gsl_rng **r,
165 const double *
sigma) {
166 return gsl_ran_gaussian(*r, *
sigma);
169double FC_FUNC_(oct_ran_flat, OCT_RAN_FLAT)(
const gsl_rng **r,
const double *a,
171 return gsl_ran_flat(*r, *a, *b);
176 c = gsl_strerror(*err);
real(real64), dimension(:,:), allocatable sigma
S_E matrix.
double FC_FUNC_(oct_gamma, OCT_GAMMA) const
void oct_strerror(const fint *err, char *res)