48#ifndef MARLEY_FOUND_GSL
51#ifndef MARLEY_BUILTIN_GSL_SPECFUNC_ERROR_H
52#define MARLEY_BUILTIN_GSL_SPECFUNC_ERROR_H
53#define OVERFLOW_ERROR(result) do { (result)->val = GSL_POSINF; (result)->err = GSL_POSINF; GSL_ERROR ("overflow", GSL_EOVRFLW); } while(0)
54#define UNDERFLOW_ERROR(result) do { (result)->val = 0.0; (result)->err = GSL_DBL_MIN; GSL_ERROR ("underflow", GSL_EUNDRFLW); } while(0)
55#define INTERNAL_OVERFLOW_ERROR(result) do { (result)->val = GSL_POSINF; (result)->err = GSL_POSINF; return GSL_EOVRFLW; } while(0)
56#define INTERNAL_UNDERFLOW_ERROR(result) do { (result)->val = 0.0; (result)->err = GSL_DBL_MIN; return GSL_EUNDRFLW; } while(0)
57#define DOMAIN_ERROR(result) do { (result)->val = GSL_NAN; (result)->err = GSL_NAN; GSL_ERROR ("domain error", GSL_EDOM); } while(0)
58#define DOMAIN_ERROR_MSG(msg, result) do { (result)->val = GSL_NAN; (result)->err = GSL_NAN; GSL_ERROR ((msg), GSL_EDOM); } while(0)
59#define DOMAIN_ERROR_E10(result) do { (result)->val = GSL_NAN; (result)->err = GSL_NAN; (result)->e10 = 0 ; GSL_ERROR ("domain error", GSL_EDOM); } while(0)
60#define OVERFLOW_ERROR_E10(result) do { (result)->val = GSL_POSINF; (result)->err = GSL_POSINF; (result)->e10 = 0; GSL_ERROR ("overflow", GSL_EOVRFLW); } while(0)
61#define UNDERFLOW_ERROR_E10(result) do { (result)->val = 0.0; (result)->err = GSL_DBL_MIN; (result)->e10 = 0; GSL_ERROR ("underflow", GSL_EUNDRFLW); } while(0)
62#define OVERFLOW_ERROR_2(r1,r2) do { (r1)->val = GSL_POSINF; (r1)->err = GSL_POSINF; (r2)->val = GSL_POSINF ; (r2)->err=GSL_POSINF; GSL_ERROR ("overflow", GSL_EOVRFLW); } while(0)
63#define UNDERFLOW_ERROR_2(r1,r2) do { (r1)->val = 0.0; (r1)->err = GSL_DBL_MIN; (r2)->val = 0.0 ; (r2)->err = GSL_DBL_MIN; GSL_ERROR ("underflow", GSL_EUNDRFLW); } while(0)
64#define DOMAIN_ERROR_2(r1,r2) do { (r1)->val = GSL_NAN; (r1)->err = GSL_NAN; (r2)->val = GSL_NAN; (r2)->err = GSL_NAN; GSL_ERROR ("domain error", GSL_EDOM); } while(0)
65#define MAXITER_ERROR(result) do { (result)->val = GSL_NAN; (result)->err = GSL_NAN; GSL_ERROR ("too many iterations error", GSL_EMAXITER); } while(0)
70#ifndef MARLEY_BUILTIN_GSL_SPECFUNC_CHECK_H
71#define MARLEY_BUILTIN_GSL_SPECFUNC_CHECK_H
72#define CHECK_UNDERFLOW(r) if (fabs((r)->val) < GSL_DBL_MIN) GSL_ERROR("underflow", GSL_EUNDRFLW);
77#ifndef MARLEY_BUILTIN_GSL_SPECFUNC_EVAL_H
78#define MARLEY_BUILTIN_GSL_SPECFUNC_EVAL_H
79#define EVAL_RESULT(fn) gsl_sf_result result; int status = fn; if (status != GSL_SUCCESS) { GSL_ERROR_VAL(#fn, status, result.val); } ; return result.val;
80#define EVAL_DOUBLE(fn) int status = fn; if (status != GSL_SUCCESS) { GSL_ERROR_VAL(#fn, status, result); } ; return result;
85#ifndef MARLEY_BUILTIN_GSL_CHEBYSHEV_H
86#define MARLEY_BUILTIN_GSL_CHEBYSHEV_H
118#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
119#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
121#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
122#define MARLEY_BUILTIN_GSL_CONFIG_H
125#define HAVE_DECL_ISFINITE 1
126#define HAVE_DECL_ISNAN 1
127#define HAVE_DECL_ISINF 1
128#define GSL_COERCE_DBL(x) (x)
130#define GSL_DISABLE_DEPRECATED 0
131#define PACKAGE_VERSION "2.8"
163#ifndef __GSL_ERRNO_H__
164#define __GSL_ERRNO_H__
188#ifndef __GSL_TYPES_H__
189#define __GSL_TYPES_H__
196# define GSL_VAR extern __declspec(dllexport)
198# define GSL_VAR extern __declspec(dllimport)
201# define GSL_VAR extern
204# define GSL_VAR extern
215# define __BEGIN_DECLS extern "C" {
216# define __END_DECLS }
218# define __BEGIN_DECLS
262void gsl_error (
const char * reason,
const char * file,
int line,
265void gsl_stream_printf (
const char *label,
const char *file,
266 int line,
const char *reason);
268typedef void gsl_error_handler_t (
const char * reason,
const char * file,
269 int line,
int gsl_errno);
272gsl_set_error_handler (gsl_error_handler_t * new_handler);
276#define GSL_ERROR(reason, gsl_errno) \
278 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
284#define GSL_ERROR_VAL(reason, gsl_errno, value) \
286 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
293#define GSL_ERROR_VOID(reason, gsl_errno) \
295 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
301#define GSL_ERROR_NULL(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, 0)
317#define GSL_ERROR_SELECT_2(a,b) ((a) != GSL_SUCCESS ? (a) : ((b) != GSL_SUCCESS ? (b) : GSL_SUCCESS))
318#define GSL_ERROR_SELECT_3(a,b,c) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_2(b,c))
319#define GSL_ERROR_SELECT_4(a,b,c,d) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_3(b,c,d))
320#define GSL_ERROR_SELECT_5(a,b,c,d,e) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_4(b,c,d,e))
322#define GSL_STATUS_UPDATE(sp, s) do { if ((s) != GSL_SUCCESS) *(sp) = (s);} while(0)
329gsl_error_handler_t * gsl_error_handler = NULL;
332gsl_error (
const char * reason,
const char * file,
int line,
int gsl_errno)
334 if (gsl_error_handler)
336 (*gsl_error_handler) (reason, file, line, gsl_errno);
340 gsl_stream_printf (
"ERROR", file, line, reason);
343 fprintf (stderr,
"Default GSL error handler invoked.\n");
350gsl_set_error_handler (gsl_error_handler_t * new_handler)
352 gsl_error_handler_t * previous_handler = gsl_error_handler;
353 gsl_error_handler = new_handler;
354 return previous_handler;
380#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
381#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
383#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
384#define MARLEY_BUILTIN_GSL_CONFIG_H
387#define HAVE_DECL_ISFINITE 1
388#define HAVE_DECL_ISNAN 1
389#define HAVE_DECL_ISINF 1
390#define GSL_COERCE_DBL(x) (x)
392#define GSL_DISABLE_DEPRECATED 0
393#define PACKAGE_VERSION "2.8"
425#ifndef __GSL_ERRNO_H__
426#define __GSL_ERRNO_H__
450#ifndef __GSL_TYPES_H__
451#define __GSL_TYPES_H__
458# define GSL_VAR extern __declspec(dllexport)
460# define GSL_VAR extern __declspec(dllimport)
463# define GSL_VAR extern
466# define GSL_VAR extern
515void gsl_error (
const char * reason,
const char * file,
int line,
518void gsl_stream_printf (
const char *label,
const char *file,
519 int line,
const char *reason);
521typedef void gsl_error_handler_t (
const char * reason,
const char * file,
522 int line,
int gsl_errno);
525gsl_set_error_handler (gsl_error_handler_t * new_handler);
529#define GSL_ERROR(reason, gsl_errno) \
531 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
537#define GSL_ERROR_VAL(reason, gsl_errno, value) \
539 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
546#define GSL_ERROR_VOID(reason, gsl_errno) \
548 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
554#define GSL_ERROR_NULL(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, 0)
570#define GSL_ERROR_SELECT_2(a,b) ((a) != GSL_SUCCESS ? (a) : ((b) != GSL_SUCCESS ? (b) : GSL_SUCCESS))
571#define GSL_ERROR_SELECT_3(a,b,c) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_2(b,c))
572#define GSL_ERROR_SELECT_4(a,b,c,d) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_3(b,c,d))
573#define GSL_ERROR_SELECT_5(a,b,c,d,e) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_4(b,c,d,e))
575#define GSL_STATUS_UPDATE(sp, s) do { if ((s) != GSL_SUCCESS) *(sp) = (s);} while(0)
582FILE * gsl_stream = NULL ;
583static void (*gsl_stream_handler)(
const char * label,
const char * file,
584 int line,
const char * reason) = NULL;
587gsl_stream_printf (
const char *label,
const char *file,
int line,
590 if (gsl_stream == NULL)
594 if (gsl_stream_handler)
596 (*gsl_stream_handler) (label, file, line, reason);
599 fprintf (gsl_stream,
"gsl: %s:%d: %s: %s\n", file, line, label, reason);
625#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
626#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
628#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
629#define MARLEY_BUILTIN_GSL_CONFIG_H
632#define HAVE_DECL_ISFINITE 1
633#define HAVE_DECL_ISNAN 1
634#define HAVE_DECL_ISINF 1
635#define GSL_COERCE_DBL(x) (x)
637#define GSL_DISABLE_DEPRECATED 0
638#define PACKAGE_VERSION "2.8"
673double gsl_log1p (
const double x);
674double gsl_expm1 (
const double x);
675double gsl_hypot (
const double x,
const double y);
676double gsl_hypot3 (
const double x,
const double y,
const double z);
677double gsl_acosh (
const double x);
678double gsl_asinh (
const double x);
679double gsl_atanh (
const double x);
681int gsl_isnan (
const double x);
682int gsl_isinf (
const double x);
683int gsl_finite (
const double x);
685double gsl_nan (
void);
686double gsl_posinf (
void);
687double gsl_neginf (
void);
688double gsl_fdiv (
const double x,
const double y);
690double gsl_coerce_double (
const double x);
691float gsl_coerce_float (
const float x);
692long double gsl_coerce_long_double (
const long double x);
694double gsl_ldexp(
const double x,
const int e);
695double gsl_frexp(
const double x,
int * e);
697int gsl_fcmp (
const double x1,
const double x2,
const double epsilon);
705gsl_fdiv (
const double x,
const double y)
730#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
731#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
733#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
734#define MARLEY_BUILTIN_GSL_CONFIG_H
737#define HAVE_DECL_ISFINITE 1
738#define HAVE_DECL_ISNAN 1
739#define HAVE_DECL_ISINF 1
740#define GSL_COERCE_DBL(x) (x)
742#define GSL_DISABLE_DEPRECATED 0
743#define PACKAGE_VERSION "2.8"
782double gsl_log1p (
const double x);
783double gsl_expm1 (
const double x);
784double gsl_hypot (
const double x,
const double y);
785double gsl_hypot3 (
const double x,
const double y,
const double z);
786double gsl_acosh (
const double x);
787double gsl_asinh (
const double x);
788double gsl_atanh (
const double x);
790int gsl_isnan (
const double x);
791int gsl_isinf (
const double x);
792int gsl_finite (
const double x);
794double gsl_nan (
void);
795double gsl_posinf (
void);
796double gsl_neginf (
void);
797double gsl_fdiv (
const double x,
const double y);
799double gsl_coerce_double (
const double x);
800float gsl_coerce_float (
const float x);
801long double gsl_coerce_long_double (
const long double x);
803double gsl_ldexp(
const double x,
const int e);
804double gsl_frexp(
const double x,
int * e);
806int gsl_fcmp (
const double x1,
const double x2,
const double epsilon);
815 return gsl_fdiv (0.0, 0.0);
818double gsl_posinf (
void)
820 return gsl_fdiv (+1.0, 0.0);
823double gsl_neginf (
void)
825 return gsl_fdiv (-1.0, 0.0);
829int gsl_isnan (
const double x);
830int gsl_isinf (
const double x);
831int gsl_finite (
const double x);
836gsl_isnan (
const double x)
842gsl_isinf (
const double x)
844 int fpc = _fpclass(x);
846 if (fpc == _FPCLASS_PINF)
848 else if (fpc == _FPCLASS_NINF)
855gsl_finite (
const double x)
861# if HAVE_DECL_ISFINITE
863gsl_finite (
const double x)
867# elif HAVE_DECL_FINITE
869gsl_finite (
const double x)
873# elif HAVE_IEEE_COMPARISONS
875gsl_finite (
const double x)
877 const double y = x - x;
878 int status = (y == y);
882# error "cannot define gsl_finite without HAVE_DECL_FINITE or HAVE_IEEE_COMPARISONS"
887gsl_isnan (
const double x)
891#elif HAVE_IEEE_COMPARISONS
893gsl_isnan (
const double x)
895 int status = (x != x);
899# error "cannot define gsl_isnan without HAVE_DECL_ISNAN or HAVE_IEEE_COMPARISONS"
904gsl_isinf (
const double x)
912 return (x > 0) ? 1 : -1;
922gsl_isinf (
const double x)
924 if (! gsl_finite(x) && ! gsl_isnan(x))
926 return (x > 0 ? +1 : -1);
958#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
959#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
961#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
962#define MARLEY_BUILTIN_GSL_CONFIG_H
965#define HAVE_DECL_ISFINITE 1
966#define HAVE_DECL_ISNAN 1
967#define HAVE_DECL_ISINF 1
968#define GSL_COERCE_DBL(x) (x)
970#define GSL_DISABLE_DEPRECATED 0
971#define PACKAGE_VERSION "2.8"
1001#ifndef __GSL_SYS_H__
1002#define __GSL_SYS_H__
1006double gsl_log1p (
const double x);
1007double gsl_expm1 (
const double x);
1008double gsl_hypot (
const double x,
const double y);
1009double gsl_hypot3 (
const double x,
const double y,
const double z);
1010double gsl_acosh (
const double x);
1011double gsl_asinh (
const double x);
1012double gsl_atanh (
const double x);
1014int gsl_isnan (
const double x);
1015int gsl_isinf (
const double x);
1016int gsl_finite (
const double x);
1018double gsl_nan (
void);
1019double gsl_posinf (
void);
1020double gsl_neginf (
void);
1021double gsl_fdiv (
const double x,
const double y);
1023double gsl_coerce_double (
const double x);
1024float gsl_coerce_float (
const float x);
1025long double gsl_coerce_long_double (
const long double x);
1027double gsl_ldexp(
const double x,
const int e);
1028double gsl_frexp(
const double x,
int * e);
1030int gsl_fcmp (
const double x1,
const double x2,
const double epsilon);
1038gsl_coerce_double (
const double x)
1046gsl_coerce_float (
const float x)
1056gsl_coerce_long_double (
const long double x)
1058 volatile long double y;
1090#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
1091#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
1093#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
1094#define MARLEY_BUILTIN_GSL_CONFIG_H
1096#define HAVE_INLINE 1
1097#define HAVE_DECL_ISFINITE 1
1098#define HAVE_DECL_ISNAN 1
1099#define HAVE_DECL_ISINF 1
1100#define GSL_COERCE_DBL(x) (x)
1102#define GSL_DISABLE_DEPRECATED 0
1103#define PACKAGE_VERSION "2.8"
1104#define VERSION "2.8"
1114#define COMPILE_INLINE_STATIC
1122#ifndef __GSL_BUILD_H__
1123#define __GSL_BUILD_H__
1125#ifdef COMPILE_INLINE_STATIC
1126#ifndef HIDE_INLINE_STATIC
1128#undef __GSL_INLINE_H__
1129#define __GSL_INLINE_H__
1142#undef GSL_RANGE_CHECK
1143#define GSL_RANGE_CHECK 1
1147#undef GSL_RANGE_COND
1148#define GSL_RANGE_COND(x) (gsl_check_range && (x))
1152#error must be called with COMPILE_INLINE_STATIC
1178#ifndef __GSL_MINMAX_H__
1179#define __GSL_MINMAX_H__
1200#ifndef __GSL_INLINE_H__
1201#define __GSL_INLINE_H__
1230# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
1231# define INLINE_DECL inline
1232# define INLINE_FUN inline
1235# define INLINE_FUN extern inline
1245#define GSL_RANGE_COND(x) (x)
1256#define GSL_MAX(a,b) ((a) > (b) ? (a) : (b))
1257#define GSL_MIN(a,b) ((a) < (b) ? (a) : (b))
1260double gsl_max (
double a,
double b);
1261double gsl_min (
double a,
double b);
1266INLINE_FUN
int GSL_MAX_INT (
int a,
int b);
1267INLINE_FUN
int GSL_MIN_INT (
int a,
int b);
1268INLINE_FUN
double GSL_MAX_DBL (
double a,
double b);
1269INLINE_FUN
double GSL_MIN_DBL (
double a,
double b);
1270INLINE_FUN
long double GSL_MAX_LDBL (
long double a,
long double b);
1271INLINE_FUN
long double GSL_MIN_LDBL (
long double a,
long double b);
1274GSL_MAX_INT (
int a,
int b)
1276 return GSL_MAX (a, b);
1280GSL_MIN_INT (
int a,
int b)
1282 return GSL_MIN (a, b);
1286GSL_MAX_DBL (
double a,
double b)
1288 return GSL_MAX (a, b);
1292GSL_MIN_DBL (
double a,
double b)
1294 return GSL_MIN (a, b);
1297INLINE_FUN
long double
1298GSL_MAX_LDBL (
long double a,
long double b)
1300 return GSL_MAX (a, b);
1303INLINE_FUN
long double
1304GSL_MIN_LDBL (
long double a,
long double b)
1306 return GSL_MIN (a, b);
1309#define GSL_MAX_INT(a,b) GSL_MAX(a,b)
1310#define GSL_MIN_INT(a,b) GSL_MIN(a,b)
1311#define GSL_MAX_DBL(a,b) GSL_MAX(a,b)
1312#define GSL_MIN_DBL(a,b) GSL_MIN(a,b)
1313#define GSL_MAX_LDBL(a,b) GSL_MAX(a,b)
1314#define GSL_MIN_LDBL(a,b) GSL_MIN(a,b)
1324double gsl_max (
double a,
double b)
1326 return GSL_MAX (a, b);
1329double gsl_min (
double a,
double b)
1331 return GSL_MIN (a, b);
1357#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
1358#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
1360#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
1361#define MARLEY_BUILTIN_GSL_CONFIG_H
1363#define HAVE_INLINE 1
1364#define HAVE_DECL_ISFINITE 1
1365#define HAVE_DECL_ISNAN 1
1366#define HAVE_DECL_ISINF 1
1367#define GSL_COERCE_DBL(x) (x)
1369#define GSL_DISABLE_DEPRECATED 0
1370#define PACKAGE_VERSION "2.8"
1371#define VERSION "2.8"
1381#ifndef __GSL_MACHINE_H__
1382#define __GSL_MACHINE_H__
1396#define GSL_DBL_EPSILON 2.2204460492503131e-16
1397#define GSL_SQRT_DBL_EPSILON 1.4901161193847656e-08
1398#define GSL_ROOT3_DBL_EPSILON 6.0554544523933429e-06
1399#define GSL_ROOT4_DBL_EPSILON 1.2207031250000000e-04
1400#define GSL_ROOT5_DBL_EPSILON 7.4009597974140505e-04
1401#define GSL_ROOT6_DBL_EPSILON 2.4607833005759251e-03
1402#define GSL_LOG_DBL_EPSILON (-3.6043653389117154e+01)
1404#define GSL_DBL_MIN 2.2250738585072014e-308
1405#define GSL_SQRT_DBL_MIN 1.4916681462400413e-154
1406#define GSL_ROOT3_DBL_MIN 2.8126442852362996e-103
1407#define GSL_ROOT4_DBL_MIN 1.2213386697554620e-77
1408#define GSL_ROOT5_DBL_MIN 2.9476022969691763e-62
1409#define GSL_ROOT6_DBL_MIN 5.3034368905798218e-52
1410#define GSL_LOG_DBL_MIN (-7.0839641853226408e+02)
1412#define GSL_DBL_MAX 1.7976931348623157e+308
1413#define GSL_SQRT_DBL_MAX 1.3407807929942596e+154
1414#define GSL_ROOT3_DBL_MAX 5.6438030941222897e+102
1415#define GSL_ROOT4_DBL_MAX 1.1579208923731620e+77
1416#define GSL_ROOT5_DBL_MAX 4.4765466227572707e+61
1417#define GSL_ROOT6_DBL_MAX 2.3756689782295612e+51
1418#define GSL_LOG_DBL_MAX 7.0978271289338397e+02
1420#define GSL_FLT_EPSILON 1.1920928955078125e-07
1421#define GSL_SQRT_FLT_EPSILON 3.4526698300124393e-04
1422#define GSL_ROOT3_FLT_EPSILON 4.9215666011518501e-03
1423#define GSL_ROOT4_FLT_EPSILON 1.8581361171917516e-02
1424#define GSL_ROOT5_FLT_EPSILON 4.1234622211652937e-02
1425#define GSL_ROOT6_FLT_EPSILON 7.0153878019335827e-02
1426#define GSL_LOG_FLT_EPSILON (-1.5942385152878742e+01)
1428#define GSL_FLT_MIN 1.1754943508222875e-38
1429#define GSL_SQRT_FLT_MIN 1.0842021724855044e-19
1430#define GSL_ROOT3_FLT_MIN 2.2737367544323241e-13
1431#define GSL_ROOT4_FLT_MIN 3.2927225399135965e-10
1432#define GSL_ROOT5_FLT_MIN 2.5944428542140822e-08
1433#define GSL_ROOT6_FLT_MIN 4.7683715820312542e-07
1434#define GSL_LOG_FLT_MIN (-8.7336544750553102e+01)
1436#define GSL_FLT_MAX 3.4028234663852886e+38
1437#define GSL_SQRT_FLT_MAX 1.8446743523953730e+19
1438#define GSL_ROOT3_FLT_MAX 6.9814635196223242e+12
1439#define GSL_ROOT4_FLT_MAX 4.2949672319999986e+09
1440#define GSL_ROOT5_FLT_MAX 5.0859007855960041e+07
1441#define GSL_ROOT6_FLT_MAX 2.6422459233807749e+06
1442#define GSL_LOG_FLT_MAX 8.8722839052068352e+01
1444#define GSL_SFLT_EPSILON 4.8828125000000000e-04
1445#define GSL_SQRT_SFLT_EPSILON 2.2097086912079612e-02
1446#define GSL_ROOT3_SFLT_EPSILON 7.8745065618429588e-02
1447#define GSL_ROOT4_SFLT_EPSILON 1.4865088937534013e-01
1448#define GSL_ROOT5_SFLT_EPSILON 2.1763764082403100e-01
1449#define GSL_ROOT6_SFLT_EPSILON 2.8061551207734325e-01
1450#define GSL_LOG_SFLT_EPSILON (-7.6246189861593985e+00)
1456#define GSL_MACH_EPS GSL_DBL_EPSILON
1475#define GSL_SQRT_MACH_EPS 3.2e-08
1476#define GSL_ROOT3_MACH_EPS 1.0e-05
1477#define GSL_ROOT4_MACH_EPS 0.000178
1478#define GSL_ROOT5_MACH_EPS 0.00100
1479#define GSL_ROOT6_MACH_EPS 0.00316
1480#define GSL_LOG_MACH_EPS (-34.54)
1488#define COMPILE_INLINE_STATIC
1496#ifndef __GSL_BUILD_H__
1497#define __GSL_BUILD_H__
1499#ifdef COMPILE_INLINE_STATIC
1500#ifndef HIDE_INLINE_STATIC
1502#undef __GSL_INLINE_H__
1503#define __GSL_INLINE_H__
1516#undef GSL_RANGE_CHECK
1517#define GSL_RANGE_CHECK 1
1521#undef GSL_RANGE_COND
1522#define GSL_RANGE_COND(x) (gsl_check_range && (x))
1526#error must be called with COMPILE_INLINE_STATIC
1554#ifndef __GSL_PRECISION_H__
1555#define __GSL_PRECISION_H__
1576#ifndef __GSL_TYPES_H__
1577#define __GSL_TYPES_H__
1584# define GSL_VAR extern __declspec(dllexport)
1586# define GSL_VAR extern __declspec(dllimport)
1589# define GSL_VAR extern
1592# define GSL_VAR extern
1607typedef unsigned int gsl_prec_t;
1614#define _GSL_PREC_T_NUM 3
1621GSL_VAR
const double gsl_prec_eps[];
1622GSL_VAR
const double gsl_prec_sqrt_eps[];
1623GSL_VAR
const double gsl_prec_root3_eps[];
1624GSL_VAR
const double gsl_prec_root4_eps[];
1625GSL_VAR
const double gsl_prec_root5_eps[];
1626GSL_VAR
const double gsl_prec_root6_eps[];
1656#ifndef __GSL_MODE_H__
1657#define __GSL_MODE_H__
1678#ifndef __GSL_INLINE_H__
1679#define __GSL_INLINE_H__
1708# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
1709# define INLINE_DECL inline
1710# define INLINE_FUN inline
1713# define INLINE_FUN extern inline
1723#define GSL_RANGE_COND(x) (x)
1743typedef unsigned int gsl_mode_t;
1759#define GSL_PREC_DOUBLE 0
1760#define GSL_PREC_SINGLE 1
1761#define GSL_PREC_APPROX 2
1764INLINE_FUN
unsigned int GSL_MODE_PREC(gsl_mode_t mt);
1766INLINE_FUN
unsigned int
1767GSL_MODE_PREC(gsl_mode_t mt)
1768{
return (mt & (
unsigned int)7); }
1770#define GSL_MODE_PREC(mt) ((mt) & (unsigned int)7)
1776#define GSL_MODE_DEFAULT 0
1784const double gsl_prec_eps[_GSL_PREC_T_NUM] = {
1790const double gsl_prec_sqrt_eps[_GSL_PREC_T_NUM] = {
1791 GSL_SQRT_DBL_EPSILON,
1792 GSL_SQRT_FLT_EPSILON,
1793 GSL_SQRT_SFLT_EPSILON
1796const double gsl_prec_root3_eps[_GSL_PREC_T_NUM] = {
1797 GSL_ROOT3_DBL_EPSILON,
1798 GSL_ROOT3_FLT_EPSILON,
1799 GSL_ROOT3_SFLT_EPSILON
1802const double gsl_prec_root4_eps[_GSL_PREC_T_NUM] = {
1803 GSL_ROOT4_DBL_EPSILON,
1804 GSL_ROOT4_FLT_EPSILON,
1805 GSL_ROOT4_SFLT_EPSILON
1808const double gsl_prec_root5_eps[_GSL_PREC_T_NUM] = {
1809 GSL_ROOT5_DBL_EPSILON,
1810 GSL_ROOT5_FLT_EPSILON,
1811 GSL_ROOT5_SFLT_EPSILON
1814const double gsl_prec_root6_eps[_GSL_PREC_T_NUM] = {
1815 GSL_ROOT6_DBL_EPSILON,
1816 GSL_ROOT6_FLT_EPSILON,
1817 GSL_ROOT6_SFLT_EPSILON
1849#define COMPILE_INLINE_STATIC
1857#ifndef __GSL_BUILD_H__
1858#define __GSL_BUILD_H__
1860#ifdef COMPILE_INLINE_STATIC
1861#ifndef HIDE_INLINE_STATIC
1863#undef __GSL_INLINE_H__
1864#define __GSL_INLINE_H__
1877#undef GSL_RANGE_CHECK
1878#define GSL_RANGE_CHECK 1
1882#undef GSL_RANGE_COND
1883#define GSL_RANGE_COND(x) (gsl_check_range && (x))
1887#error must be called with COMPILE_INLINE_STATIC
1913#ifndef __GSL_COMPLEX_MATH_H__
1914#define __GSL_COMPLEX_MATH_H__
1935#ifndef __GSL_INLINE_H__
1936#define __GSL_INLINE_H__
1965# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
1966# define INLINE_DECL inline
1967# define INLINE_FUN inline
1970# define INLINE_FUN extern inline
1980#define GSL_RANGE_COND(x) (x)
2006#ifndef __GSL_COMPLEX_H__
2007#define __GSL_COMPLEX_H__
2013typedef double * gsl_complex_packed ;
2014typedef float * gsl_complex_packed_float ;
2015typedef long double * gsl_complex_packed_long_double ;
2017typedef const double * gsl_const_complex_packed ;
2018typedef const float * gsl_const_complex_packed_float ;
2019typedef const long double * gsl_const_complex_packed_long_double ;
2023typedef double * gsl_complex_packed_array ;
2024typedef float * gsl_complex_packed_array_float ;
2025typedef long double * gsl_complex_packed_array_long_double ;
2027typedef const double * gsl_const_complex_packed_array ;
2028typedef const float * gsl_const_complex_packed_array_float ;
2029typedef const long double * gsl_const_complex_packed_array_long_double ;
2037typedef double * gsl_complex_packed_ptr ;
2038typedef float * gsl_complex_packed_float_ptr ;
2039typedef long double * gsl_complex_packed_long_double_ptr ;
2041typedef const double * gsl_const_complex_packed_ptr ;
2042typedef const float * gsl_const_complex_packed_float_ptr ;
2043typedef const long double * gsl_const_complex_packed_long_double_ptr ;
2052#if defined(__GNUC__) && (__GNUC__ < 7)
2053# define GSL_COMPLEX_LEGACY 1
2056#if !defined(GSL_COMPLEX_LEGACY) && \
2057 defined(_Complex_I) && \
2058 defined(complex) && \
2060 defined(__STDC__) && (__STDC__ == 1) && \
2061 defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
2063# define GSL_COMPLEX_DEFINE(R, C) typedef R _Complex C ;
2065# define GSL_COMPLEX_P(zp) (&(zp))
2066# define GSL_COMPLEX_EQ(z1,z2) ((z1) == (z2))
2067# define GSL_SET_COMPLEX(zp,x,y) (*(zp) = (x) + I * (y))
2069# define GSL_REAL(z) (_Generic((z), \
2070 complex float : ((float *) &(z)), \
2071 complex double : ((double *) &(z)), \
2072 complex long double : ((long double *) &(z)))[0])
2074# define GSL_IMAG(z) (_Generic((z), \
2075 complex float : ((float *) &(z)), \
2076 complex double : ((double *) &(z)), \
2077 complex long double : ((long double *) &(z)))[1])
2079# define GSL_COMPLEX_P_REAL(zp) GSL_REAL(*(zp))
2080# define GSL_COMPLEX_P_IMAG(zp) GSL_IMAG(*(zp))
2081# define GSL_SET_REAL(zp,x) do { GSL_REAL(*(zp)) = (x); } while(0)
2082# define GSL_SET_IMAG(zp,x) do { GSL_IMAG(*(zp)) = (x); } while(0)
2096# define GSL_COMPLEX_DEFINE(R, C) typedef struct { R dat[2]; } C ;
2098# define GSL_REAL(z) ((z).dat[0])
2099# define GSL_IMAG(z) ((z).dat[1])
2100# define GSL_COMPLEX_P(zp) ((zp)->dat)
2101# define GSL_COMPLEX_P_REAL(zp) ((zp)->dat[0])
2102# define GSL_COMPLEX_P_IMAG(zp) ((zp)->dat[1])
2103# define GSL_COMPLEX_EQ(z1,z2) (((z1).dat[0] == (z2).dat[0]) && ((z1).dat[1] == (z2).dat[1]))
2105# define GSL_SET_COMPLEX(zp,x,y) do {(zp)->dat[0]=(x); (zp)->dat[1]=(y);} while(0)
2106# define GSL_SET_REAL(zp,x) do {(zp)->dat[0]=(x);} while(0)
2107# define GSL_SET_IMAG(zp,y) do {(zp)->dat[1]=(y);} while(0)
2111GSL_COMPLEX_DEFINE(
double, gsl_complex)
2112GSL_COMPLEX_DEFINE(
long double, gsl_complex_long_double)
2113GSL_COMPLEX_DEFINE(
float, gsl_complex_float)
2115#define GSL_SET_COMPLEX_PACKED(zp,n,x,y) do {*((zp)+2*(n))=(x); *((zp)+(2*(n)+1))=(y);} while(0)
2127gsl_complex gsl_complex_polar (
double r,
double theta);
2129INLINE_DECL gsl_complex gsl_complex_rect (
double x,
double y);
2132INLINE_FUN gsl_complex
2133gsl_complex_rect (
double x,
double y)
2136 GSL_SET_COMPLEX (&z, x, y);
2141#define GSL_COMPLEX_ONE (gsl_complex_rect(1.0,0.0))
2142#define GSL_COMPLEX_ZERO (gsl_complex_rect(0.0,0.0))
2143#define GSL_COMPLEX_NEGONE (gsl_complex_rect(-1.0,0.0))
2147double gsl_complex_arg (gsl_complex z);
2148double gsl_complex_abs (gsl_complex z);
2149double gsl_complex_abs2 (gsl_complex z);
2150double gsl_complex_logabs (gsl_complex z);
2154gsl_complex gsl_complex_add (gsl_complex a, gsl_complex b);
2155gsl_complex gsl_complex_sub (gsl_complex a, gsl_complex b);
2156gsl_complex gsl_complex_mul (gsl_complex a, gsl_complex b);
2157gsl_complex gsl_complex_div (gsl_complex a, gsl_complex b);
2159gsl_complex gsl_complex_add_real (gsl_complex a,
double x);
2160gsl_complex gsl_complex_sub_real (gsl_complex a,
double x);
2161gsl_complex gsl_complex_mul_real (gsl_complex a,
double x);
2162gsl_complex gsl_complex_div_real (gsl_complex a,
double x);
2164gsl_complex gsl_complex_add_imag (gsl_complex a,
double y);
2165gsl_complex gsl_complex_sub_imag (gsl_complex a,
double y);
2166gsl_complex gsl_complex_mul_imag (gsl_complex a,
double y);
2167gsl_complex gsl_complex_div_imag (gsl_complex a,
double y);
2169gsl_complex gsl_complex_conjugate (gsl_complex z);
2170gsl_complex gsl_complex_inverse (gsl_complex a);
2171gsl_complex gsl_complex_negative (gsl_complex a);
2175gsl_complex gsl_complex_sqrt (gsl_complex z);
2176gsl_complex gsl_complex_sqrt_real (
double x);
2178gsl_complex gsl_complex_pow (gsl_complex a, gsl_complex b);
2179gsl_complex gsl_complex_pow_real (gsl_complex a,
double b);
2181gsl_complex gsl_complex_exp (gsl_complex a);
2182gsl_complex gsl_complex_log (gsl_complex a);
2183gsl_complex gsl_complex_log10 (gsl_complex a);
2184gsl_complex gsl_complex_log_b (gsl_complex a, gsl_complex b);
2188gsl_complex gsl_complex_sin (gsl_complex a);
2189gsl_complex gsl_complex_cos (gsl_complex a);
2190gsl_complex gsl_complex_sec (gsl_complex a);
2191gsl_complex gsl_complex_csc (gsl_complex a);
2192gsl_complex gsl_complex_tan (gsl_complex a);
2193gsl_complex gsl_complex_cot (gsl_complex a);
2197gsl_complex gsl_complex_arcsin (gsl_complex a);
2198gsl_complex gsl_complex_arcsin_real (
double a);
2199gsl_complex gsl_complex_arccos (gsl_complex a);
2200gsl_complex gsl_complex_arccos_real (
double a);
2201gsl_complex gsl_complex_arcsec (gsl_complex a);
2202gsl_complex gsl_complex_arcsec_real (
double a);
2203gsl_complex gsl_complex_arccsc (gsl_complex a);
2204gsl_complex gsl_complex_arccsc_real (
double a);
2205gsl_complex gsl_complex_arctan (gsl_complex a);
2206gsl_complex gsl_complex_arccot (gsl_complex a);
2210gsl_complex gsl_complex_sinh (gsl_complex a);
2211gsl_complex gsl_complex_cosh (gsl_complex a);
2212gsl_complex gsl_complex_sech (gsl_complex a);
2213gsl_complex gsl_complex_csch (gsl_complex a);
2214gsl_complex gsl_complex_tanh (gsl_complex a);
2215gsl_complex gsl_complex_coth (gsl_complex a);
2219gsl_complex gsl_complex_arcsinh (gsl_complex a);
2220gsl_complex gsl_complex_arccosh (gsl_complex a);
2221gsl_complex gsl_complex_arccosh_real (
double a);
2222gsl_complex gsl_complex_arcsech (gsl_complex a);
2223gsl_complex gsl_complex_arccsch (gsl_complex a);
2224gsl_complex gsl_complex_arctanh (gsl_complex a);
2225gsl_complex gsl_complex_arctanh_real (
double a);
2226gsl_complex gsl_complex_arccoth (gsl_complex a);
2278#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
2279#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
2281#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
2282#define MARLEY_BUILTIN_GSL_CONFIG_H
2284#define HAVE_INLINE 1
2285#define HAVE_DECL_ISFINITE 1
2286#define HAVE_DECL_ISNAN 1
2287#define HAVE_DECL_ISINF 1
2288#define GSL_COERCE_DBL(x) (x)
2290#define GSL_DISABLE_DEPRECATED 0
2291#define PACKAGE_VERSION "2.8"
2292#define VERSION "2.8"
2321#ifndef __GSL_MATH_H__
2322#define __GSL_MATH_H__
2344#ifndef __GSL_SYS_H__
2345#define __GSL_SYS_H__
2349double gsl_log1p (
const double x);
2350double gsl_expm1 (
const double x);
2351double gsl_hypot (
const double x,
const double y);
2352double gsl_hypot3 (
const double x,
const double y,
const double z);
2353double gsl_acosh (
const double x);
2354double gsl_asinh (
const double x);
2355double gsl_atanh (
const double x);
2357int gsl_isnan (
const double x);
2358int gsl_isinf (
const double x);
2359int gsl_finite (
const double x);
2361double gsl_nan (
void);
2362double gsl_posinf (
void);
2363double gsl_neginf (
void);
2364double gsl_fdiv (
const double x,
const double y);
2366double gsl_coerce_double (
const double x);
2367float gsl_coerce_float (
const float x);
2368long double gsl_coerce_long_double (
const long double x);
2370double gsl_ldexp(
const double x,
const int e);
2371double gsl_frexp(
const double x,
int * e);
2373int gsl_fcmp (
const double x1,
const double x2,
const double epsilon);
2400#ifndef __GSL_INLINE_H__
2401#define __GSL_INLINE_H__
2430# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
2431# define INLINE_DECL inline
2432# define INLINE_FUN inline
2435# define INLINE_FUN extern inline
2445#define GSL_RANGE_COND(x) (x)
2452#ifndef __GSL_MACHINE_H__
2453#define __GSL_MACHINE_H__
2467#define GSL_DBL_EPSILON 2.2204460492503131e-16
2468#define GSL_SQRT_DBL_EPSILON 1.4901161193847656e-08
2469#define GSL_ROOT3_DBL_EPSILON 6.0554544523933429e-06
2470#define GSL_ROOT4_DBL_EPSILON 1.2207031250000000e-04
2471#define GSL_ROOT5_DBL_EPSILON 7.4009597974140505e-04
2472#define GSL_ROOT6_DBL_EPSILON 2.4607833005759251e-03
2473#define GSL_LOG_DBL_EPSILON (-3.6043653389117154e+01)
2475#define GSL_DBL_MIN 2.2250738585072014e-308
2476#define GSL_SQRT_DBL_MIN 1.4916681462400413e-154
2477#define GSL_ROOT3_DBL_MIN 2.8126442852362996e-103
2478#define GSL_ROOT4_DBL_MIN 1.2213386697554620e-77
2479#define GSL_ROOT5_DBL_MIN 2.9476022969691763e-62
2480#define GSL_ROOT6_DBL_MIN 5.3034368905798218e-52
2481#define GSL_LOG_DBL_MIN (-7.0839641853226408e+02)
2483#define GSL_DBL_MAX 1.7976931348623157e+308
2484#define GSL_SQRT_DBL_MAX 1.3407807929942596e+154
2485#define GSL_ROOT3_DBL_MAX 5.6438030941222897e+102
2486#define GSL_ROOT4_DBL_MAX 1.1579208923731620e+77
2487#define GSL_ROOT5_DBL_MAX 4.4765466227572707e+61
2488#define GSL_ROOT6_DBL_MAX 2.3756689782295612e+51
2489#define GSL_LOG_DBL_MAX 7.0978271289338397e+02
2491#define GSL_FLT_EPSILON 1.1920928955078125e-07
2492#define GSL_SQRT_FLT_EPSILON 3.4526698300124393e-04
2493#define GSL_ROOT3_FLT_EPSILON 4.9215666011518501e-03
2494#define GSL_ROOT4_FLT_EPSILON 1.8581361171917516e-02
2495#define GSL_ROOT5_FLT_EPSILON 4.1234622211652937e-02
2496#define GSL_ROOT6_FLT_EPSILON 7.0153878019335827e-02
2497#define GSL_LOG_FLT_EPSILON (-1.5942385152878742e+01)
2499#define GSL_FLT_MIN 1.1754943508222875e-38
2500#define GSL_SQRT_FLT_MIN 1.0842021724855044e-19
2501#define GSL_ROOT3_FLT_MIN 2.2737367544323241e-13
2502#define GSL_ROOT4_FLT_MIN 3.2927225399135965e-10
2503#define GSL_ROOT5_FLT_MIN 2.5944428542140822e-08
2504#define GSL_ROOT6_FLT_MIN 4.7683715820312542e-07
2505#define GSL_LOG_FLT_MIN (-8.7336544750553102e+01)
2507#define GSL_FLT_MAX 3.4028234663852886e+38
2508#define GSL_SQRT_FLT_MAX 1.8446743523953730e+19
2509#define GSL_ROOT3_FLT_MAX 6.9814635196223242e+12
2510#define GSL_ROOT4_FLT_MAX 4.2949672319999986e+09
2511#define GSL_ROOT5_FLT_MAX 5.0859007855960041e+07
2512#define GSL_ROOT6_FLT_MAX 2.6422459233807749e+06
2513#define GSL_LOG_FLT_MAX 8.8722839052068352e+01
2515#define GSL_SFLT_EPSILON 4.8828125000000000e-04
2516#define GSL_SQRT_SFLT_EPSILON 2.2097086912079612e-02
2517#define GSL_ROOT3_SFLT_EPSILON 7.8745065618429588e-02
2518#define GSL_ROOT4_SFLT_EPSILON 1.4865088937534013e-01
2519#define GSL_ROOT5_SFLT_EPSILON 2.1763764082403100e-01
2520#define GSL_ROOT6_SFLT_EPSILON 2.8061551207734325e-01
2521#define GSL_LOG_SFLT_EPSILON (-7.6246189861593985e+00)
2527#define GSL_MACH_EPS GSL_DBL_EPSILON
2546#define GSL_SQRT_MACH_EPS 3.2e-08
2547#define GSL_ROOT3_MACH_EPS 1.0e-05
2548#define GSL_ROOT4_MACH_EPS 0.000178
2549#define GSL_ROOT5_MACH_EPS 0.00100
2550#define GSL_ROOT6_MACH_EPS 0.00316
2551#define GSL_LOG_MACH_EPS (-34.54)
2579#ifndef __GSL_PRECISION_H__
2580#define __GSL_PRECISION_H__
2601#ifndef __GSL_TYPES_H__
2602#define __GSL_TYPES_H__
2609# define GSL_VAR extern __declspec(dllexport)
2611# define GSL_VAR extern __declspec(dllimport)
2614# define GSL_VAR extern
2617# define GSL_VAR extern
2632typedef unsigned int gsl_prec_t;
2639#define _GSL_PREC_T_NUM 3
2646GSL_VAR
const double gsl_prec_eps[];
2647GSL_VAR
const double gsl_prec_sqrt_eps[];
2648GSL_VAR
const double gsl_prec_root3_eps[];
2649GSL_VAR
const double gsl_prec_root4_eps[];
2650GSL_VAR
const double gsl_prec_root5_eps[];
2651GSL_VAR
const double gsl_prec_root6_eps[];
2679#ifndef __GSL_NAN_H__
2680#define __GSL_NAN_H__
2683# define GSL_POSINF INFINITY
2684# define GSL_NEGINF (-INFINITY)
2685#elif defined(HUGE_VAL)
2686# define GSL_POSINF HUGE_VAL
2687# define GSL_NEGINF (-HUGE_VAL)
2689# define GSL_POSINF (gsl_posinf())
2690# define GSL_NEGINF (gsl_neginf())
2695#elif defined(INFINITY)
2696# define GSL_NAN (INFINITY/INFINITY)
2698# define GSL_NAN (gsl_nan())
2701#define GSL_POSZERO (+0.0)
2702#define GSL_NEGZERO (-0.0)
2727#ifndef __GSL_POW_INT_H__
2728#define __GSL_POW_INT_H__
2749#ifndef __GSL_INLINE_H__
2750#define __GSL_INLINE_H__
2779# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
2780# define INLINE_DECL inline
2781# define INLINE_FUN inline
2784# define INLINE_FUN extern inline
2794#define GSL_RANGE_COND(x) (x)
2802INLINE_DECL
double gsl_pow_2(
const double x);
2803INLINE_DECL
double gsl_pow_3(
const double x);
2804INLINE_DECL
double gsl_pow_4(
const double x);
2805INLINE_DECL
double gsl_pow_5(
const double x);
2806INLINE_DECL
double gsl_pow_6(
const double x);
2807INLINE_DECL
double gsl_pow_7(
const double x);
2808INLINE_DECL
double gsl_pow_8(
const double x);
2809INLINE_DECL
double gsl_pow_9(
const double x);
2812INLINE_FUN
double gsl_pow_2(
const double x) {
return x*x; }
2813INLINE_FUN
double gsl_pow_3(
const double x) {
return x*x*x; }
2814INLINE_FUN
double gsl_pow_4(
const double x) {
double x2 = x*x;
return x2*x2; }
2815INLINE_FUN
double gsl_pow_5(
const double x) {
double x2 = x*x;
return x2*x2*x; }
2816INLINE_FUN
double gsl_pow_6(
const double x) {
double x2 = x*x;
return x2*x2*x2; }
2817INLINE_FUN
double gsl_pow_7(
const double x) {
double x3 = x*x*x;
return x3*x3*x; }
2818INLINE_FUN
double gsl_pow_8(
const double x) {
double x2 = x*x;
double x4 = x2*x2;
return x4*x4; }
2819INLINE_FUN
double gsl_pow_9(
const double x) {
double x3 = x*x*x;
return x3*x3*x3; }
2822double gsl_pow_int(
double x,
int n);
2823double gsl_pow_uint(
double x,
unsigned int n);
2850#ifndef __GSL_MINMAX_H__
2851#define __GSL_MINMAX_H__
2872#ifndef __GSL_INLINE_H__
2873#define __GSL_INLINE_H__
2902# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
2903# define INLINE_DECL inline
2904# define INLINE_FUN inline
2907# define INLINE_FUN extern inline
2917#define GSL_RANGE_COND(x) (x)
2928#define GSL_MAX(a,b) ((a) > (b) ? (a) : (b))
2929#define GSL_MIN(a,b) ((a) < (b) ? (a) : (b))
2932double gsl_max (
double a,
double b);
2933double gsl_min (
double a,
double b);
2938INLINE_FUN
int GSL_MAX_INT (
int a,
int b);
2939INLINE_FUN
int GSL_MIN_INT (
int a,
int b);
2940INLINE_FUN
double GSL_MAX_DBL (
double a,
double b);
2941INLINE_FUN
double GSL_MIN_DBL (
double a,
double b);
2942INLINE_FUN
long double GSL_MAX_LDBL (
long double a,
long double b);
2943INLINE_FUN
long double GSL_MIN_LDBL (
long double a,
long double b);
2946GSL_MAX_INT (
int a,
int b)
2948 return GSL_MAX (a, b);
2952GSL_MIN_INT (
int a,
int b)
2954 return GSL_MIN (a, b);
2958GSL_MAX_DBL (
double a,
double b)
2960 return GSL_MAX (a, b);
2964GSL_MIN_DBL (
double a,
double b)
2966 return GSL_MIN (a, b);
2969INLINE_FUN
long double
2970GSL_MAX_LDBL (
long double a,
long double b)
2972 return GSL_MAX (a, b);
2975INLINE_FUN
long double
2976GSL_MIN_LDBL (
long double a,
long double b)
2978 return GSL_MIN (a, b);
2981#define GSL_MAX_INT(a,b) GSL_MAX(a,b)
2982#define GSL_MIN_INT(a,b) GSL_MIN(a,b)
2983#define GSL_MAX_DBL(a,b) GSL_MAX(a,b)
2984#define GSL_MIN_DBL(a,b) GSL_MIN(a,b)
2985#define GSL_MAX_LDBL(a,b) GSL_MAX(a,b)
2986#define GSL_MIN_LDBL(a,b) GSL_MIN(a,b)
2995#define M_E 2.71828182845904523536028747135
2999#define M_LOG2E 1.44269504088896340735992468100
3003#define M_LOG10E 0.43429448190325182765112891892
3007#define M_SQRT2 1.41421356237309504880168872421
3011#define M_SQRT1_2 0.70710678118654752440084436210
3016#define M_SQRT3 1.73205080756887729352744634151
3020#define M_PI 3.14159265358979323846264338328
3024#define M_PI_2 1.57079632679489661923132169164
3028#define M_PI_4 0.78539816339744830961566084582
3032#define M_SQRTPI 1.77245385090551602729816748334
3036#define M_2_SQRTPI 1.12837916709551257389615890312
3040#define M_1_PI 0.31830988618379067153776752675
3044#define M_2_PI 0.63661977236758134307553505349
3048#define M_LN10 2.30258509299404568401799145468
3052#define M_LN2 0.69314718055994530941723212146
3056#define M_LNPI 1.14472988584940017414342735135
3060#define M_EULER 0.57721566490153286060651209008
3067#define GSL_IS_ODD(n) ((n) & 1)
3068#define GSL_IS_EVEN(n) (!(GSL_IS_ODD(n)))
3069#define GSL_SIGN(x) ((x) >= 0.0 ? 1 : -1)
3072#define GSL_IS_REAL(x) (gsl_finite(x))
3078 double (* function) (
double x,
void * params);
3084#define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params)
3090 double (* f) (
double x,
void * params);
3091 double (* df) (
double x,
void * params);
3092 void (* fdf) (
double x,
void * params,
double * f,
double * df);
3098#define GSL_FN_FDF_EVAL_F(FDF,x) (*((FDF)->f))(x,(FDF)->params)
3099#define GSL_FN_FDF_EVAL_DF(FDF,x) (*((FDF)->df))(x,(FDF)->params)
3100#define GSL_FN_FDF_EVAL_F_DF(FDF,x,y,dy) (*((FDF)->fdf))(x,(FDF)->params,(y),(dy))
3107 int (* function) (
double x,
double y[],
void * params);
3113#define GSL_FN_VEC_EVAL(F,x,y) (*((F)->function))(x,y,(F)->params)
3141#ifndef __GSL_COMPLEX_H__
3142#define __GSL_COMPLEX_H__
3148typedef double * gsl_complex_packed ;
3149typedef float * gsl_complex_packed_float ;
3150typedef long double * gsl_complex_packed_long_double ;
3152typedef const double * gsl_const_complex_packed ;
3153typedef const float * gsl_const_complex_packed_float ;
3154typedef const long double * gsl_const_complex_packed_long_double ;
3158typedef double * gsl_complex_packed_array ;
3159typedef float * gsl_complex_packed_array_float ;
3160typedef long double * gsl_complex_packed_array_long_double ;
3162typedef const double * gsl_const_complex_packed_array ;
3163typedef const float * gsl_const_complex_packed_array_float ;
3164typedef const long double * gsl_const_complex_packed_array_long_double ;
3172typedef double * gsl_complex_packed_ptr ;
3173typedef float * gsl_complex_packed_float_ptr ;
3174typedef long double * gsl_complex_packed_long_double_ptr ;
3176typedef const double * gsl_const_complex_packed_ptr ;
3177typedef const float * gsl_const_complex_packed_float_ptr ;
3178typedef const long double * gsl_const_complex_packed_long_double_ptr ;
3187#if defined(__GNUC__) && (__GNUC__ < 7)
3188# define GSL_COMPLEX_LEGACY 1
3191#if !defined(GSL_COMPLEX_LEGACY) && \
3192 defined(_Complex_I) && \
3193 defined(complex) && \
3195 defined(__STDC__) && (__STDC__ == 1) && \
3196 defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
3198# define GSL_COMPLEX_DEFINE(R, C) typedef R _Complex C ;
3200# define GSL_COMPLEX_P(zp) (&(zp))
3201# define GSL_COMPLEX_EQ(z1,z2) ((z1) == (z2))
3202# define GSL_SET_COMPLEX(zp,x,y) (*(zp) = (x) + I * (y))
3204# define GSL_REAL(z) (_Generic((z), \
3205 complex float : ((float *) &(z)), \
3206 complex double : ((double *) &(z)), \
3207 complex long double : ((long double *) &(z)))[0])
3209# define GSL_IMAG(z) (_Generic((z), \
3210 complex float : ((float *) &(z)), \
3211 complex double : ((double *) &(z)), \
3212 complex long double : ((long double *) &(z)))[1])
3214# define GSL_COMPLEX_P_REAL(zp) GSL_REAL(*(zp))
3215# define GSL_COMPLEX_P_IMAG(zp) GSL_IMAG(*(zp))
3216# define GSL_SET_REAL(zp,x) do { GSL_REAL(*(zp)) = (x); } while(0)
3217# define GSL_SET_IMAG(zp,x) do { GSL_IMAG(*(zp)) = (x); } while(0)
3231# define GSL_COMPLEX_DEFINE(R, C) typedef struct { R dat[2]; } C ;
3233# define GSL_REAL(z) ((z).dat[0])
3234# define GSL_IMAG(z) ((z).dat[1])
3235# define GSL_COMPLEX_P(zp) ((zp)->dat)
3236# define GSL_COMPLEX_P_REAL(zp) ((zp)->dat[0])
3237# define GSL_COMPLEX_P_IMAG(zp) ((zp)->dat[1])
3238# define GSL_COMPLEX_EQ(z1,z2) (((z1).dat[0] == (z2).dat[0]) && ((z1).dat[1] == (z2).dat[1]))
3240# define GSL_SET_COMPLEX(zp,x,y) do {(zp)->dat[0]=(x); (zp)->dat[1]=(y);} while(0)
3241# define GSL_SET_REAL(zp,x) do {(zp)->dat[0]=(x);} while(0)
3242# define GSL_SET_IMAG(zp,y) do {(zp)->dat[1]=(y);} while(0)
3246GSL_COMPLEX_DEFINE(
double, gsl_complex)
3247GSL_COMPLEX_DEFINE(
long double, gsl_complex_long_double)
3248GSL_COMPLEX_DEFINE(
float, gsl_complex_float)
3250#define GSL_SET_COMPLEX_PACKED(zp,n,x,y) do {*((zp)+2*(n))=(x); *((zp)+(2*(n)+1))=(y);} while(0)
3277#ifndef __GSL_COMPLEX_MATH_H__
3278#define __GSL_COMPLEX_MATH_H__
3299#ifndef __GSL_INLINE_H__
3300#define __GSL_INLINE_H__
3329# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
3330# define INLINE_DECL inline
3331# define INLINE_FUN inline
3334# define INLINE_FUN extern inline
3344#define GSL_RANGE_COND(x) (x)
3370#ifndef __GSL_COMPLEX_H__
3371#define __GSL_COMPLEX_H__
3377typedef double * gsl_complex_packed ;
3378typedef float * gsl_complex_packed_float ;
3379typedef long double * gsl_complex_packed_long_double ;
3381typedef const double * gsl_const_complex_packed ;
3382typedef const float * gsl_const_complex_packed_float ;
3383typedef const long double * gsl_const_complex_packed_long_double ;
3387typedef double * gsl_complex_packed_array ;
3388typedef float * gsl_complex_packed_array_float ;
3389typedef long double * gsl_complex_packed_array_long_double ;
3391typedef const double * gsl_const_complex_packed_array ;
3392typedef const float * gsl_const_complex_packed_array_float ;
3393typedef const long double * gsl_const_complex_packed_array_long_double ;
3401typedef double * gsl_complex_packed_ptr ;
3402typedef float * gsl_complex_packed_float_ptr ;
3403typedef long double * gsl_complex_packed_long_double_ptr ;
3405typedef const double * gsl_const_complex_packed_ptr ;
3406typedef const float * gsl_const_complex_packed_float_ptr ;
3407typedef const long double * gsl_const_complex_packed_long_double_ptr ;
3416#if defined(__GNUC__) && (__GNUC__ < 7)
3417# define GSL_COMPLEX_LEGACY 1
3420#if !defined(GSL_COMPLEX_LEGACY) && \
3421 defined(_Complex_I) && \
3422 defined(complex) && \
3424 defined(__STDC__) && (__STDC__ == 1) && \
3425 defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
3427# define GSL_COMPLEX_DEFINE(R, C) typedef R _Complex C ;
3429# define GSL_COMPLEX_P(zp) (&(zp))
3430# define GSL_COMPLEX_EQ(z1,z2) ((z1) == (z2))
3431# define GSL_SET_COMPLEX(zp,x,y) (*(zp) = (x) + I * (y))
3433# define GSL_REAL(z) (_Generic((z), \
3434 complex float : ((float *) &(z)), \
3435 complex double : ((double *) &(z)), \
3436 complex long double : ((long double *) &(z)))[0])
3438# define GSL_IMAG(z) (_Generic((z), \
3439 complex float : ((float *) &(z)), \
3440 complex double : ((double *) &(z)), \
3441 complex long double : ((long double *) &(z)))[1])
3443# define GSL_COMPLEX_P_REAL(zp) GSL_REAL(*(zp))
3444# define GSL_COMPLEX_P_IMAG(zp) GSL_IMAG(*(zp))
3445# define GSL_SET_REAL(zp,x) do { GSL_REAL(*(zp)) = (x); } while(0)
3446# define GSL_SET_IMAG(zp,x) do { GSL_IMAG(*(zp)) = (x); } while(0)
3460# define GSL_COMPLEX_DEFINE(R, C) typedef struct { R dat[2]; } C ;
3462# define GSL_REAL(z) ((z).dat[0])
3463# define GSL_IMAG(z) ((z).dat[1])
3464# define GSL_COMPLEX_P(zp) ((zp)->dat)
3465# define GSL_COMPLEX_P_REAL(zp) ((zp)->dat[0])
3466# define GSL_COMPLEX_P_IMAG(zp) ((zp)->dat[1])
3467# define GSL_COMPLEX_EQ(z1,z2) (((z1).dat[0] == (z2).dat[0]) && ((z1).dat[1] == (z2).dat[1]))
3469# define GSL_SET_COMPLEX(zp,x,y) do {(zp)->dat[0]=(x); (zp)->dat[1]=(y);} while(0)
3470# define GSL_SET_REAL(zp,x) do {(zp)->dat[0]=(x);} while(0)
3471# define GSL_SET_IMAG(zp,y) do {(zp)->dat[1]=(y);} while(0)
3475GSL_COMPLEX_DEFINE(
double, gsl_complex)
3476GSL_COMPLEX_DEFINE(
long double, gsl_complex_long_double)
3477GSL_COMPLEX_DEFINE(
float, gsl_complex_float)
3479#define GSL_SET_COMPLEX_PACKED(zp,n,x,y) do {*((zp)+2*(n))=(x); *((zp)+(2*(n)+1))=(y);} while(0)
3491gsl_complex gsl_complex_polar (
double r,
double theta);
3493INLINE_DECL gsl_complex gsl_complex_rect (
double x,
double y);
3496INLINE_FUN gsl_complex
3497gsl_complex_rect (
double x,
double y)
3500 GSL_SET_COMPLEX (&z, x, y);
3505#define GSL_COMPLEX_ONE (gsl_complex_rect(1.0,0.0))
3506#define GSL_COMPLEX_ZERO (gsl_complex_rect(0.0,0.0))
3507#define GSL_COMPLEX_NEGONE (gsl_complex_rect(-1.0,0.0))
3511double gsl_complex_arg (gsl_complex z);
3512double gsl_complex_abs (gsl_complex z);
3513double gsl_complex_abs2 (gsl_complex z);
3514double gsl_complex_logabs (gsl_complex z);
3518gsl_complex gsl_complex_add (gsl_complex a, gsl_complex b);
3519gsl_complex gsl_complex_sub (gsl_complex a, gsl_complex b);
3520gsl_complex gsl_complex_mul (gsl_complex a, gsl_complex b);
3521gsl_complex gsl_complex_div (gsl_complex a, gsl_complex b);
3523gsl_complex gsl_complex_add_real (gsl_complex a,
double x);
3524gsl_complex gsl_complex_sub_real (gsl_complex a,
double x);
3525gsl_complex gsl_complex_mul_real (gsl_complex a,
double x);
3526gsl_complex gsl_complex_div_real (gsl_complex a,
double x);
3528gsl_complex gsl_complex_add_imag (gsl_complex a,
double y);
3529gsl_complex gsl_complex_sub_imag (gsl_complex a,
double y);
3530gsl_complex gsl_complex_mul_imag (gsl_complex a,
double y);
3531gsl_complex gsl_complex_div_imag (gsl_complex a,
double y);
3533gsl_complex gsl_complex_conjugate (gsl_complex z);
3534gsl_complex gsl_complex_inverse (gsl_complex a);
3535gsl_complex gsl_complex_negative (gsl_complex a);
3539gsl_complex gsl_complex_sqrt (gsl_complex z);
3540gsl_complex gsl_complex_sqrt_real (
double x);
3542gsl_complex gsl_complex_pow (gsl_complex a, gsl_complex b);
3543gsl_complex gsl_complex_pow_real (gsl_complex a,
double b);
3545gsl_complex gsl_complex_exp (gsl_complex a);
3546gsl_complex gsl_complex_log (gsl_complex a);
3547gsl_complex gsl_complex_log10 (gsl_complex a);
3548gsl_complex gsl_complex_log_b (gsl_complex a, gsl_complex b);
3552gsl_complex gsl_complex_sin (gsl_complex a);
3553gsl_complex gsl_complex_cos (gsl_complex a);
3554gsl_complex gsl_complex_sec (gsl_complex a);
3555gsl_complex gsl_complex_csc (gsl_complex a);
3556gsl_complex gsl_complex_tan (gsl_complex a);
3557gsl_complex gsl_complex_cot (gsl_complex a);
3561gsl_complex gsl_complex_arcsin (gsl_complex a);
3562gsl_complex gsl_complex_arcsin_real (
double a);
3563gsl_complex gsl_complex_arccos (gsl_complex a);
3564gsl_complex gsl_complex_arccos_real (
double a);
3565gsl_complex gsl_complex_arcsec (gsl_complex a);
3566gsl_complex gsl_complex_arcsec_real (
double a);
3567gsl_complex gsl_complex_arccsc (gsl_complex a);
3568gsl_complex gsl_complex_arccsc_real (
double a);
3569gsl_complex gsl_complex_arctan (gsl_complex a);
3570gsl_complex gsl_complex_arccot (gsl_complex a);
3574gsl_complex gsl_complex_sinh (gsl_complex a);
3575gsl_complex gsl_complex_cosh (gsl_complex a);
3576gsl_complex gsl_complex_sech (gsl_complex a);
3577gsl_complex gsl_complex_csch (gsl_complex a);
3578gsl_complex gsl_complex_tanh (gsl_complex a);
3579gsl_complex gsl_complex_coth (gsl_complex a);
3583gsl_complex gsl_complex_arcsinh (gsl_complex a);
3584gsl_complex gsl_complex_arccosh (gsl_complex a);
3585gsl_complex gsl_complex_arccosh_real (
double a);
3586gsl_complex gsl_complex_arcsech (gsl_complex a);
3587gsl_complex gsl_complex_arccsch (gsl_complex a);
3588gsl_complex gsl_complex_arctanh (gsl_complex a);
3589gsl_complex gsl_complex_arctanh_real (
double a);
3590gsl_complex gsl_complex_arccoth (gsl_complex a);
3602gsl_complex_polar (
double r,
double theta)
3605 GSL_SET_COMPLEX (&z, r * cos (theta), r * sin (theta));
3614gsl_complex_arg (gsl_complex z)
3616 double x = GSL_REAL (z);
3617 double y = GSL_IMAG (z);
3619 if (x == 0.0 && y == 0.0)
3624 return atan2 (y, x);
3628gsl_complex_abs (gsl_complex z)
3630 return hypot (GSL_REAL (z), GSL_IMAG (z));
3634gsl_complex_abs2 (gsl_complex z)
3636 double x = GSL_REAL (z);
3637 double y = GSL_IMAG (z);
3639 return (x * x + y * y);
3643gsl_complex_logabs (gsl_complex z)
3645 double xabs = fabs (GSL_REAL (z));
3646 double yabs = fabs (GSL_IMAG (z));
3662 return log (max) + 0.5 * log1p (u * u);
3671gsl_complex_add (gsl_complex a, gsl_complex b)
3673 double ar = GSL_REAL (a), ai = GSL_IMAG (a);
3674 double br = GSL_REAL (b), bi = GSL_IMAG (b);
3677 GSL_SET_COMPLEX (&z, ar + br, ai + bi);
3682gsl_complex_add_real (gsl_complex a,
double x)
3685 GSL_SET_COMPLEX (&z, GSL_REAL (a) + x, GSL_IMAG (a));
3690gsl_complex_add_imag (gsl_complex a,
double y)
3693 GSL_SET_COMPLEX (&z, GSL_REAL (a), GSL_IMAG (a) + y);
3699gsl_complex_sub (gsl_complex a, gsl_complex b)
3701 double ar = GSL_REAL (a), ai = GSL_IMAG (a);
3702 double br = GSL_REAL (b), bi = GSL_IMAG (b);
3705 GSL_SET_COMPLEX (&z, ar - br, ai - bi);
3710gsl_complex_sub_real (gsl_complex a,
double x)
3713 GSL_SET_COMPLEX (&z, GSL_REAL (a) - x, GSL_IMAG (a));
3718gsl_complex_sub_imag (gsl_complex a,
double y)
3721 GSL_SET_COMPLEX (&z, GSL_REAL (a), GSL_IMAG (a) - y);
3726gsl_complex_mul (gsl_complex a, gsl_complex b)
3728 double ar = GSL_REAL (a), ai = GSL_IMAG (a);
3729 double br = GSL_REAL (b), bi = GSL_IMAG (b);
3732 GSL_SET_COMPLEX (&z, ar * br - ai * bi, ar * bi + ai * br);
3737gsl_complex_mul_real (gsl_complex a,
double x)
3740 GSL_SET_COMPLEX (&z, x * GSL_REAL (a), x * GSL_IMAG (a));
3745gsl_complex_mul_imag (gsl_complex a,
double y)
3748 GSL_SET_COMPLEX (&z, -y * GSL_IMAG (a), y * GSL_REAL (a));
3753gsl_complex_div (gsl_complex a, gsl_complex b)
3755 double ar = GSL_REAL (a), ai = GSL_IMAG (a);
3756 double br = GSL_REAL (b), bi = GSL_IMAG (b);
3758 double s = 1.0 / gsl_complex_abs (b);
3760 double sbr = s * br;
3761 double sbi = s * bi;
3763 double zr = (ar * sbr + ai * sbi) * s;
3764 double zi = (ai * sbr - ar * sbi) * s;
3767 GSL_SET_COMPLEX (&z, zr, zi);
3772gsl_complex_div_real (gsl_complex a,
double x)
3775 GSL_SET_COMPLEX (&z, GSL_REAL (a) / x, GSL_IMAG (a) / x);
3780gsl_complex_div_imag (gsl_complex a,
double y)
3783 GSL_SET_COMPLEX (&z, GSL_IMAG (a) / y, - GSL_REAL (a) / y);
3788gsl_complex_conjugate (gsl_complex a)
3791 GSL_SET_COMPLEX (&z, GSL_REAL (a), -GSL_IMAG (a));
3796gsl_complex_negative (gsl_complex a)
3799 GSL_SET_COMPLEX (&z, -GSL_REAL (a), -GSL_IMAG (a));
3804gsl_complex_inverse (gsl_complex a)
3806 double s = 1.0 / gsl_complex_abs (a);
3809 GSL_SET_COMPLEX (&z, (GSL_REAL (a) * s) * s, -(GSL_IMAG (a) * s) * s);
3818gsl_complex_sqrt (gsl_complex a)
3822 if (GSL_REAL (a) == 0.0 && GSL_IMAG (a) == 0.0)
3824 GSL_SET_COMPLEX (&z, 0, 0);
3828 double x = fabs (GSL_REAL (a));
3829 double y = fabs (GSL_IMAG (a));
3835 w = sqrt (x) * sqrt (0.5 * (1.0 + sqrt (1.0 + t * t)));
3840 w = sqrt (y) * sqrt (0.5 * (t + sqrt (1.0 + t * t)));
3843 if (GSL_REAL (a) >= 0.0)
3845 double ai = GSL_IMAG (a);
3846 GSL_SET_COMPLEX (&z, w, ai / (2.0 * w));
3850 double ai = GSL_IMAG (a);
3851 double vi = (ai >= 0) ? w : -w;
3852 GSL_SET_COMPLEX (&z, ai / (2.0 * vi), vi);
3860gsl_complex_sqrt_real (
double x)
3866 GSL_SET_COMPLEX (&z, sqrt (x), 0.0);
3870 GSL_SET_COMPLEX (&z, 0.0, sqrt (-x));
3877gsl_complex_exp (gsl_complex a)
3879 double rho = exp (GSL_REAL (a));
3880 double theta = GSL_IMAG (a);
3883 GSL_SET_COMPLEX (&z, rho * cos (theta), rho * sin (theta));
3888gsl_complex_pow (gsl_complex a, gsl_complex b)
3892 if (GSL_REAL (a) == 0 && GSL_IMAG (a) == 0.0)
3894 if (GSL_REAL (b) == 0 && GSL_IMAG (b) == 0.0)
3896 GSL_SET_COMPLEX (&z, 1.0, 0.0);
3900 GSL_SET_COMPLEX (&z, 0.0, 0.0);
3903 else if (GSL_REAL (b) == 1.0 && GSL_IMAG (b) == 0.0)
3907 else if (GSL_REAL (b) == -1.0 && GSL_IMAG (b) == 0.0)
3909 return gsl_complex_inverse (a);
3913 double logr = gsl_complex_logabs (a);
3914 double theta = gsl_complex_arg (a);
3916 double br = GSL_REAL (b), bi = GSL_IMAG (b);
3918 double rho = exp (logr * br - bi * theta);
3919 double beta = theta * br + bi * logr;
3921 GSL_SET_COMPLEX (&z, rho * cos (beta), rho * sin (beta));
3928gsl_complex_pow_real (gsl_complex a,
double b)
3932 if (GSL_REAL (a) == 0 && GSL_IMAG (a) == 0)
3936 GSL_SET_COMPLEX (&z, 1, 0);
3940 GSL_SET_COMPLEX (&z, 0, 0);
3945 double logr = gsl_complex_logabs (a);
3946 double theta = gsl_complex_arg (a);
3947 double rho = exp (logr * b);
3948 double beta = theta * b;
3949 GSL_SET_COMPLEX (&z, rho * cos (beta), rho * sin (beta));
3956gsl_complex_log (gsl_complex a)
3958 double logr = gsl_complex_logabs (a);
3959 double theta = gsl_complex_arg (a);
3962 GSL_SET_COMPLEX (&z, logr, theta);
3967gsl_complex_log10 (gsl_complex a)
3969 return gsl_complex_mul_real (gsl_complex_log (a), 1 / log (10.));
3973gsl_complex_log_b (gsl_complex a, gsl_complex b)
3975 return gsl_complex_div (gsl_complex_log (a), gsl_complex_log (b));
3983gsl_complex_sin (gsl_complex a)
3985 double R = GSL_REAL (a), I = GSL_IMAG (a);
3993 GSL_SET_COMPLEX (&z, sin (R), 0.0);
3997 GSL_SET_COMPLEX (&z, sin (R) * cosh (I), cos (R) * sinh (I));
4004gsl_complex_cos (gsl_complex a)
4006 double R = GSL_REAL (a), I = GSL_IMAG (a);
4014 GSL_SET_COMPLEX (&z, cos (R), 0.0);
4018 GSL_SET_COMPLEX (&z, cos (R) * cosh (I), sin (R) * sinh (-I));
4025gsl_complex_tan (gsl_complex a)
4027 double R = GSL_REAL (a), I = GSL_IMAG (a);
4033 double D = pow (cos (R), 2.0) + pow (sinh (I), 2.0);
4035 GSL_SET_COMPLEX (&z, 0.5 * sin (2 * R) / D, 0.5 * sinh (2 * I) / D);
4039 double D = pow (cos (R), 2.0) + pow (sinh (I), 2.0);
4040 double F = 1 + pow(cos (R)/sinh (I), 2.0);
4042 GSL_SET_COMPLEX (&z, 0.5 * sin (2 * R) / D, 1 / (tanh (I) * F));
4049gsl_complex_sec (gsl_complex a)
4051 gsl_complex z = gsl_complex_cos (a);
4052 return gsl_complex_inverse (z);
4056gsl_complex_csc (gsl_complex a)
4058 gsl_complex z = gsl_complex_sin (a);
4059 return gsl_complex_inverse(z);
4064gsl_complex_cot (gsl_complex a)
4066 gsl_complex z = gsl_complex_tan (a);
4067 return gsl_complex_inverse (z);
4075gsl_complex_arcsin (gsl_complex a)
4077 double R = GSL_REAL (a), I = GSL_IMAG (a);
4082 z = gsl_complex_arcsin_real (R);
4086 double x = fabs (R), y = fabs (I);
4087 double r = hypot (x + 1, y), s = hypot (x - 1, y);
4088 double A = 0.5 * (r + s);
4094 const double A_crossover = 1.5, B_crossover = 0.6417;
4096 if (B <= B_crossover)
4104 double D = 0.5 * (A + x) * (y2 / (r + x + 1) + (s + (1 - x)));
4105 real = atan (x / sqrt (D));
4110 double D = 0.5 * (Apx / (r + x + 1) + Apx / (s + (x - 1)));
4111 real = atan (x / (y * sqrt (D)));
4115 if (A <= A_crossover)
4121 Am1 = 0.5 * (y2 / (r + (x + 1)) + y2 / (s + (1 - x)));
4125 Am1 = 0.5 * (y2 / (r + (x + 1)) + (s + (x - 1)));
4128 imag = log1p (Am1 + sqrt (Am1 * (A + 1)));
4132 imag = log (A + sqrt (A * A - 1));
4135 GSL_SET_COMPLEX (&z, (R >= 0) ? real : -real, (I >= 0) ? imag : -imag);
4142gsl_complex_arcsin_real (
double a)
4146 if (fabs (a) <= 1.0)
4148 GSL_SET_COMPLEX (&z, asin (a), 0.0);
4154 GSL_SET_COMPLEX (&z, -M_PI_2, acosh (-a));
4158 GSL_SET_COMPLEX (&z, M_PI_2, -acosh (a));
4166gsl_complex_arccos (gsl_complex a)
4168 double R = GSL_REAL (a), I = GSL_IMAG (a);
4173 z = gsl_complex_arccos_real (R);
4177 double x = fabs (R), y = fabs (I);
4178 double r = hypot (x + 1, y), s = hypot (x - 1, y);
4179 double A = 0.5 * (r + s);
4185 const double A_crossover = 1.5, B_crossover = 0.6417;
4187 if (B <= B_crossover)
4195 double D = 0.5 * (A + x) * (y2 / (r + x + 1) + (s + (1 - x)));
4196 real = atan (sqrt (D) / x);
4201 double D = 0.5 * (Apx / (r + x + 1) + Apx / (s + (x - 1)));
4202 real = atan ((y * sqrt (D)) / x);
4206 if (A <= A_crossover)
4212 Am1 = 0.5 * (y2 / (r + (x + 1)) + y2 / (s + (1 - x)));
4216 Am1 = 0.5 * (y2 / (r + (x + 1)) + (s + (x - 1)));
4219 imag = log1p (Am1 + sqrt (Am1 * (A + 1)));
4223 imag = log (A + sqrt (A * A - 1));
4226 GSL_SET_COMPLEX (&z, (R >= 0) ? real : M_PI - real, (I >= 0) ? -imag : imag);
4233gsl_complex_arccos_real (
double a)
4237 if (fabs (a) <= 1.0)
4239 GSL_SET_COMPLEX (&z, acos (a), 0);
4245 GSL_SET_COMPLEX (&z, M_PI, -acosh (-a));
4249 GSL_SET_COMPLEX (&z, 0, acosh (a));
4257gsl_complex_arctan (gsl_complex a)
4259 double R = GSL_REAL (a), I = GSL_IMAG (a);
4264 GSL_SET_COMPLEX (&z, atan (R), 0);
4272 double r = hypot (R, I);
4276 double u = 2 * I / (1 + r * r);
4283 imag = 0.25 * (log1p (u) - log1p (-u));
4287 double A = hypot (R, I + 1);
4288 double B = hypot (R, I - 1);
4289 imag = 0.5 * log (A / B);
4296 GSL_SET_COMPLEX (&z, M_PI_2, imag);
4300 GSL_SET_COMPLEX (&z, -M_PI_2, imag);
4304 GSL_SET_COMPLEX (&z, 0, imag);
4309 GSL_SET_COMPLEX (&z, 0.5 * atan2 (2 * R, ((1 + r) * (1 - r))), imag);
4317gsl_complex_arcsec (gsl_complex a)
4319 gsl_complex z = gsl_complex_inverse (a);
4320 return gsl_complex_arccos (z);
4324gsl_complex_arcsec_real (
double a)
4328 if (a <= -1.0 || a >= 1.0)
4330 GSL_SET_COMPLEX (&z, acos (1 / a), 0.0);
4336 GSL_SET_COMPLEX (&z, 0, acosh (1 / a));
4340 GSL_SET_COMPLEX (&z, M_PI, -acosh (-1 / a));
4348gsl_complex_arccsc (gsl_complex a)
4350 gsl_complex z = gsl_complex_inverse (a);
4351 return gsl_complex_arcsin (z);
4355gsl_complex_arccsc_real (
double a)
4359 if (a <= -1.0 || a >= 1.0)
4361 GSL_SET_COMPLEX (&z, asin (1 / a), 0.0);
4367 GSL_SET_COMPLEX (&z, M_PI_2, -acosh (1 / a));
4371 GSL_SET_COMPLEX (&z, -M_PI_2, acosh (-1 / a));
4379gsl_complex_arccot (gsl_complex a)
4383 if (GSL_REAL (a) == 0.0 && GSL_IMAG (a) == 0.0)
4385 GSL_SET_COMPLEX (&z, M_PI_2, 0);
4389 z = gsl_complex_inverse (a);
4390 z = gsl_complex_arctan (z);
4401gsl_complex_sinh (gsl_complex a)
4403 double R = GSL_REAL (a), I = GSL_IMAG (a);
4406 GSL_SET_COMPLEX (&z, sinh (R) * cos (I), cosh (R) * sin (I));
4411gsl_complex_cosh (gsl_complex a)
4413 double R = GSL_REAL (a), I = GSL_IMAG (a);
4416 GSL_SET_COMPLEX (&z, cosh (R) * cos (I), sinh (R) * sin (I));
4421gsl_complex_tanh (gsl_complex a)
4423 double R = GSL_REAL (a), I = GSL_IMAG (a);
4429 double D = pow (cos (I), 2.0) + pow (sinh (R), 2.0);
4431 GSL_SET_COMPLEX (&z, sinh (R) * cosh (R) / D, 0.5 * sin (2 * I) / D);
4435 double D = pow (cos (I), 2.0) + pow (sinh (R), 2.0);
4436 double F = 1 + pow (cos (I) / sinh (R), 2.0);
4438 GSL_SET_COMPLEX (&z, 1.0 / (tanh (R) * F), 0.5 * sin (2 * I) / D);
4445gsl_complex_sech (gsl_complex a)
4447 gsl_complex z = gsl_complex_cosh (a);
4448 return gsl_complex_inverse (z);
4452gsl_complex_csch (gsl_complex a)
4454 gsl_complex z = gsl_complex_sinh (a);
4455 return gsl_complex_inverse (z);
4459gsl_complex_coth (gsl_complex a)
4461 gsl_complex z = gsl_complex_tanh (a);
4462 return gsl_complex_inverse (z);
4470gsl_complex_arcsinh (gsl_complex a)
4472 gsl_complex z = gsl_complex_mul_imag(a, 1.0);
4473 z = gsl_complex_arcsin (z);
4474 z = gsl_complex_mul_imag (z, -1.0);
4479gsl_complex_arccosh (gsl_complex a)
4481 gsl_complex z = gsl_complex_arccos (a);
4482 z = gsl_complex_mul_imag (z, GSL_IMAG(z) > 0 ? -1.0 : 1.0);
4487gsl_complex_arccosh_real (
double a)
4493 GSL_SET_COMPLEX (&z, acosh (a), 0);
4499 GSL_SET_COMPLEX (&z, 0, acos (a));
4503 GSL_SET_COMPLEX (&z, acosh (-a), M_PI);
4511gsl_complex_arctanh (gsl_complex a)
4513 if (GSL_IMAG (a) == 0.0)
4515 return gsl_complex_arctanh_real (GSL_REAL (a));
4519 gsl_complex z = gsl_complex_mul_imag(a, 1.0);
4520 z = gsl_complex_arctan (z);
4521 z = gsl_complex_mul_imag (z, -1.0);
4527gsl_complex_arctanh_real (
double a)
4531 if (a > -1.0 && a < 1.0)
4533 GSL_SET_COMPLEX (&z, atanh (a), 0);
4537 GSL_SET_COMPLEX (&z, atanh (1 / a), (a < 0) ? M_PI_2 : -M_PI_2);
4544gsl_complex_arcsech (gsl_complex a)
4546 gsl_complex t = gsl_complex_inverse (a);
4547 return gsl_complex_arccosh (t);
4551gsl_complex_arccsch (gsl_complex a)
4553 gsl_complex t = gsl_complex_inverse (a);
4554 return gsl_complex_arcsinh (t);
4558gsl_complex_arccoth (gsl_complex a)
4560 gsl_complex t = gsl_complex_inverse (a);
4561 return gsl_complex_arctanh (t);
4590#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
4591#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
4593#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
4594#define MARLEY_BUILTIN_GSL_CONFIG_H
4596#define HAVE_INLINE 1
4597#define HAVE_DECL_ISFINITE 1
4598#define HAVE_DECL_ISNAN 1
4599#define HAVE_DECL_ISINF 1
4600#define GSL_COERCE_DBL(x) (x)
4602#define GSL_DISABLE_DEPRECATED 0
4603#define PACKAGE_VERSION "2.8"
4604#define VERSION "2.8"
4632#ifndef __GSL_MATH_H__
4633#define __GSL_MATH_H__
4655#ifndef __GSL_SYS_H__
4656#define __GSL_SYS_H__
4660double gsl_log1p (
const double x);
4661double gsl_expm1 (
const double x);
4662double gsl_hypot (
const double x,
const double y);
4663double gsl_hypot3 (
const double x,
const double y,
const double z);
4664double gsl_acosh (
const double x);
4665double gsl_asinh (
const double x);
4666double gsl_atanh (
const double x);
4668int gsl_isnan (
const double x);
4669int gsl_isinf (
const double x);
4670int gsl_finite (
const double x);
4672double gsl_nan (
void);
4673double gsl_posinf (
void);
4674double gsl_neginf (
void);
4675double gsl_fdiv (
const double x,
const double y);
4677double gsl_coerce_double (
const double x);
4678float gsl_coerce_float (
const float x);
4679long double gsl_coerce_long_double (
const long double x);
4681double gsl_ldexp(
const double x,
const int e);
4682double gsl_frexp(
const double x,
int * e);
4684int gsl_fcmp (
const double x1,
const double x2,
const double epsilon);
4711#ifndef __GSL_INLINE_H__
4712#define __GSL_INLINE_H__
4741# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
4742# define INLINE_DECL inline
4743# define INLINE_FUN inline
4746# define INLINE_FUN extern inline
4756#define GSL_RANGE_COND(x) (x)
4763#ifndef __GSL_MACHINE_H__
4764#define __GSL_MACHINE_H__
4778#define GSL_DBL_EPSILON 2.2204460492503131e-16
4779#define GSL_SQRT_DBL_EPSILON 1.4901161193847656e-08
4780#define GSL_ROOT3_DBL_EPSILON 6.0554544523933429e-06
4781#define GSL_ROOT4_DBL_EPSILON 1.2207031250000000e-04
4782#define GSL_ROOT5_DBL_EPSILON 7.4009597974140505e-04
4783#define GSL_ROOT6_DBL_EPSILON 2.4607833005759251e-03
4784#define GSL_LOG_DBL_EPSILON (-3.6043653389117154e+01)
4786#define GSL_DBL_MIN 2.2250738585072014e-308
4787#define GSL_SQRT_DBL_MIN 1.4916681462400413e-154
4788#define GSL_ROOT3_DBL_MIN 2.8126442852362996e-103
4789#define GSL_ROOT4_DBL_MIN 1.2213386697554620e-77
4790#define GSL_ROOT5_DBL_MIN 2.9476022969691763e-62
4791#define GSL_ROOT6_DBL_MIN 5.3034368905798218e-52
4792#define GSL_LOG_DBL_MIN (-7.0839641853226408e+02)
4794#define GSL_DBL_MAX 1.7976931348623157e+308
4795#define GSL_SQRT_DBL_MAX 1.3407807929942596e+154
4796#define GSL_ROOT3_DBL_MAX 5.6438030941222897e+102
4797#define GSL_ROOT4_DBL_MAX 1.1579208923731620e+77
4798#define GSL_ROOT5_DBL_MAX 4.4765466227572707e+61
4799#define GSL_ROOT6_DBL_MAX 2.3756689782295612e+51
4800#define GSL_LOG_DBL_MAX 7.0978271289338397e+02
4802#define GSL_FLT_EPSILON 1.1920928955078125e-07
4803#define GSL_SQRT_FLT_EPSILON 3.4526698300124393e-04
4804#define GSL_ROOT3_FLT_EPSILON 4.9215666011518501e-03
4805#define GSL_ROOT4_FLT_EPSILON 1.8581361171917516e-02
4806#define GSL_ROOT5_FLT_EPSILON 4.1234622211652937e-02
4807#define GSL_ROOT6_FLT_EPSILON 7.0153878019335827e-02
4808#define GSL_LOG_FLT_EPSILON (-1.5942385152878742e+01)
4810#define GSL_FLT_MIN 1.1754943508222875e-38
4811#define GSL_SQRT_FLT_MIN 1.0842021724855044e-19
4812#define GSL_ROOT3_FLT_MIN 2.2737367544323241e-13
4813#define GSL_ROOT4_FLT_MIN 3.2927225399135965e-10
4814#define GSL_ROOT5_FLT_MIN 2.5944428542140822e-08
4815#define GSL_ROOT6_FLT_MIN 4.7683715820312542e-07
4816#define GSL_LOG_FLT_MIN (-8.7336544750553102e+01)
4818#define GSL_FLT_MAX 3.4028234663852886e+38
4819#define GSL_SQRT_FLT_MAX 1.8446743523953730e+19
4820#define GSL_ROOT3_FLT_MAX 6.9814635196223242e+12
4821#define GSL_ROOT4_FLT_MAX 4.2949672319999986e+09
4822#define GSL_ROOT5_FLT_MAX 5.0859007855960041e+07
4823#define GSL_ROOT6_FLT_MAX 2.6422459233807749e+06
4824#define GSL_LOG_FLT_MAX 8.8722839052068352e+01
4826#define GSL_SFLT_EPSILON 4.8828125000000000e-04
4827#define GSL_SQRT_SFLT_EPSILON 2.2097086912079612e-02
4828#define GSL_ROOT3_SFLT_EPSILON 7.8745065618429588e-02
4829#define GSL_ROOT4_SFLT_EPSILON 1.4865088937534013e-01
4830#define GSL_ROOT5_SFLT_EPSILON 2.1763764082403100e-01
4831#define GSL_ROOT6_SFLT_EPSILON 2.8061551207734325e-01
4832#define GSL_LOG_SFLT_EPSILON (-7.6246189861593985e+00)
4838#define GSL_MACH_EPS GSL_DBL_EPSILON
4857#define GSL_SQRT_MACH_EPS 3.2e-08
4858#define GSL_ROOT3_MACH_EPS 1.0e-05
4859#define GSL_ROOT4_MACH_EPS 0.000178
4860#define GSL_ROOT5_MACH_EPS 0.00100
4861#define GSL_ROOT6_MACH_EPS 0.00316
4862#define GSL_LOG_MACH_EPS (-34.54)
4890#ifndef __GSL_PRECISION_H__
4891#define __GSL_PRECISION_H__
4912#ifndef __GSL_TYPES_H__
4913#define __GSL_TYPES_H__
4920# define GSL_VAR extern __declspec(dllexport)
4922# define GSL_VAR extern __declspec(dllimport)
4925# define GSL_VAR extern
4928# define GSL_VAR extern
4943typedef unsigned int gsl_prec_t;
4950#define _GSL_PREC_T_NUM 3
4957GSL_VAR
const double gsl_prec_eps[];
4958GSL_VAR
const double gsl_prec_sqrt_eps[];
4959GSL_VAR
const double gsl_prec_root3_eps[];
4960GSL_VAR
const double gsl_prec_root4_eps[];
4961GSL_VAR
const double gsl_prec_root5_eps[];
4962GSL_VAR
const double gsl_prec_root6_eps[];
4990#ifndef __GSL_NAN_H__
4991#define __GSL_NAN_H__
4994# define GSL_POSINF INFINITY
4995# define GSL_NEGINF (-INFINITY)
4996#elif defined(HUGE_VAL)
4997# define GSL_POSINF HUGE_VAL
4998# define GSL_NEGINF (-HUGE_VAL)
5000# define GSL_POSINF (gsl_posinf())
5001# define GSL_NEGINF (gsl_neginf())
5006#elif defined(INFINITY)
5007# define GSL_NAN (INFINITY/INFINITY)
5009# define GSL_NAN (gsl_nan())
5012#define GSL_POSZERO (+0.0)
5013#define GSL_NEGZERO (-0.0)
5038#ifndef __GSL_POW_INT_H__
5039#define __GSL_POW_INT_H__
5060#ifndef __GSL_INLINE_H__
5061#define __GSL_INLINE_H__
5090# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
5091# define INLINE_DECL inline
5092# define INLINE_FUN inline
5095# define INLINE_FUN extern inline
5105#define GSL_RANGE_COND(x) (x)
5113INLINE_DECL
double gsl_pow_2(
const double x);
5114INLINE_DECL
double gsl_pow_3(
const double x);
5115INLINE_DECL
double gsl_pow_4(
const double x);
5116INLINE_DECL
double gsl_pow_5(
const double x);
5117INLINE_DECL
double gsl_pow_6(
const double x);
5118INLINE_DECL
double gsl_pow_7(
const double x);
5119INLINE_DECL
double gsl_pow_8(
const double x);
5120INLINE_DECL
double gsl_pow_9(
const double x);
5123INLINE_FUN
double gsl_pow_2(
const double x) {
return x*x; }
5124INLINE_FUN
double gsl_pow_3(
const double x) {
return x*x*x; }
5125INLINE_FUN
double gsl_pow_4(
const double x) {
double x2 = x*x;
return x2*x2; }
5126INLINE_FUN
double gsl_pow_5(
const double x) {
double x2 = x*x;
return x2*x2*x; }
5127INLINE_FUN
double gsl_pow_6(
const double x) {
double x2 = x*x;
return x2*x2*x2; }
5128INLINE_FUN
double gsl_pow_7(
const double x) {
double x3 = x*x*x;
return x3*x3*x; }
5129INLINE_FUN
double gsl_pow_8(
const double x) {
double x2 = x*x;
double x4 = x2*x2;
return x4*x4; }
5130INLINE_FUN
double gsl_pow_9(
const double x) {
double x3 = x*x*x;
return x3*x3*x3; }
5133double gsl_pow_int(
double x,
int n);
5134double gsl_pow_uint(
double x,
unsigned int n);
5161#ifndef __GSL_MINMAX_H__
5162#define __GSL_MINMAX_H__
5183#ifndef __GSL_INLINE_H__
5184#define __GSL_INLINE_H__
5213# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
5214# define INLINE_DECL inline
5215# define INLINE_FUN inline
5218# define INLINE_FUN extern inline
5228#define GSL_RANGE_COND(x) (x)
5239#define GSL_MAX(a,b) ((a) > (b) ? (a) : (b))
5240#define GSL_MIN(a,b) ((a) < (b) ? (a) : (b))
5243double gsl_max (
double a,
double b);
5244double gsl_min (
double a,
double b);
5249INLINE_FUN
int GSL_MAX_INT (
int a,
int b);
5250INLINE_FUN
int GSL_MIN_INT (
int a,
int b);
5251INLINE_FUN
double GSL_MAX_DBL (
double a,
double b);
5252INLINE_FUN
double GSL_MIN_DBL (
double a,
double b);
5253INLINE_FUN
long double GSL_MAX_LDBL (
long double a,
long double b);
5254INLINE_FUN
long double GSL_MIN_LDBL (
long double a,
long double b);
5257GSL_MAX_INT (
int a,
int b)
5259 return GSL_MAX (a, b);
5263GSL_MIN_INT (
int a,
int b)
5265 return GSL_MIN (a, b);
5269GSL_MAX_DBL (
double a,
double b)
5271 return GSL_MAX (a, b);
5275GSL_MIN_DBL (
double a,
double b)
5277 return GSL_MIN (a, b);
5280INLINE_FUN
long double
5281GSL_MAX_LDBL (
long double a,
long double b)
5283 return GSL_MAX (a, b);
5286INLINE_FUN
long double
5287GSL_MIN_LDBL (
long double a,
long double b)
5289 return GSL_MIN (a, b);
5292#define GSL_MAX_INT(a,b) GSL_MAX(a,b)
5293#define GSL_MIN_INT(a,b) GSL_MIN(a,b)
5294#define GSL_MAX_DBL(a,b) GSL_MAX(a,b)
5295#define GSL_MIN_DBL(a,b) GSL_MIN(a,b)
5296#define GSL_MAX_LDBL(a,b) GSL_MAX(a,b)
5297#define GSL_MIN_LDBL(a,b) GSL_MIN(a,b)
5306#define M_E 2.71828182845904523536028747135
5310#define M_LOG2E 1.44269504088896340735992468100
5314#define M_LOG10E 0.43429448190325182765112891892
5318#define M_SQRT2 1.41421356237309504880168872421
5322#define M_SQRT1_2 0.70710678118654752440084436210
5327#define M_SQRT3 1.73205080756887729352744634151
5331#define M_PI 3.14159265358979323846264338328
5335#define M_PI_2 1.57079632679489661923132169164
5339#define M_PI_4 0.78539816339744830961566084582
5343#define M_SQRTPI 1.77245385090551602729816748334
5347#define M_2_SQRTPI 1.12837916709551257389615890312
5351#define M_1_PI 0.31830988618379067153776752675
5355#define M_2_PI 0.63661977236758134307553505349
5359#define M_LN10 2.30258509299404568401799145468
5363#define M_LN2 0.69314718055994530941723212146
5367#define M_LNPI 1.14472988584940017414342735135
5371#define M_EULER 0.57721566490153286060651209008
5378#define GSL_IS_ODD(n) ((n) & 1)
5379#define GSL_IS_EVEN(n) (!(GSL_IS_ODD(n)))
5380#define GSL_SIGN(x) ((x) >= 0.0 ? 1 : -1)
5383#define GSL_IS_REAL(x) (gsl_finite(x))
5389 double (* function) (
double x,
void * params);
5395#define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params)
5401 double (* f) (
double x,
void * params);
5402 double (* df) (
double x,
void * params);
5403 void (* fdf) (
double x,
void * params,
double * f,
double * df);
5409#define GSL_FN_FDF_EVAL_F(FDF,x) (*((FDF)->f))(x,(FDF)->params)
5410#define GSL_FN_FDF_EVAL_DF(FDF,x) (*((FDF)->df))(x,(FDF)->params)
5411#define GSL_FN_FDF_EVAL_F_DF(FDF,x,y,dy) (*((FDF)->fdf))(x,(FDF)->params,(y),(dy))
5418 int (* function) (
double x,
double y[],
void * params);
5424#define GSL_FN_VEC_EVAL(F,x,y) (*((F)->function))(x,y,(F)->params)
5451#ifndef __GSL_ERRNO_H__
5452#define __GSL_ERRNO_H__
5476#ifndef __GSL_TYPES_H__
5477#define __GSL_TYPES_H__
5484# define GSL_VAR extern __declspec(dllexport)
5486# define GSL_VAR extern __declspec(dllimport)
5489# define GSL_VAR extern
5492# define GSL_VAR extern
5541void gsl_error (
const char * reason,
const char * file,
int line,
5544void gsl_stream_printf (
const char *label,
const char *file,
5545 int line,
const char *reason);
5547typedef void gsl_error_handler_t (
const char * reason,
const char * file,
5548 int line,
int gsl_errno);
5550gsl_error_handler_t *
5551gsl_set_error_handler (gsl_error_handler_t * new_handler);
5555#define GSL_ERROR(reason, gsl_errno) \
5557 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
5558 return gsl_errno ; \
5563#define GSL_ERROR_VAL(reason, gsl_errno, value) \
5565 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
5572#define GSL_ERROR_VOID(reason, gsl_errno) \
5574 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
5580#define GSL_ERROR_NULL(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, 0)
5596#define GSL_ERROR_SELECT_2(a,b) ((a) != GSL_SUCCESS ? (a) : ((b) != GSL_SUCCESS ? (b) : GSL_SUCCESS))
5597#define GSL_ERROR_SELECT_3(a,b,c) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_2(b,c))
5598#define GSL_ERROR_SELECT_4(a,b,c,d) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_3(b,c,d))
5599#define GSL_ERROR_SELECT_5(a,b,c,d,e) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_4(b,c,d,e))
5601#define GSL_STATUS_UPDATE(sp, s) do { if ((s) != GSL_SUCCESS) *(sp) = (s);} while(0)
5630#ifndef __GSL_SF_LOG_H__
5631#define __GSL_SF_LOG_H__
5654#ifndef __GSL_SF_RESULT_H__
5655#define __GSL_SF_RESULT_H__
5665#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
5676int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
5692int gsl_sf_log_e(
const double x, gsl_sf_result * result);
5693double gsl_sf_log(
const double x);
5700int gsl_sf_log_abs_e(
const double x, gsl_sf_result * result);
5701double gsl_sf_log_abs(
const double x);
5710int gsl_sf_complex_log_e(
const double zr,
const double zi, gsl_sf_result * lnr, gsl_sf_result * theta);
5717int gsl_sf_log_1plusx_e(
const double x, gsl_sf_result * result);
5718double gsl_sf_log_1plusx(
const double x);
5725int gsl_sf_log_1plusx_mx_e(
const double x, gsl_sf_result * result);
5726double gsl_sf_log_1plusx_mx(
const double x);
5738#ifndef MARLEY_BUILTIN_GSL_CHEB_EVAL_C
5739#define MARLEY_BUILTIN_GSL_CHEB_EVAL_C
5742cheb_eval_e(
const cheb_series * cs,
5744 gsl_sf_result * result)
5750 double y = (2.0*x - cs->a - cs->b) / (cs->b - cs->a);
5751 double y2 = 2.0 * y;
5755 for(j = cs->order; j>=1; j--) {
5757 d = y2*d - dd + cs->c[j];
5758 e += fabs(y2*temp) + fabs(dd) + fabs(cs->c[j]);
5764 d = y*d - dd + 0.5 * cs->c[0];
5765 e += fabs(y*temp) + fabs(dd) + 0.5 * fabs(cs->c[0]);
5769 result->err = GSL_DBL_EPSILON * e + fabs(cs->c[cs->order]);
5786static double lopx_data[21] = {
5787 2.16647910664395270521272590407,
5788 -0.28565398551049742084877469679,
5789 0.01517767255690553732382488171,
5790 -0.00200215904941415466274422081,
5791 0.00019211375164056698287947962,
5792 -0.00002553258886105542567601400,
5793 2.9004512660400621301999384544e-06,
5794 -3.8873813517057343800270917900e-07,
5795 4.7743678729400456026672697926e-08,
5796 -6.4501969776090319441714445454e-09,
5797 8.2751976628812389601561347296e-10,
5798 -1.1260499376492049411710290413e-10,
5799 1.4844576692270934446023686322e-11,
5800 -2.0328515972462118942821556033e-12,
5801 2.7291231220549214896095654769e-13,
5802 -3.7581977830387938294437434651e-14,
5803 5.1107345870861673561462339876e-15,
5804 -7.0722150011433276578323272272e-16,
5805 9.7089758328248469219003866867e-17,
5806 -1.3492637457521938883731579510e-17,
5807 1.8657327910677296608121390705e-18
5809static cheb_series lopx_cs = {
5823static double lopxmx_data[20] = {
5824 -1.12100231323744103373737274541,
5825 0.19553462773379386241549597019,
5826 -0.01467470453808083971825344956,
5827 0.00166678250474365477643629067,
5828 -0.00018543356147700369785746902,
5829 0.00002280154021771635036301071,
5830 -2.8031253116633521699214134172e-06,
5831 3.5936568872522162983669541401e-07,
5832 -4.6241857041062060284381167925e-08,
5833 6.0822637459403991012451054971e-09,
5834 -8.0339824424815790302621320732e-10,
5835 1.0751718277499375044851551587e-10,
5836 -1.4445310914224613448759230882e-11,
5837 1.9573912180610336168921438426e-12,
5838 -2.6614436796793061741564104510e-13,
5839 3.6402634315269586532158344584e-14,
5840 -4.9937495922755006545809120531e-15,
5841 6.8802890218846809524646902703e-16,
5842 -9.5034129794804273611403251480e-17,
5843 1.3170135013050997157326965813e-17
5845static cheb_series lopxmx_cs = {
5856gsl_sf_log_e(
const double x, gsl_sf_result * result)
5861 DOMAIN_ERROR(result);
5864 result->val = log(x);
5865 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
5872gsl_sf_log_abs_e(
const double x, gsl_sf_result * result)
5877 DOMAIN_ERROR(result);
5880 result->val = log(fabs(x));
5881 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
5887gsl_sf_complex_log_e(
const double zr,
const double zi, gsl_sf_result * lnr, gsl_sf_result * theta)
5892 if(zr != 0.0 || zi != 0.0) {
5893 const double ax = fabs(zr);
5894 const double ay = fabs(zi);
5895 const double min = GSL_MIN(ax, ay);
5896 const double max = GSL_MAX(ax, ay);
5897 lnr->val = log(max) + 0.5 * log(1.0 + (min/max)*(min/max));
5898 lnr->err = 2.0 * GSL_DBL_EPSILON * fabs(lnr->val);
5899 theta->val = atan2(zi, zr);
5900 theta->err = GSL_DBL_EPSILON * fabs(lnr->val);
5904 DOMAIN_ERROR_2(lnr, theta);
5910gsl_sf_log_1plusx_e(
const double x, gsl_sf_result * result)
5915 DOMAIN_ERROR(result);
5917 else if(fabs(x) < GSL_ROOT6_DBL_EPSILON) {
5918 const double c1 = -0.5;
5919 const double c2 = 1.0/3.0;
5920 const double c3 = -1.0/4.0;
5921 const double c4 = 1.0/5.0;
5922 const double c5 = -1.0/6.0;
5923 const double c6 = 1.0/7.0;
5924 const double c7 = -1.0/8.0;
5925 const double c8 = 1.0/9.0;
5926 const double c9 = -1.0/10.0;
5927 const double t = c5 + x*(c6 + x*(c7 + x*(c8 + x*c9)));
5928 result->val = x * (1.0 + x*(c1 + x*(c2 + x*(c3 + x*(c4 + x*t)))));
5929 result->err = GSL_DBL_EPSILON * fabs(result->val);
5932 else if(fabs(x) < 0.5) {
5933 double t = 0.5*(8.0*x + 1.0)/(x+2.0);
5935 cheb_eval_e(&lopx_cs, t, &c);
5936 result->val = x * c.val;
5937 result->err = fabs(x * c.err);
5941 result->val = log(1.0 + x);
5942 result->err = GSL_DBL_EPSILON * fabs(result->val);
5949gsl_sf_log_1plusx_mx_e(
const double x, gsl_sf_result * result)
5954 DOMAIN_ERROR(result);
5956 else if(fabs(x) < GSL_ROOT5_DBL_EPSILON) {
5957 const double c1 = -0.5;
5958 const double c2 = 1.0/3.0;
5959 const double c3 = -1.0/4.0;
5960 const double c4 = 1.0/5.0;
5961 const double c5 = -1.0/6.0;
5962 const double c6 = 1.0/7.0;
5963 const double c7 = -1.0/8.0;
5964 const double c8 = 1.0/9.0;
5965 const double c9 = -1.0/10.0;
5966 const double t = c5 + x*(c6 + x*(c7 + x*(c8 + x*c9)));
5967 result->val = x*x * (c1 + x*(c2 + x*(c3 + x*(c4 + x*t))));
5968 result->err = GSL_DBL_EPSILON * fabs(result->val);
5971 else if(fabs(x) < 0.5) {
5972 double t = 0.5*(8.0*x + 1.0)/(x+2.0);
5974 cheb_eval_e(&lopxmx_cs, t, &c);
5975 result->val = x*x * c.val;
5976 result->err = x*x * c.err;
5980 const double lterm = log(1.0 + x);
5981 result->val = lterm - x;
5982 result->err = GSL_DBL_EPSILON * (fabs(lterm) + fabs(x));
5993double gsl_sf_log(
const double x)
5995 EVAL_RESULT(gsl_sf_log_e(x, &result));
5998double gsl_sf_log_abs(
const double x)
6000 EVAL_RESULT(gsl_sf_log_abs_e(x, &result));
6003double gsl_sf_log_1plusx(
const double x)
6005 EVAL_RESULT(gsl_sf_log_1plusx_e(x, &result));
6008double gsl_sf_log_1plusx_mx(
const double x)
6010 EVAL_RESULT(gsl_sf_log_1plusx_mx_e(x, &result));
6035#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
6036#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
6038#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
6039#define MARLEY_BUILTIN_GSL_CONFIG_H
6041#define HAVE_INLINE 1
6042#define HAVE_DECL_ISFINITE 1
6043#define HAVE_DECL_ISNAN 1
6044#define HAVE_DECL_ISINF 1
6045#define GSL_COERCE_DBL(x) (x)
6047#define GSL_DISABLE_DEPRECATED 0
6048#define PACKAGE_VERSION "2.8"
6049#define VERSION "2.8"
6077#ifndef __GSL_MATH_H__
6078#define __GSL_MATH_H__
6100#ifndef __GSL_SYS_H__
6101#define __GSL_SYS_H__
6105double gsl_log1p (
const double x);
6106double gsl_expm1 (
const double x);
6107double gsl_hypot (
const double x,
const double y);
6108double gsl_hypot3 (
const double x,
const double y,
const double z);
6109double gsl_acosh (
const double x);
6110double gsl_asinh (
const double x);
6111double gsl_atanh (
const double x);
6113int gsl_isnan (
const double x);
6114int gsl_isinf (
const double x);
6115int gsl_finite (
const double x);
6117double gsl_nan (
void);
6118double gsl_posinf (
void);
6119double gsl_neginf (
void);
6120double gsl_fdiv (
const double x,
const double y);
6122double gsl_coerce_double (
const double x);
6123float gsl_coerce_float (
const float x);
6124long double gsl_coerce_long_double (
const long double x);
6126double gsl_ldexp(
const double x,
const int e);
6127double gsl_frexp(
const double x,
int * e);
6129int gsl_fcmp (
const double x1,
const double x2,
const double epsilon);
6156#ifndef __GSL_INLINE_H__
6157#define __GSL_INLINE_H__
6186# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
6187# define INLINE_DECL inline
6188# define INLINE_FUN inline
6191# define INLINE_FUN extern inline
6201#define GSL_RANGE_COND(x) (x)
6208#ifndef __GSL_MACHINE_H__
6209#define __GSL_MACHINE_H__
6223#define GSL_DBL_EPSILON 2.2204460492503131e-16
6224#define GSL_SQRT_DBL_EPSILON 1.4901161193847656e-08
6225#define GSL_ROOT3_DBL_EPSILON 6.0554544523933429e-06
6226#define GSL_ROOT4_DBL_EPSILON 1.2207031250000000e-04
6227#define GSL_ROOT5_DBL_EPSILON 7.4009597974140505e-04
6228#define GSL_ROOT6_DBL_EPSILON 2.4607833005759251e-03
6229#define GSL_LOG_DBL_EPSILON (-3.6043653389117154e+01)
6231#define GSL_DBL_MIN 2.2250738585072014e-308
6232#define GSL_SQRT_DBL_MIN 1.4916681462400413e-154
6233#define GSL_ROOT3_DBL_MIN 2.8126442852362996e-103
6234#define GSL_ROOT4_DBL_MIN 1.2213386697554620e-77
6235#define GSL_ROOT5_DBL_MIN 2.9476022969691763e-62
6236#define GSL_ROOT6_DBL_MIN 5.3034368905798218e-52
6237#define GSL_LOG_DBL_MIN (-7.0839641853226408e+02)
6239#define GSL_DBL_MAX 1.7976931348623157e+308
6240#define GSL_SQRT_DBL_MAX 1.3407807929942596e+154
6241#define GSL_ROOT3_DBL_MAX 5.6438030941222897e+102
6242#define GSL_ROOT4_DBL_MAX 1.1579208923731620e+77
6243#define GSL_ROOT5_DBL_MAX 4.4765466227572707e+61
6244#define GSL_ROOT6_DBL_MAX 2.3756689782295612e+51
6245#define GSL_LOG_DBL_MAX 7.0978271289338397e+02
6247#define GSL_FLT_EPSILON 1.1920928955078125e-07
6248#define GSL_SQRT_FLT_EPSILON 3.4526698300124393e-04
6249#define GSL_ROOT3_FLT_EPSILON 4.9215666011518501e-03
6250#define GSL_ROOT4_FLT_EPSILON 1.8581361171917516e-02
6251#define GSL_ROOT5_FLT_EPSILON 4.1234622211652937e-02
6252#define GSL_ROOT6_FLT_EPSILON 7.0153878019335827e-02
6253#define GSL_LOG_FLT_EPSILON (-1.5942385152878742e+01)
6255#define GSL_FLT_MIN 1.1754943508222875e-38
6256#define GSL_SQRT_FLT_MIN 1.0842021724855044e-19
6257#define GSL_ROOT3_FLT_MIN 2.2737367544323241e-13
6258#define GSL_ROOT4_FLT_MIN 3.2927225399135965e-10
6259#define GSL_ROOT5_FLT_MIN 2.5944428542140822e-08
6260#define GSL_ROOT6_FLT_MIN 4.7683715820312542e-07
6261#define GSL_LOG_FLT_MIN (-8.7336544750553102e+01)
6263#define GSL_FLT_MAX 3.4028234663852886e+38
6264#define GSL_SQRT_FLT_MAX 1.8446743523953730e+19
6265#define GSL_ROOT3_FLT_MAX 6.9814635196223242e+12
6266#define GSL_ROOT4_FLT_MAX 4.2949672319999986e+09
6267#define GSL_ROOT5_FLT_MAX 5.0859007855960041e+07
6268#define GSL_ROOT6_FLT_MAX 2.6422459233807749e+06
6269#define GSL_LOG_FLT_MAX 8.8722839052068352e+01
6271#define GSL_SFLT_EPSILON 4.8828125000000000e-04
6272#define GSL_SQRT_SFLT_EPSILON 2.2097086912079612e-02
6273#define GSL_ROOT3_SFLT_EPSILON 7.8745065618429588e-02
6274#define GSL_ROOT4_SFLT_EPSILON 1.4865088937534013e-01
6275#define GSL_ROOT5_SFLT_EPSILON 2.1763764082403100e-01
6276#define GSL_ROOT6_SFLT_EPSILON 2.8061551207734325e-01
6277#define GSL_LOG_SFLT_EPSILON (-7.6246189861593985e+00)
6283#define GSL_MACH_EPS GSL_DBL_EPSILON
6302#define GSL_SQRT_MACH_EPS 3.2e-08
6303#define GSL_ROOT3_MACH_EPS 1.0e-05
6304#define GSL_ROOT4_MACH_EPS 0.000178
6305#define GSL_ROOT5_MACH_EPS 0.00100
6306#define GSL_ROOT6_MACH_EPS 0.00316
6307#define GSL_LOG_MACH_EPS (-34.54)
6335#ifndef __GSL_PRECISION_H__
6336#define __GSL_PRECISION_H__
6357#ifndef __GSL_TYPES_H__
6358#define __GSL_TYPES_H__
6365# define GSL_VAR extern __declspec(dllexport)
6367# define GSL_VAR extern __declspec(dllimport)
6370# define GSL_VAR extern
6373# define GSL_VAR extern
6388typedef unsigned int gsl_prec_t;
6395#define _GSL_PREC_T_NUM 3
6402GSL_VAR
const double gsl_prec_eps[];
6403GSL_VAR
const double gsl_prec_sqrt_eps[];
6404GSL_VAR
const double gsl_prec_root3_eps[];
6405GSL_VAR
const double gsl_prec_root4_eps[];
6406GSL_VAR
const double gsl_prec_root5_eps[];
6407GSL_VAR
const double gsl_prec_root6_eps[];
6435#ifndef __GSL_NAN_H__
6436#define __GSL_NAN_H__
6439# define GSL_POSINF INFINITY
6440# define GSL_NEGINF (-INFINITY)
6441#elif defined(HUGE_VAL)
6442# define GSL_POSINF HUGE_VAL
6443# define GSL_NEGINF (-HUGE_VAL)
6445# define GSL_POSINF (gsl_posinf())
6446# define GSL_NEGINF (gsl_neginf())
6451#elif defined(INFINITY)
6452# define GSL_NAN (INFINITY/INFINITY)
6454# define GSL_NAN (gsl_nan())
6457#define GSL_POSZERO (+0.0)
6458#define GSL_NEGZERO (-0.0)
6483#ifndef __GSL_POW_INT_H__
6484#define __GSL_POW_INT_H__
6505#ifndef __GSL_INLINE_H__
6506#define __GSL_INLINE_H__
6535# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
6536# define INLINE_DECL inline
6537# define INLINE_FUN inline
6540# define INLINE_FUN extern inline
6550#define GSL_RANGE_COND(x) (x)
6558INLINE_DECL
double gsl_pow_2(
const double x);
6559INLINE_DECL
double gsl_pow_3(
const double x);
6560INLINE_DECL
double gsl_pow_4(
const double x);
6561INLINE_DECL
double gsl_pow_5(
const double x);
6562INLINE_DECL
double gsl_pow_6(
const double x);
6563INLINE_DECL
double gsl_pow_7(
const double x);
6564INLINE_DECL
double gsl_pow_8(
const double x);
6565INLINE_DECL
double gsl_pow_9(
const double x);
6568INLINE_FUN
double gsl_pow_2(
const double x) {
return x*x; }
6569INLINE_FUN
double gsl_pow_3(
const double x) {
return x*x*x; }
6570INLINE_FUN
double gsl_pow_4(
const double x) {
double x2 = x*x;
return x2*x2; }
6571INLINE_FUN
double gsl_pow_5(
const double x) {
double x2 = x*x;
return x2*x2*x; }
6572INLINE_FUN
double gsl_pow_6(
const double x) {
double x2 = x*x;
return x2*x2*x2; }
6573INLINE_FUN
double gsl_pow_7(
const double x) {
double x3 = x*x*x;
return x3*x3*x; }
6574INLINE_FUN
double gsl_pow_8(
const double x) {
double x2 = x*x;
double x4 = x2*x2;
return x4*x4; }
6575INLINE_FUN
double gsl_pow_9(
const double x) {
double x3 = x*x*x;
return x3*x3*x3; }
6578double gsl_pow_int(
double x,
int n);
6579double gsl_pow_uint(
double x,
unsigned int n);
6606#ifndef __GSL_MINMAX_H__
6607#define __GSL_MINMAX_H__
6628#ifndef __GSL_INLINE_H__
6629#define __GSL_INLINE_H__
6658# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
6659# define INLINE_DECL inline
6660# define INLINE_FUN inline
6663# define INLINE_FUN extern inline
6673#define GSL_RANGE_COND(x) (x)
6684#define GSL_MAX(a,b) ((a) > (b) ? (a) : (b))
6685#define GSL_MIN(a,b) ((a) < (b) ? (a) : (b))
6688double gsl_max (
double a,
double b);
6689double gsl_min (
double a,
double b);
6694INLINE_FUN
int GSL_MAX_INT (
int a,
int b);
6695INLINE_FUN
int GSL_MIN_INT (
int a,
int b);
6696INLINE_FUN
double GSL_MAX_DBL (
double a,
double b);
6697INLINE_FUN
double GSL_MIN_DBL (
double a,
double b);
6698INLINE_FUN
long double GSL_MAX_LDBL (
long double a,
long double b);
6699INLINE_FUN
long double GSL_MIN_LDBL (
long double a,
long double b);
6702GSL_MAX_INT (
int a,
int b)
6704 return GSL_MAX (a, b);
6708GSL_MIN_INT (
int a,
int b)
6710 return GSL_MIN (a, b);
6714GSL_MAX_DBL (
double a,
double b)
6716 return GSL_MAX (a, b);
6720GSL_MIN_DBL (
double a,
double b)
6722 return GSL_MIN (a, b);
6725INLINE_FUN
long double
6726GSL_MAX_LDBL (
long double a,
long double b)
6728 return GSL_MAX (a, b);
6731INLINE_FUN
long double
6732GSL_MIN_LDBL (
long double a,
long double b)
6734 return GSL_MIN (a, b);
6737#define GSL_MAX_INT(a,b) GSL_MAX(a,b)
6738#define GSL_MIN_INT(a,b) GSL_MIN(a,b)
6739#define GSL_MAX_DBL(a,b) GSL_MAX(a,b)
6740#define GSL_MIN_DBL(a,b) GSL_MIN(a,b)
6741#define GSL_MAX_LDBL(a,b) GSL_MAX(a,b)
6742#define GSL_MIN_LDBL(a,b) GSL_MIN(a,b)
6751#define M_E 2.71828182845904523536028747135
6755#define M_LOG2E 1.44269504088896340735992468100
6759#define M_LOG10E 0.43429448190325182765112891892
6763#define M_SQRT2 1.41421356237309504880168872421
6767#define M_SQRT1_2 0.70710678118654752440084436210
6772#define M_SQRT3 1.73205080756887729352744634151
6776#define M_PI 3.14159265358979323846264338328
6780#define M_PI_2 1.57079632679489661923132169164
6784#define M_PI_4 0.78539816339744830961566084582
6788#define M_SQRTPI 1.77245385090551602729816748334
6792#define M_2_SQRTPI 1.12837916709551257389615890312
6796#define M_1_PI 0.31830988618379067153776752675
6800#define M_2_PI 0.63661977236758134307553505349
6804#define M_LN10 2.30258509299404568401799145468
6808#define M_LN2 0.69314718055994530941723212146
6812#define M_LNPI 1.14472988584940017414342735135
6816#define M_EULER 0.57721566490153286060651209008
6823#define GSL_IS_ODD(n) ((n) & 1)
6824#define GSL_IS_EVEN(n) (!(GSL_IS_ODD(n)))
6825#define GSL_SIGN(x) ((x) >= 0.0 ? 1 : -1)
6828#define GSL_IS_REAL(x) (gsl_finite(x))
6834 double (* function) (
double x,
void * params);
6840#define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params)
6846 double (* f) (
double x,
void * params);
6847 double (* df) (
double x,
void * params);
6848 void (* fdf) (
double x,
void * params,
double * f,
double * df);
6854#define GSL_FN_FDF_EVAL_F(FDF,x) (*((FDF)->f))(x,(FDF)->params)
6855#define GSL_FN_FDF_EVAL_DF(FDF,x) (*((FDF)->df))(x,(FDF)->params)
6856#define GSL_FN_FDF_EVAL_F_DF(FDF,x,y,dy) (*((FDF)->fdf))(x,(FDF)->params,(y),(dy))
6863 int (* function) (
double x,
double y[],
void * params);
6869#define GSL_FN_VEC_EVAL(F,x,y) (*((F)->function))(x,y,(F)->params)
6896#ifndef __GSL_ERRNO_H__
6897#define __GSL_ERRNO_H__
6921#ifndef __GSL_TYPES_H__
6922#define __GSL_TYPES_H__
6929# define GSL_VAR extern __declspec(dllexport)
6931# define GSL_VAR extern __declspec(dllimport)
6934# define GSL_VAR extern
6937# define GSL_VAR extern
6985void gsl_error (
const char * reason,
const char * file,
int line,
6988void gsl_stream_printf (
const char *label,
const char *file,
6989 int line,
const char *reason);
6991typedef void gsl_error_handler_t (
const char * reason,
const char * file,
6992 int line,
int gsl_errno);
6994gsl_error_handler_t *
6995gsl_set_error_handler (gsl_error_handler_t * new_handler);
6999#define GSL_ERROR(reason, gsl_errno) \
7001 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
7002 return gsl_errno ; \
7007#define GSL_ERROR_VAL(reason, gsl_errno, value) \
7009 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
7016#define GSL_ERROR_VOID(reason, gsl_errno) \
7018 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
7024#define GSL_ERROR_NULL(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, 0)
7040#define GSL_ERROR_SELECT_2(a,b) ((a) != GSL_SUCCESS ? (a) : ((b) != GSL_SUCCESS ? (b) : GSL_SUCCESS))
7041#define GSL_ERROR_SELECT_3(a,b,c) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_2(b,c))
7042#define GSL_ERROR_SELECT_4(a,b,c,d) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_3(b,c,d))
7043#define GSL_ERROR_SELECT_5(a,b,c,d,e) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_4(b,c,d,e))
7045#define GSL_STATUS_UPDATE(sp, s) do { if ((s) != GSL_SUCCESS) *(sp) = (s);} while(0)
7074#ifndef __GSL_SF_LOG_H__
7075#define __GSL_SF_LOG_H__
7098#ifndef __GSL_SF_RESULT_H__
7099#define __GSL_SF_RESULT_H__
7109#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
7120int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
7137int gsl_sf_log_e(
const double x, gsl_sf_result * result);
7138double gsl_sf_log(
const double x);
7145int gsl_sf_log_abs_e(
const double x, gsl_sf_result * result);
7146double gsl_sf_log_abs(
const double x);
7155int gsl_sf_complex_log_e(
const double zr,
const double zi, gsl_sf_result * lnr, gsl_sf_result * theta);
7162int gsl_sf_log_1plusx_e(
const double x, gsl_sf_result * result);
7163double gsl_sf_log_1plusx(
const double x);
7170int gsl_sf_log_1plusx_mx_e(
const double x, gsl_sf_result * result);
7171double gsl_sf_log_1plusx_mx(
const double x);
7200#ifndef __GSL_SF_TRIG_H__
7201#define __GSL_SF_TRIG_H__
7224#ifndef __GSL_SF_RESULT_H__
7225#define __GSL_SF_RESULT_H__
7237#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
7248int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
7266int gsl_sf_sin_e(
double x, gsl_sf_result * result);
7267double gsl_sf_sin(
const double x);
7272int gsl_sf_cos_e(
double x, gsl_sf_result * result);
7273double gsl_sf_cos(
const double x);
7278int gsl_sf_hypot_e(
const double x,
const double y, gsl_sf_result * result);
7279double gsl_sf_hypot(
const double x,
const double y);
7286int gsl_sf_complex_sin_e(
const double zr,
const double zi, gsl_sf_result * szr, gsl_sf_result * szi);
7293int gsl_sf_complex_cos_e(
const double zr,
const double zi, gsl_sf_result * czr, gsl_sf_result * czi);
7300int gsl_sf_complex_logsin_e(
const double zr,
const double zi, gsl_sf_result * lszr, gsl_sf_result * lszi);
7307int gsl_sf_sinc_e(
double x, gsl_sf_result * result);
7308double gsl_sf_sinc(
const double x);
7315int gsl_sf_lnsinh_e(
const double x, gsl_sf_result * result);
7316double gsl_sf_lnsinh(
const double x);
7323int gsl_sf_lncosh_e(
const double x, gsl_sf_result * result);
7324double gsl_sf_lncosh(
const double x);
7331int gsl_sf_polar_to_rect(
const double r,
const double theta, gsl_sf_result * x, gsl_sf_result * y);
7338int gsl_sf_rect_to_polar(
const double x,
const double y, gsl_sf_result * r, gsl_sf_result * theta);
7342int gsl_sf_sin_err_e(
const double x,
const double dx, gsl_sf_result * result);
7347int gsl_sf_cos_err_e(
const double x,
const double dx, gsl_sf_result * result);
7354int gsl_sf_angle_restrict_symm_e(
double * theta);
7355double gsl_sf_angle_restrict_symm(
const double theta);
7362int gsl_sf_angle_restrict_pos_e(
double * theta);
7363double gsl_sf_angle_restrict_pos(
const double theta);
7366int gsl_sf_angle_restrict_symm_err_e(
const double theta, gsl_sf_result * result);
7368int gsl_sf_angle_restrict_pos_err_e(
const double theta, gsl_sf_result * result);
7387sinh_series(
const double x,
double * result)
7389 const double y = x*x;
7390 const double c0 = 1.0/6.0;
7391 const double c1 = 1.0/120.0;
7392 const double c2 = 1.0/5040.0;
7393 const double c3 = 1.0/362880.0;
7394 const double c4 = 1.0/39916800.0;
7395 const double c5 = 1.0/6227020800.0;
7396 const double c6 = 1.0/1307674368000.0;
7397 const double c7 = 1.0/355687428096000.0;
7398 *result = x*(1.0 + y*(c0+y*(c1+y*(c2+y*(c3+y*(c4+y*(c5+y*(c6+y*c7))))))));
7409cosh_m1_series(
const double x,
double * result)
7411 const double y = x*x;
7412 const double c0 = 0.5;
7413 const double c1 = 1.0/24.0;
7414 const double c2 = 1.0/720.0;
7415 const double c3 = 1.0/40320.0;
7416 const double c4 = 1.0/3628800.0;
7417 const double c5 = 1.0/479001600.0;
7418 const double c6 = 1.0/87178291200.0;
7419 const double c7 = 1.0/20922789888000.0;
7420 const double c8 = 1.0/6402373705728000.0;
7421 *result = y*(c0+y*(c1+y*(c2+y*(c3+y*(c4+y*(c5+y*(c6+y*(c7+y*c8))))))));
7428static double sinc_data[17] = {
7429 1.133648177811747875422,
7430 -0.532677564732557348781,
7431 -0.068293048346633177859,
7432 0.033403684226353715020,
7433 0.001485679893925747818,
7434 -0.000734421305768455295,
7435 -0.000016837282388837229,
7436 0.000008359950146618018,
7437 0.000000117382095601192,
7438 -0.000000058413665922724,
7439 -0.000000000554763755743,
7440 0.000000000276434190426,
7441 0.000000000001895374892,
7442 -0.000000000000945237101,
7443 -0.000000000000004900690,
7444 0.000000000000002445383,
7445 0.000000000000000009925
7447static cheb_series sinc_cs = {
7458static double sin_data[12] = {
7459 -0.3295190160663511504173,
7460 0.0025374284671667991990,
7461 0.0006261928782647355874,
7462 -4.6495547521854042157541e-06,
7463 -5.6917531549379706526677e-07,
7464 3.7283335140973803627866e-09,
7465 3.0267376484747473727186e-10,
7466 -1.7400875016436622322022e-12,
7467 -1.0554678305790849834462e-13,
7468 5.3701981409132410797062e-16,
7469 2.5984137983099020336115e-17,
7470 -1.1821555255364833468288e-19
7472static cheb_series sin_cs = {
7482static double cos_data[11] = {
7483 0.165391825637921473505668118136,
7484 -0.00084852883845000173671196530195,
7485 -0.000210086507222940730213625768083,
7486 1.16582269619760204299639757584e-6,
7487 1.43319375856259870334412701165e-7,
7488 -7.4770883429007141617951330184e-10,
7489 -6.0969994944584252706997438007e-11,
7490 2.90748249201909353949854872638e-13,
7491 1.77126739876261435667156490461e-14,
7492 -7.6896421502815579078577263149e-17,
7493 -3.7363121133079412079201377318e-18
7495static cheb_series cos_cs = {
7511gsl_sf_sin_e(
double x, gsl_sf_result * result)
7516 const double P1 = 7.85398125648498535156e-1;
7517 const double P2 = 3.77489470793079817668e-8;
7518 const double P3 = 2.69515142907905952645e-15;
7520 const double sgn_x = GSL_SIGN(x);
7521 const double abs_x = fabs(x);
7523 if(abs_x < GSL_ROOT4_DBL_EPSILON) {
7524 const double x2 = x*x;
7525 result->val = x * (1.0 - x2/6.0);
7526 result->err = fabs(x*x2*x2 / 100.0);
7530 double sgn_result = sgn_x;
7531 double y = floor(abs_x/(0.25*M_PI));
7532 int octant = y - ldexp(floor(ldexp(y,-3)),3);
7536 if(GSL_IS_ODD(octant)) {
7544 sgn_result = -sgn_result;
7547 z = ((abs_x - y * P1) - y * P2) - y * P3;
7550 gsl_sf_result sin_cs_result;
7551 const double t = 8.0*fabs(z)/M_PI - 1.0;
7552 stat_cs = cheb_eval_e(&sin_cs, t, &sin_cs_result);
7553 result->val = z * (1.0 + z*z * sin_cs_result.val);
7556 gsl_sf_result cos_cs_result;
7557 const double t = 8.0*fabs(z)/M_PI - 1.0;
7558 stat_cs = cheb_eval_e(&cos_cs, t, &cos_cs_result);
7559 result->val = 1.0 - 0.5*z*z * (1.0 - z*z * cos_cs_result.val);
7562 result->val *= sgn_result;
7564 if(abs_x > 1.0/GSL_DBL_EPSILON) {
7565 result->err = fabs(result->val);
7567 else if(abs_x > 100.0/GSL_SQRT_DBL_EPSILON) {
7568 result->err = 2.0 * abs_x * GSL_DBL_EPSILON * fabs(result->val);
7570 else if(abs_x > 0.1/GSL_SQRT_DBL_EPSILON) {
7571 result->err = 2.0 * GSL_SQRT_DBL_EPSILON * fabs(result->val);
7574 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
7584gsl_sf_cos_e(
double x, gsl_sf_result * result)
7589 const double P1 = 7.85398125648498535156e-1;
7590 const double P2 = 3.77489470793079817668e-8;
7591 const double P3 = 2.69515142907905952645e-15;
7593 const double abs_x = fabs(x);
7595 if(abs_x < GSL_ROOT4_DBL_EPSILON) {
7596 const double x2 = x*x;
7597 result->val = 1.0 - 0.5*x2;
7598 result->err = fabs(x2*x2/12.0);
7602 double sgn_result = 1.0;
7603 double y = floor(abs_x/(0.25*M_PI));
7604 int octant = y - ldexp(floor(ldexp(y,-3)),3);
7608 if(GSL_IS_ODD(octant)) {
7616 sgn_result = -sgn_result;
7620 sgn_result = -sgn_result;
7623 z = ((abs_x - y * P1) - y * P2) - y * P3;
7626 gsl_sf_result cos_cs_result;
7627 const double t = 8.0*fabs(z)/M_PI - 1.0;
7628 stat_cs = cheb_eval_e(&cos_cs, t, &cos_cs_result);
7629 result->val = 1.0 - 0.5*z*z * (1.0 - z*z * cos_cs_result.val);
7632 gsl_sf_result sin_cs_result;
7633 const double t = 8.0*fabs(z)/M_PI - 1.0;
7634 stat_cs = cheb_eval_e(&sin_cs, t, &sin_cs_result);
7635 result->val = z * (1.0 + z*z * sin_cs_result.val);
7638 result->val *= sgn_result;
7640 if(abs_x > 1.0/GSL_DBL_EPSILON) {
7641 result->err = fabs(result->val);
7643 else if(abs_x > 100.0/GSL_SQRT_DBL_EPSILON) {
7644 result->err = 2.0 * abs_x * GSL_DBL_EPSILON * fabs(result->val);
7646 else if(abs_x > 0.1/GSL_SQRT_DBL_EPSILON) {
7647 result->err = 2.0 * GSL_SQRT_DBL_EPSILON * fabs(result->val);
7650 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
7660gsl_sf_hypot_e(
const double x,
const double y, gsl_sf_result * result)
7664 if(x == 0.0 && y == 0.0) {
7670 const double a = fabs(x);
7671 const double b = fabs(y);
7672 const double min = GSL_MIN_DBL(a,b);
7673 const double max = GSL_MAX_DBL(a,b);
7674 const double rat = min/max;
7675 const double root_term = sqrt(1.0 + rat*rat);
7677 if(max < GSL_DBL_MAX/root_term) {
7678 result->val = max * root_term;
7679 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
7683 OVERFLOW_ERROR(result);
7690gsl_sf_complex_sin_e(
const double zr,
const double zi,
7691 gsl_sf_result * szr, gsl_sf_result * szi)
7696 if(fabs(zi) < 1.0) {
7698 sinh_series(zi, &sh);
7699 cosh_m1_series(zi, &ch_m1);
7700 szr->val = sin(zr)*(ch_m1 + 1.0);
7701 szi->val = cos(zr)*sh;
7702 szr->err = 2.0 * GSL_DBL_EPSILON * fabs(szr->val);
7703 szi->err = 2.0 * GSL_DBL_EPSILON * fabs(szi->val);
7706 else if(fabs(zi) < GSL_LOG_DBL_MAX) {
7707 double ex = exp(zi);
7708 double ch = 0.5*(ex+1.0/ex);
7709 double sh = 0.5*(ex-1.0/ex);
7710 szr->val = sin(zr)*ch;
7711 szi->val = cos(zr)*sh;
7712 szr->err = 2.0 * GSL_DBL_EPSILON * fabs(szr->val);
7713 szi->err = 2.0 * GSL_DBL_EPSILON * fabs(szi->val);
7717 OVERFLOW_ERROR_2(szr, szi);
7723gsl_sf_complex_cos_e(
const double zr,
const double zi,
7724 gsl_sf_result * czr, gsl_sf_result * czi)
7729 if(fabs(zi) < 1.0) {
7731 sinh_series(zi, &sh);
7732 cosh_m1_series(zi, &ch_m1);
7733 czr->val = cos(zr)*(ch_m1 + 1.0);
7734 czi->val = -sin(zr)*sh;
7735 czr->err = 2.0 * GSL_DBL_EPSILON * fabs(czr->val);
7736 czi->err = 2.0 * GSL_DBL_EPSILON * fabs(czi->val);
7739 else if(fabs(zi) < GSL_LOG_DBL_MAX) {
7740 double ex = exp(zi);
7741 double ch = 0.5*(ex+1.0/ex);
7742 double sh = 0.5*(ex-1.0/ex);
7743 czr->val = cos(zr)*ch;
7744 czi->val = -sin(zr)*sh;
7745 czr->err = 2.0 * GSL_DBL_EPSILON * fabs(czr->val);
7746 czi->err = 2.0 * GSL_DBL_EPSILON * fabs(czi->val);
7750 OVERFLOW_ERROR_2(czr,czi);
7756gsl_sf_complex_logsin_e(
const double zr,
const double zi,
7757 gsl_sf_result * lszr, gsl_sf_result * lszi)
7763 lszr->val = -M_LN2 + zi;
7764 lszi->val = 0.5*M_PI - zr;
7765 lszr->err = 2.0 * GSL_DBL_EPSILON * fabs(lszr->val);
7766 lszi->err = 2.0 * GSL_DBL_EPSILON * fabs(lszi->val);
7768 else if(zi < -60.0) {
7769 lszr->val = -M_LN2 - zi;
7770 lszi->val = -0.5*M_PI + zr;
7771 lszr->err = 2.0 * GSL_DBL_EPSILON * fabs(lszr->val);
7772 lszi->err = 2.0 * GSL_DBL_EPSILON * fabs(lszi->val);
7775 gsl_sf_result sin_r, sin_i;
7777 gsl_sf_complex_sin_e(zr, zi, &sin_r, &sin_i);
7778 status = gsl_sf_complex_log_e(sin_r.val, sin_i.val, lszr, lszi);
7779 if(status == GSL_EDOM) {
7780 DOMAIN_ERROR_2(lszr, lszi);
7783 return gsl_sf_angle_restrict_symm_e(&(lszi->val));
7788gsl_sf_lnsinh_e(
const double x, gsl_sf_result * result)
7793 DOMAIN_ERROR(result);
7795 else if(fabs(x) < 1.0) {
7797 sinh_series(x, &eps);
7798 result->val = log(eps);
7799 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
7802 else if(x < -0.5*GSL_LOG_DBL_EPSILON) {
7803 result->val = x + log(0.5*(1.0 - exp(-2.0*x)));
7804 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
7808 result->val = -M_LN2 + x;
7809 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
7815int gsl_sf_lncosh_e(
const double x, gsl_sf_result * result)
7821 cosh_m1_series(x, &eps);
7822 return gsl_sf_log_1plusx_e(eps, result);
7824 else if(fabs(x) < -0.5*GSL_LOG_DBL_EPSILON) {
7825 result->val = fabs(x) + log(0.5*(1.0 + exp(-2.0*fabs(x))));
7826 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
7830 result->val = -M_LN2 + fabs(x);
7831 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
7848gsl_sf_polar_to_rect(
const double r,
const double theta,
7849 gsl_sf_result * x, gsl_sf_result * y)
7852 int status = gsl_sf_angle_restrict_symm_e(&t);
7855 x->val = r * cos(t);
7856 y->val = r * sin(t);
7857 x->err = r * fabs(s * GSL_DBL_EPSILON * t);
7858 x->err += 2.0 * GSL_DBL_EPSILON * fabs(x->val);
7859 y->err = r * fabs(c * GSL_DBL_EPSILON * t);
7860 y->err += 2.0 * GSL_DBL_EPSILON * fabs(y->val);
7866gsl_sf_rect_to_polar(
const double x,
const double y,
7867 gsl_sf_result * r, gsl_sf_result * theta)
7869 int stat_h = gsl_sf_hypot_e(x, y, r);
7871 theta->val = atan2(y, x);
7872 theta->err = 2.0 * GSL_DBL_EPSILON * fabs(theta->val);
7876 DOMAIN_ERROR(theta);
7881int gsl_sf_angle_restrict_symm_err_e(
const double theta, gsl_sf_result * result)
7884 const double P1 = 4 * 7.8539812564849853515625e-01;
7885 const double P2 = 4 * 3.7748947079307981766760e-08;
7886 const double P3 = 4 * 2.6951514290790594840552e-15;
7887 const double TwoPi = 2*(P1 + P2 + P3);
7889 const double y = GSL_SIGN(theta) * 2 * floor(fabs(theta)/TwoPi);
7890 double r = ((theta - y*P1) - y*P2) - y*P3;
7892 if(r > M_PI) { r = (((r-2*P1)-2*P2)-2*P3); }
7893 else if (r < -M_PI) r = (((r+2*P1)+2*P2)+2*P3);
7897 if(fabs(theta) > 0.0625/GSL_DBL_EPSILON) {
7898 result->val = GSL_NAN;
7899 result->err = GSL_NAN;
7900 GSL_ERROR (
"error", GSL_ELOSS);
7902 else if(fabs(theta) > 0.0625/GSL_SQRT_DBL_EPSILON) {
7903 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val - theta);
7907 double delta = fabs(result->val - theta);
7908 result->err = 2.0 * GSL_DBL_EPSILON * ((delta < M_PI) ? delta : M_PI);
7914int gsl_sf_angle_restrict_pos_err_e(
const double theta, gsl_sf_result * result)
7917 const double P1 = 4 * 7.85398125648498535156e-01;
7918 const double P2 = 4 * 3.77489470793079817668e-08;
7919 const double P3 = 4 * 2.69515142907905952645e-15;
7920 const double TwoPi = 2*(P1 + P2 + P3);
7922 const double y = 2*floor(theta/TwoPi);
7924 double r = ((theta - y*P1) - y*P2) - y*P3;
7926 if(r > TwoPi) {r = (((r-2*P1)-2*P2)-2*P3); }
7928 r = (((r+2*P1)+2*P2)+2*P3);
7933 if(fabs(theta) > 0.0625/GSL_DBL_EPSILON) {
7934 result->val = GSL_NAN;
7935 result->err = fabs(result->val);
7936 GSL_ERROR (
"error", GSL_ELOSS);
7938 else if(fabs(theta) > 0.0625/GSL_SQRT_DBL_EPSILON) {
7939 result->err = GSL_DBL_EPSILON * fabs(result->val - theta);
7943 double delta = fabs(result->val - theta);
7944 result->err = 2.0 * GSL_DBL_EPSILON * ((delta < M_PI) ? delta : M_PI);
7950int gsl_sf_angle_restrict_symm_e(
double * theta)
7953 int stat = gsl_sf_angle_restrict_symm_err_e(*theta, &r);
7959int gsl_sf_angle_restrict_pos_e(
double * theta)
7962 int stat = gsl_sf_angle_restrict_pos_err_e(*theta, &r);
7968int gsl_sf_sin_err_e(
const double x,
const double dx, gsl_sf_result * result)
7970 int stat_s = gsl_sf_sin_e(x, result);
7971 result->err += fabs(cos(x) * dx);
7972 result->err += GSL_DBL_EPSILON * fabs(result->val);
7977int gsl_sf_cos_err_e(
const double x,
const double dx, gsl_sf_result * result)
7979 int stat_c = gsl_sf_cos_e(x, result);
7980 result->err += fabs(sin(x) * dx);
7981 result->err += GSL_DBL_EPSILON * fabs(result->val);
7988gsl_sf_sin_pi_x_e(
const double x, gsl_sf_result * result)
7992 if(-100.0 < x && x < 100.0) {
7993 result->val = sin(M_PI * x) / (M_PI * x);
7994 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
7998 const double N = floor(x + 0.5);
7999 const double f = x - N;
8001 if(N < INT_MAX && N > INT_MIN) {
8005 const int intN = (int)N;
8006 const double sign = ( GSL_IS_ODD(intN) ? -1.0 : 1.0 );
8007 result->val = sign * sin(M_PI * f);
8008 result->err = GSL_DBL_EPSILON * fabs(result->val);
8010 else if(N > 2.0/GSL_DBL_EPSILON || N < -2.0/GSL_DBL_EPSILON) {
8018 const double resN = N - 2.0*floor(0.5*N);
8019 const double sign = ( fabs(resN) > 0.5 ? -1.0 : 1.0 );
8020 result->val = sign * sin(M_PI*f);
8021 result->err = GSL_DBL_EPSILON * fabs(result->val);
8030int gsl_sf_sinc_e(
double x, gsl_sf_result * result)
8035 const double ax = fabs(x);
8042 return cheb_eval_e(&sinc_cs, 2.0*ax-1.0, result);
8044 else if(ax < 100.0) {
8049 result->val = sin(M_PI * ax)/(M_PI * ax);
8050 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
8056 const double r = M_PI*ax;
8058 int stat_s = gsl_sf_sin_e(r, &s);
8059 result->val = s.val/r;
8060 result->err = s.err/r + 2.0 * GSL_DBL_EPSILON * fabs(result->val);
8072double gsl_sf_sin(
const double x)
8074 EVAL_RESULT(gsl_sf_sin_e(x, &result));
8077double gsl_sf_cos(
const double x)
8079 EVAL_RESULT(gsl_sf_cos_e(x, &result));
8082double gsl_sf_hypot(
const double x,
const double y)
8084 EVAL_RESULT(gsl_sf_hypot_e(x, y, &result));
8087double gsl_sf_lnsinh(
const double x)
8089 EVAL_RESULT(gsl_sf_lnsinh_e(x, &result));
8092double gsl_sf_lncosh(
const double x)
8094 EVAL_RESULT(gsl_sf_lncosh_e(x, &result));
8097double gsl_sf_angle_restrict_symm(
const double theta)
8099 double result = theta;
8100 EVAL_DOUBLE(gsl_sf_angle_restrict_symm_e(&result));
8103double gsl_sf_angle_restrict_pos(
const double theta)
8105 double result = theta;
8106 EVAL_DOUBLE(gsl_sf_angle_restrict_pos_e(&result));
8110double gsl_sf_sin_pi_x(
const double x)
8112 EVAL_RESULT(gsl_sf_sin_pi_x_e(x, &result));
8116double gsl_sf_sinc(
const double x)
8118 EVAL_RESULT(gsl_sf_sinc_e(x, &result));
8143#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
8144#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
8146#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
8147#define MARLEY_BUILTIN_GSL_CONFIG_H
8149#define HAVE_INLINE 1
8150#define HAVE_DECL_ISFINITE 1
8151#define HAVE_DECL_ISNAN 1
8152#define HAVE_DECL_ISINF 1
8153#define GSL_COERCE_DBL(x) (x)
8155#define GSL_DISABLE_DEPRECATED 0
8156#define PACKAGE_VERSION "2.8"
8157#define VERSION "2.8"
8186#ifndef __GSL_MATH_H__
8187#define __GSL_MATH_H__
8209#ifndef __GSL_SYS_H__
8210#define __GSL_SYS_H__
8216double gsl_log1p (
const double x);
8217double gsl_expm1 (
const double x);
8218double gsl_hypot (
const double x,
const double y);
8219double gsl_hypot3 (
const double x,
const double y,
const double z);
8220double gsl_acosh (
const double x);
8221double gsl_asinh (
const double x);
8222double gsl_atanh (
const double x);
8224int gsl_isnan (
const double x);
8225int gsl_isinf (
const double x);
8226int gsl_finite (
const double x);
8228double gsl_nan (
void);
8229double gsl_posinf (
void);
8230double gsl_neginf (
void);
8231double gsl_fdiv (
const double x,
const double y);
8233double gsl_coerce_double (
const double x);
8234float gsl_coerce_float (
const float x);
8235long double gsl_coerce_long_double (
const long double x);
8237double gsl_ldexp(
const double x,
const int e);
8238double gsl_frexp(
const double x,
int * e);
8240int gsl_fcmp (
const double x1,
const double x2,
const double epsilon);
8267#ifndef __GSL_INLINE_H__
8268#define __GSL_INLINE_H__
8297# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
8298# define INLINE_DECL inline
8299# define INLINE_FUN inline
8302# define INLINE_FUN extern inline
8312#define GSL_RANGE_COND(x) (x)
8319#ifndef __GSL_MACHINE_H__
8320#define __GSL_MACHINE_H__
8334#define GSL_DBL_EPSILON 2.2204460492503131e-16
8335#define GSL_SQRT_DBL_EPSILON 1.4901161193847656e-08
8336#define GSL_ROOT3_DBL_EPSILON 6.0554544523933429e-06
8337#define GSL_ROOT4_DBL_EPSILON 1.2207031250000000e-04
8338#define GSL_ROOT5_DBL_EPSILON 7.4009597974140505e-04
8339#define GSL_ROOT6_DBL_EPSILON 2.4607833005759251e-03
8340#define GSL_LOG_DBL_EPSILON (-3.6043653389117154e+01)
8342#define GSL_DBL_MIN 2.2250738585072014e-308
8343#define GSL_SQRT_DBL_MIN 1.4916681462400413e-154
8344#define GSL_ROOT3_DBL_MIN 2.8126442852362996e-103
8345#define GSL_ROOT4_DBL_MIN 1.2213386697554620e-77
8346#define GSL_ROOT5_DBL_MIN 2.9476022969691763e-62
8347#define GSL_ROOT6_DBL_MIN 5.3034368905798218e-52
8348#define GSL_LOG_DBL_MIN (-7.0839641853226408e+02)
8350#define GSL_DBL_MAX 1.7976931348623157e+308
8351#define GSL_SQRT_DBL_MAX 1.3407807929942596e+154
8352#define GSL_ROOT3_DBL_MAX 5.6438030941222897e+102
8353#define GSL_ROOT4_DBL_MAX 1.1579208923731620e+77
8354#define GSL_ROOT5_DBL_MAX 4.4765466227572707e+61
8355#define GSL_ROOT6_DBL_MAX 2.3756689782295612e+51
8356#define GSL_LOG_DBL_MAX 7.0978271289338397e+02
8358#define GSL_FLT_EPSILON 1.1920928955078125e-07
8359#define GSL_SQRT_FLT_EPSILON 3.4526698300124393e-04
8360#define GSL_ROOT3_FLT_EPSILON 4.9215666011518501e-03
8361#define GSL_ROOT4_FLT_EPSILON 1.8581361171917516e-02
8362#define GSL_ROOT5_FLT_EPSILON 4.1234622211652937e-02
8363#define GSL_ROOT6_FLT_EPSILON 7.0153878019335827e-02
8364#define GSL_LOG_FLT_EPSILON (-1.5942385152878742e+01)
8366#define GSL_FLT_MIN 1.1754943508222875e-38
8367#define GSL_SQRT_FLT_MIN 1.0842021724855044e-19
8368#define GSL_ROOT3_FLT_MIN 2.2737367544323241e-13
8369#define GSL_ROOT4_FLT_MIN 3.2927225399135965e-10
8370#define GSL_ROOT5_FLT_MIN 2.5944428542140822e-08
8371#define GSL_ROOT6_FLT_MIN 4.7683715820312542e-07
8372#define GSL_LOG_FLT_MIN (-8.7336544750553102e+01)
8374#define GSL_FLT_MAX 3.4028234663852886e+38
8375#define GSL_SQRT_FLT_MAX 1.8446743523953730e+19
8376#define GSL_ROOT3_FLT_MAX 6.9814635196223242e+12
8377#define GSL_ROOT4_FLT_MAX 4.2949672319999986e+09
8378#define GSL_ROOT5_FLT_MAX 5.0859007855960041e+07
8379#define GSL_ROOT6_FLT_MAX 2.6422459233807749e+06
8380#define GSL_LOG_FLT_MAX 8.8722839052068352e+01
8382#define GSL_SFLT_EPSILON 4.8828125000000000e-04
8383#define GSL_SQRT_SFLT_EPSILON 2.2097086912079612e-02
8384#define GSL_ROOT3_SFLT_EPSILON 7.8745065618429588e-02
8385#define GSL_ROOT4_SFLT_EPSILON 1.4865088937534013e-01
8386#define GSL_ROOT5_SFLT_EPSILON 2.1763764082403100e-01
8387#define GSL_ROOT6_SFLT_EPSILON 2.8061551207734325e-01
8388#define GSL_LOG_SFLT_EPSILON (-7.6246189861593985e+00)
8394#define GSL_MACH_EPS GSL_DBL_EPSILON
8413#define GSL_SQRT_MACH_EPS 3.2e-08
8414#define GSL_ROOT3_MACH_EPS 1.0e-05
8415#define GSL_ROOT4_MACH_EPS 0.000178
8416#define GSL_ROOT5_MACH_EPS 0.00100
8417#define GSL_ROOT6_MACH_EPS 0.00316
8418#define GSL_LOG_MACH_EPS (-34.54)
8446#ifndef __GSL_PRECISION_H__
8447#define __GSL_PRECISION_H__
8468#ifndef __GSL_TYPES_H__
8469#define __GSL_TYPES_H__
8476# define GSL_VAR extern __declspec(dllexport)
8478# define GSL_VAR extern __declspec(dllimport)
8481# define GSL_VAR extern
8484# define GSL_VAR extern
8500typedef unsigned int gsl_prec_t;
8507#define _GSL_PREC_T_NUM 3
8514GSL_VAR
const double gsl_prec_eps[];
8515GSL_VAR
const double gsl_prec_sqrt_eps[];
8516GSL_VAR
const double gsl_prec_root3_eps[];
8517GSL_VAR
const double gsl_prec_root4_eps[];
8518GSL_VAR
const double gsl_prec_root5_eps[];
8519GSL_VAR
const double gsl_prec_root6_eps[];
8547#ifndef __GSL_NAN_H__
8548#define __GSL_NAN_H__
8551# define GSL_POSINF INFINITY
8552# define GSL_NEGINF (-INFINITY)
8553#elif defined(HUGE_VAL)
8554# define GSL_POSINF HUGE_VAL
8555# define GSL_NEGINF (-HUGE_VAL)
8557# define GSL_POSINF (gsl_posinf())
8558# define GSL_NEGINF (gsl_neginf())
8563#elif defined(INFINITY)
8564# define GSL_NAN (INFINITY/INFINITY)
8566# define GSL_NAN (gsl_nan())
8569#define GSL_POSZERO (+0.0)
8570#define GSL_NEGZERO (-0.0)
8595#ifndef __GSL_POW_INT_H__
8596#define __GSL_POW_INT_H__
8617#ifndef __GSL_INLINE_H__
8618#define __GSL_INLINE_H__
8647# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
8648# define INLINE_DECL inline
8649# define INLINE_FUN inline
8652# define INLINE_FUN extern inline
8662#define GSL_RANGE_COND(x) (x)
8671INLINE_DECL
double gsl_pow_2(
const double x);
8672INLINE_DECL
double gsl_pow_3(
const double x);
8673INLINE_DECL
double gsl_pow_4(
const double x);
8674INLINE_DECL
double gsl_pow_5(
const double x);
8675INLINE_DECL
double gsl_pow_6(
const double x);
8676INLINE_DECL
double gsl_pow_7(
const double x);
8677INLINE_DECL
double gsl_pow_8(
const double x);
8678INLINE_DECL
double gsl_pow_9(
const double x);
8681INLINE_FUN
double gsl_pow_2(
const double x) {
return x*x; }
8682INLINE_FUN
double gsl_pow_3(
const double x) {
return x*x*x; }
8683INLINE_FUN
double gsl_pow_4(
const double x) {
double x2 = x*x;
return x2*x2; }
8684INLINE_FUN
double gsl_pow_5(
const double x) {
double x2 = x*x;
return x2*x2*x; }
8685INLINE_FUN
double gsl_pow_6(
const double x) {
double x2 = x*x;
return x2*x2*x2; }
8686INLINE_FUN
double gsl_pow_7(
const double x) {
double x3 = x*x*x;
return x3*x3*x; }
8687INLINE_FUN
double gsl_pow_8(
const double x) {
double x2 = x*x;
double x4 = x2*x2;
return x4*x4; }
8688INLINE_FUN
double gsl_pow_9(
const double x) {
double x3 = x*x*x;
return x3*x3*x3; }
8691double gsl_pow_int(
double x,
int n);
8692double gsl_pow_uint(
double x,
unsigned int n);
8719#ifndef __GSL_MINMAX_H__
8720#define __GSL_MINMAX_H__
8741#ifndef __GSL_INLINE_H__
8742#define __GSL_INLINE_H__
8771# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
8772# define INLINE_DECL inline
8773# define INLINE_FUN inline
8776# define INLINE_FUN extern inline
8786#define GSL_RANGE_COND(x) (x)
8798#define GSL_MAX(a,b) ((a) > (b) ? (a) : (b))
8799#define GSL_MIN(a,b) ((a) < (b) ? (a) : (b))
8802double gsl_max (
double a,
double b);
8803double gsl_min (
double a,
double b);
8808INLINE_FUN
int GSL_MAX_INT (
int a,
int b);
8809INLINE_FUN
int GSL_MIN_INT (
int a,
int b);
8810INLINE_FUN
double GSL_MAX_DBL (
double a,
double b);
8811INLINE_FUN
double GSL_MIN_DBL (
double a,
double b);
8812INLINE_FUN
long double GSL_MAX_LDBL (
long double a,
long double b);
8813INLINE_FUN
long double GSL_MIN_LDBL (
long double a,
long double b);
8816GSL_MAX_INT (
int a,
int b)
8818 return GSL_MAX (a, b);
8822GSL_MIN_INT (
int a,
int b)
8824 return GSL_MIN (a, b);
8828GSL_MAX_DBL (
double a,
double b)
8830 return GSL_MAX (a, b);
8834GSL_MIN_DBL (
double a,
double b)
8836 return GSL_MIN (a, b);
8839INLINE_FUN
long double
8840GSL_MAX_LDBL (
long double a,
long double b)
8842 return GSL_MAX (a, b);
8845INLINE_FUN
long double
8846GSL_MIN_LDBL (
long double a,
long double b)
8848 return GSL_MIN (a, b);
8851#define GSL_MAX_INT(a,b) GSL_MAX(a,b)
8852#define GSL_MIN_INT(a,b) GSL_MIN(a,b)
8853#define GSL_MAX_DBL(a,b) GSL_MAX(a,b)
8854#define GSL_MIN_DBL(a,b) GSL_MIN(a,b)
8855#define GSL_MAX_LDBL(a,b) GSL_MAX(a,b)
8856#define GSL_MIN_LDBL(a,b) GSL_MIN(a,b)
8865#define M_E 2.71828182845904523536028747135
8869#define M_LOG2E 1.44269504088896340735992468100
8873#define M_LOG10E 0.43429448190325182765112891892
8877#define M_SQRT2 1.41421356237309504880168872421
8881#define M_SQRT1_2 0.70710678118654752440084436210
8886#define M_SQRT3 1.73205080756887729352744634151
8890#define M_PI 3.14159265358979323846264338328
8894#define M_PI_2 1.57079632679489661923132169164
8898#define M_PI_4 0.78539816339744830961566084582
8902#define M_SQRTPI 1.77245385090551602729816748334
8906#define M_2_SQRTPI 1.12837916709551257389615890312
8910#define M_1_PI 0.31830988618379067153776752675
8914#define M_2_PI 0.63661977236758134307553505349
8918#define M_LN10 2.30258509299404568401799145468
8922#define M_LN2 0.69314718055994530941723212146
8926#define M_LNPI 1.14472988584940017414342735135
8930#define M_EULER 0.57721566490153286060651209008
8939#define GSL_IS_ODD(n) ((n) & 1)
8940#define GSL_IS_EVEN(n) (!(GSL_IS_ODD(n)))
8941#define GSL_SIGN(x) ((x) >= 0.0 ? 1 : -1)
8944#define GSL_IS_REAL(x) (gsl_finite(x))
8950 double (* function) (
double x,
void * params);
8956#define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params)
8962 double (* f) (
double x,
void * params);
8963 double (* df) (
double x,
void * params);
8964 void (* fdf) (
double x,
void * params,
double * f,
double * df);
8970#define GSL_FN_FDF_EVAL_F(FDF,x) (*((FDF)->f))(x,(FDF)->params)
8971#define GSL_FN_FDF_EVAL_DF(FDF,x) (*((FDF)->df))(x,(FDF)->params)
8972#define GSL_FN_FDF_EVAL_F_DF(FDF,x,y,dy) (*((FDF)->fdf))(x,(FDF)->params,(y),(dy))
8979 int (* function) (
double x,
double y[],
void * params);
8985#define GSL_FN_VEC_EVAL(F,x,y) (*((F)->function))(x,y,(F)->params)
9012#ifndef __GSL_ERRNO_H__
9013#define __GSL_ERRNO_H__
9037#ifndef __GSL_TYPES_H__
9038#define __GSL_TYPES_H__
9045# define GSL_VAR extern __declspec(dllexport)
9047# define GSL_VAR extern __declspec(dllimport)
9050# define GSL_VAR extern
9053# define GSL_VAR extern
9103void gsl_error (
const char * reason,
const char * file,
int line,
9106void gsl_stream_printf (
const char *label,
const char *file,
9107 int line,
const char *reason);
9109typedef void gsl_error_handler_t (
const char * reason,
const char * file,
9110 int line,
int gsl_errno);
9112gsl_error_handler_t *
9113gsl_set_error_handler (gsl_error_handler_t * new_handler);
9117#define GSL_ERROR(reason, gsl_errno) \
9119 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
9120 return gsl_errno ; \
9125#define GSL_ERROR_VAL(reason, gsl_errno, value) \
9127 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
9134#define GSL_ERROR_VOID(reason, gsl_errno) \
9136 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
9142#define GSL_ERROR_NULL(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, 0)
9158#define GSL_ERROR_SELECT_2(a,b) ((a) != GSL_SUCCESS ? (a) : ((b) != GSL_SUCCESS ? (b) : GSL_SUCCESS))
9159#define GSL_ERROR_SELECT_3(a,b,c) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_2(b,c))
9160#define GSL_ERROR_SELECT_4(a,b,c,d) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_3(b,c,d))
9161#define GSL_ERROR_SELECT_5(a,b,c,d,e) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_4(b,c,d,e))
9163#define GSL_STATUS_UPDATE(sp, s) do { if ((s) != GSL_SUCCESS) *(sp) = (s);} while(0)
9192#ifndef __GSL_SF_GAMMA_H__
9193#define __GSL_SF_GAMMA_H__
9216#ifndef __GSL_SF_RESULT_H__
9217#define __GSL_SF_RESULT_H__
9229#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
9240int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
9260int gsl_sf_lngamma_e(
double x, gsl_sf_result * result);
9261double gsl_sf_lngamma(
const double x);
9271int gsl_sf_lngamma_sgn_e(
double x, gsl_sf_result * result_lg,
double *sgn);
9279int gsl_sf_gamma_e(
const double x, gsl_sf_result * result);
9280double gsl_sf_gamma(
const double x);
9290int gsl_sf_gammastar_e(
const double x, gsl_sf_result * result);
9291double gsl_sf_gammastar(
const double x);
9299int gsl_sf_gammainv_e(
const double x, gsl_sf_result * result);
9300double gsl_sf_gammainv(
const double x);
9316int gsl_sf_lngamma_complex_e(
double zr,
double zi, gsl_sf_result * lnr, gsl_sf_result * arg);
9324int gsl_sf_taylorcoeff_e(
const int n,
const double x, gsl_sf_result * result);
9325double gsl_sf_taylorcoeff(
const int n,
const double x);
9332int gsl_sf_fact_e(
const unsigned int n, gsl_sf_result * result);
9333double gsl_sf_fact(
const unsigned int n);
9340int gsl_sf_doublefact_e(
const unsigned int n, gsl_sf_result * result);
9341double gsl_sf_doublefact(
const unsigned int n);
9349int gsl_sf_lnfact_e(
const unsigned int n, gsl_sf_result * result);
9350double gsl_sf_lnfact(
const unsigned int n);
9357int gsl_sf_lndoublefact_e(
const unsigned int n, gsl_sf_result * result);
9358double gsl_sf_lndoublefact(
const unsigned int n);
9365int gsl_sf_lnchoose_e(
unsigned int n,
unsigned int m, gsl_sf_result * result);
9366double gsl_sf_lnchoose(
unsigned int n,
unsigned int m);
9373int gsl_sf_choose_e(
unsigned int n,
unsigned int m, gsl_sf_result * result);
9374double gsl_sf_choose(
unsigned int n,
unsigned int m);
9385int gsl_sf_lnpoch_e(
const double a,
const double x, gsl_sf_result * result);
9386double gsl_sf_lnpoch(
const double a,
const double x);
9398int gsl_sf_lnpoch_sgn_e(
const double a,
const double x, gsl_sf_result * result,
double * sgn);
9408int gsl_sf_poch_e(
const double a,
const double x, gsl_sf_result * result);
9409double gsl_sf_poch(
const double a,
const double x);
9418int gsl_sf_pochrel_e(
const double a,
const double x, gsl_sf_result * result);
9419double gsl_sf_pochrel(
const double a,
const double x);
9432int gsl_sf_gamma_inc_Q_e(
const double a,
const double x, gsl_sf_result * result);
9433double gsl_sf_gamma_inc_Q(
const double a,
const double x);
9444int gsl_sf_gamma_inc_P_e(
const double a,
const double x, gsl_sf_result * result);
9445double gsl_sf_gamma_inc_P(
const double a,
const double x);
9457int gsl_sf_gamma_inc_e(
const double a,
const double x, gsl_sf_result * result);
9458double gsl_sf_gamma_inc(
const double a,
const double x);
9467int gsl_sf_lnbeta_e(
const double a,
const double b, gsl_sf_result * result);
9468double gsl_sf_lnbeta(
const double a,
const double b);
9470int gsl_sf_lnbeta_sgn_e(
const double x,
const double y, gsl_sf_result * result,
double * sgn);
9479int gsl_sf_beta_e(
const double a,
const double b, gsl_sf_result * result);
9480double gsl_sf_beta(
const double a,
const double b);
9489int gsl_sf_beta_inc_e(
const double a,
const double b,
const double x, gsl_sf_result * result);
9490double gsl_sf_beta_inc(
const double a,
const double b,
const double x);
9496#define GSL_SF_GAMMA_XMAX 171.0
9499#define GSL_SF_FACT_NMAX 170
9502#define GSL_SF_DOUBLEFACT_NMAX 297
9531#ifndef __GSL_SF_EXP_H__
9532#define __GSL_SF_EXP_H__
9555#ifndef __GSL_SF_RESULT_H__
9556#define __GSL_SF_RESULT_H__
9568#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
9579int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
9609#ifndef __GSL_PRECISION_H__
9610#define __GSL_PRECISION_H__
9631#ifndef __GSL_TYPES_H__
9632#define __GSL_TYPES_H__
9639# define GSL_VAR extern __declspec(dllexport)
9641# define GSL_VAR extern __declspec(dllimport)
9644# define GSL_VAR extern
9647# define GSL_VAR extern
9663typedef unsigned int gsl_prec_t;
9670#define _GSL_PREC_T_NUM 3
9677GSL_VAR
const double gsl_prec_eps[];
9678GSL_VAR
const double gsl_prec_sqrt_eps[];
9679GSL_VAR
const double gsl_prec_root3_eps[];
9680GSL_VAR
const double gsl_prec_root4_eps[];
9681GSL_VAR
const double gsl_prec_root5_eps[];
9682GSL_VAR
const double gsl_prec_root6_eps[];
9699int gsl_sf_exp_e(
const double x, gsl_sf_result * result);
9700double gsl_sf_exp(
const double x);
9707int gsl_sf_exp_e10_e(
const double x, gsl_sf_result_e10 * result);
9714int gsl_sf_exp_mult_e(
const double x,
const double y, gsl_sf_result * result);
9715double gsl_sf_exp_mult(
const double x,
const double y);
9722int gsl_sf_exp_mult_e10_e(
const double x,
const double y, gsl_sf_result_e10 * result);
9729int gsl_sf_expm1_e(
const double x, gsl_sf_result * result);
9730double gsl_sf_expm1(
const double x);
9737int gsl_sf_exprel_e(
const double x, gsl_sf_result * result);
9738double gsl_sf_exprel(
const double x);
9745int gsl_sf_exprel_2_e(
double x, gsl_sf_result * result);
9746double gsl_sf_exprel_2(
const double x);
9756int gsl_sf_exprel_n_e(
const int n,
const double x, gsl_sf_result * result);
9757double gsl_sf_exprel_n(
const int n,
const double x);
9759int gsl_sf_exprel_n_CF_e(
const double n,
const double x, gsl_sf_result * result);
9764int gsl_sf_exp_err_e(
const double x,
const double dx, gsl_sf_result * result);
9768int gsl_sf_exp_err_e10_e(
const double x,
const double dx, gsl_sf_result_e10 * result);
9776int gsl_sf_exp_mult_err_e(
const double x,
const double dx,
const double y,
const double dy, gsl_sf_result * result);
9784int gsl_sf_exp_mult_err_e10_e(
const double x,
const double dx,
const double y,
const double dy, gsl_sf_result_e10 * result);
9798exprel_n_CF(
const double N,
const double x, gsl_sf_result * result)
9800 const double RECUR_BIG = GSL_SQRT_DBL_MAX;
9801 const int maxiter = 5000;
9815 double An = b1*Anm1 + a1*Anm2;
9816 double Bn = b1*Bnm1 + a1*Bnm2;
9824 An = b2*Anm1 + a2*Anm2;
9825 Bn = b2*Bnm1 + a2*Bnm2;
9829 while(n < maxiter) {
9837 an = ( GSL_IS_ODD(n) ? ((n-1)/2)*x : -(N+(n/2)-1)*x );
9839 An = bn*Anm1 + an*Anm2;
9840 Bn = bn*Bnm1 + an*Bnm2;
9842 if(fabs(An) > RECUR_BIG || fabs(Bn) > RECUR_BIG) {
9855 if(fabs(del - 1.0) < 2.0*GSL_DBL_EPSILON)
break;
9859 result->err = 4.0*(n+1.0)*GSL_DBL_EPSILON*fabs(fn);
9862 GSL_ERROR (
"error", GSL_EMAXITER);
9870int gsl_sf_exp_e(
const double x, gsl_sf_result * result)
9872 if(x > GSL_LOG_DBL_MAX) {
9873 OVERFLOW_ERROR(result);
9875 else if(x < GSL_LOG_DBL_MIN) {
9876 UNDERFLOW_ERROR(result);
9879 result->val = exp(x);
9880 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
9885int gsl_sf_exp_e10_e(
const double x, gsl_sf_result_e10 * result)
9888 OVERFLOW_ERROR_E10(result);
9890 else if(x < INT_MIN+1) {
9891 UNDERFLOW_ERROR_E10(result);
9894 const int N = (x > GSL_LOG_DBL_MAX || x < GSL_LOG_DBL_MIN) ? (
int) floor(x/M_LN10) : 0;
9895 result->val = exp(x-N*M_LN10);
9896 result->err = 2.0 * (fabs(x)+1.0) * GSL_DBL_EPSILON * fabs(result->val);
9903int gsl_sf_exp_mult_e(
const double x,
const double y, gsl_sf_result * result)
9905 const double ay = fabs(y);
9912 else if( ( x < 0.5*GSL_LOG_DBL_MAX && x > 0.5*GSL_LOG_DBL_MIN)
9913 && (ay < 0.8*GSL_SQRT_DBL_MAX && ay > 1.2*GSL_SQRT_DBL_MIN)
9915 const double ex = exp(x);
9916 result->val = y * ex;
9917 result->err = (2.0 + fabs(x)) * GSL_DBL_EPSILON * fabs(result->val);
9921 const double ly = log(ay);
9922 const double lnr = x + ly;
9924 if(lnr > GSL_LOG_DBL_MAX - 0.01) {
9925 OVERFLOW_ERROR(result);
9927 else if(lnr < GSL_LOG_DBL_MIN + 0.01) {
9928 UNDERFLOW_ERROR(result);
9931 const double sy = GSL_SIGN(y);
9932 const double M = floor(x);
9933 const double N = floor(ly);
9934 const double a = x - M;
9935 const double b = ly - N;
9936 const double berr = 2.0 * GSL_DBL_EPSILON * (fabs(ly) + fabs(N));
9937 result->val = sy * exp(M+N) * exp(a+b);
9938 result->err = berr * fabs(result->val);
9939 result->err += 2.0 * GSL_DBL_EPSILON * (M + N + 1.0) * fabs(result->val);
9946int gsl_sf_exp_mult_e10_e(
const double x,
const double y, gsl_sf_result_e10 * result)
9948 const double ay = fabs(y);
9956 else if( ( x < 0.5*GSL_LOG_DBL_MAX && x > 0.5*GSL_LOG_DBL_MIN)
9957 && (ay < 0.8*GSL_SQRT_DBL_MAX && ay > 1.2*GSL_SQRT_DBL_MIN)
9959 const double ex = exp(x);
9960 result->val = y * ex;
9961 result->err = (2.0 + fabs(x)) * GSL_DBL_EPSILON * fabs(result->val);
9966 const double ly = log(ay);
9967 const double l10_val = (x + ly)/M_LN10;
9969 if(l10_val > INT_MAX-1) {
9970 OVERFLOW_ERROR_E10(result);
9972 else if(l10_val < INT_MIN+1) {
9973 UNDERFLOW_ERROR_E10(result);
9976 const double sy = GSL_SIGN(y);
9977 const int N = (int) floor(l10_val);
9978 const double arg_val = (l10_val - N) * M_LN10;
9979 const double arg_err = 2.0 * GSL_DBL_EPSILON * (fabs(x) + fabs(ly) + M_LN10*abs(N));
9981 result->val = sy * exp(arg_val);
9982 result->err = arg_err * fabs(result->val);
9983 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
9992int gsl_sf_exp_mult_err_e(
const double x,
const double dx,
9993 const double y,
const double dy,
9994 gsl_sf_result * result)
9996 const double ay = fabs(y);
10000 result->err = fabs(dy * exp(x));
10001 return GSL_SUCCESS;
10003 else if( ( x < 0.5*GSL_LOG_DBL_MAX && x > 0.5*GSL_LOG_DBL_MIN)
10004 && (ay < 0.8*GSL_SQRT_DBL_MAX && ay > 1.2*GSL_SQRT_DBL_MIN)
10006 double ex = exp(x);
10007 result->val = y * ex;
10008 result->err = ex * (fabs(dy) + fabs(y*dx));
10009 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
10010 return GSL_SUCCESS;
10013 const double ly = log(ay);
10014 const double lnr = x + ly;
10016 if(lnr > GSL_LOG_DBL_MAX - 0.01) {
10017 OVERFLOW_ERROR(result);
10019 else if(lnr < GSL_LOG_DBL_MIN + 0.01) {
10020 UNDERFLOW_ERROR(result);
10023 const double sy = GSL_SIGN(y);
10024 const double M = floor(x);
10025 const double N = floor(ly);
10026 const double a = x - M;
10027 const double b = ly - N;
10028 const double eMN = exp(M+N);
10029 const double eab = exp(a+b);
10030 result->val = sy * eMN * eab;
10031 result->err = eMN * eab * 2.0*GSL_DBL_EPSILON;
10032 result->err += eMN * eab * fabs(dy/y);
10033 result->err += eMN * eab * fabs(dx);
10034 return GSL_SUCCESS;
10040int gsl_sf_exp_mult_err_e10_e(
const double x,
const double dx,
10041 const double y,
const double dy,
10042 gsl_sf_result_e10 * result)
10044 const double ay = fabs(y);
10048 result->err = fabs(dy * exp(x));
10050 return GSL_SUCCESS;
10052 else if( ( x < 0.5*GSL_LOG_DBL_MAX && x > 0.5*GSL_LOG_DBL_MIN)
10053 && (ay < 0.8*GSL_SQRT_DBL_MAX && ay > 1.2*GSL_SQRT_DBL_MIN)
10055 const double ex = exp(x);
10056 result->val = y * ex;
10057 result->err = ex * (fabs(dy) + fabs(y*dx));
10058 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
10060 return GSL_SUCCESS;
10063 const double ly = log(ay);
10064 const double l10_val = (x + ly)/M_LN10;
10066 if(l10_val > INT_MAX-1) {
10067 OVERFLOW_ERROR_E10(result);
10069 else if(l10_val < INT_MIN+1) {
10070 UNDERFLOW_ERROR_E10(result);
10073 const double sy = GSL_SIGN(y);
10074 const int N = (int) floor(l10_val);
10075 const double arg_val = (l10_val - N) * M_LN10;
10076 const double arg_err = dy/fabs(y) + dx + 2.0*GSL_DBL_EPSILON*fabs(arg_val);
10078 result->val = sy * exp(arg_val);
10079 result->err = arg_err * fabs(result->val);
10080 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
10083 return GSL_SUCCESS;
10089int gsl_sf_expm1_e(
const double x, gsl_sf_result * result)
10091 const double cut = 0.002;
10093 if(x < GSL_LOG_DBL_MIN) {
10094 result->val = -1.0;
10095 result->err = GSL_DBL_EPSILON;
10096 return GSL_SUCCESS;
10098 else if(x < -cut) {
10099 result->val = exp(x) - 1.0;
10100 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
10101 return GSL_SUCCESS;
10104 result->val = x * (1.0 + 0.5*x*(1.0 + x/3.0*(1.0 + 0.25*x*(1.0 + 0.2*x))));
10105 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
10106 return GSL_SUCCESS;
10108 else if(x < GSL_LOG_DBL_MAX) {
10109 result->val = exp(x) - 1.0;
10110 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
10111 return GSL_SUCCESS;
10114 OVERFLOW_ERROR(result);
10119int gsl_sf_exprel_e(
const double x, gsl_sf_result * result)
10121 const double cut = 0.002;
10123 if(x < GSL_LOG_DBL_MIN) {
10124 result->val = -1.0/x;
10125 result->err = GSL_DBL_EPSILON * fabs(result->val);
10126 return GSL_SUCCESS;
10128 else if(x < -cut) {
10129 result->val = (exp(x) - 1.0)/x;
10130 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
10131 return GSL_SUCCESS;
10134 result->val = (1.0 + 0.5*x*(1.0 + x/3.0*(1.0 + 0.25*x*(1.0 + 0.2*x))));
10135 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
10136 return GSL_SUCCESS;
10138 else if(x < GSL_LOG_DBL_MAX) {
10139 result->val = (exp(x) - 1.0)/x;
10140 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
10141 return GSL_SUCCESS;
10144 OVERFLOW_ERROR(result);
10149int gsl_sf_exprel_2_e(
double x, gsl_sf_result * result)
10151 const double cut = 0.002;
10153 if(x < GSL_LOG_DBL_MIN) {
10154 result->val = -2.0/x*(1.0 + 1.0/x);
10155 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
10156 return GSL_SUCCESS;
10158 else if(x < -cut) {
10159 result->val = 2.0*(exp(x) - 1.0 - x)/(x*x);
10160 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
10161 return GSL_SUCCESS;
10164 result->val = (1.0 + 1.0/3.0*x*(1.0 + 0.25*x*(1.0 + 0.2*x*(1.0 + 1.0/6.0*x))));
10165 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
10166 return GSL_SUCCESS;
10168 else if(x < GSL_LOG_DBL_MAX) {
10169 result->val = 2.0*(exp(x) - 1.0 - x)/(x*x);
10170 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
10171 return GSL_SUCCESS;
10174 OVERFLOW_ERROR(result);
10180gsl_sf_exprel_n_CF_e(
const double N,
const double x, gsl_sf_result * result)
10182 return exprel_n_CF(N, x, result);
10186gsl_sf_exprel_n_e(
const int N,
const double x, gsl_sf_result * result)
10189 DOMAIN_ERROR(result);
10191 else if(x == 0.0) {
10194 return GSL_SUCCESS;
10196 else if(fabs(x) < GSL_ROOT3_DBL_EPSILON * N) {
10197 result->val = 1.0 + x/(N+1) * (1.0 + x/(N+2));
10198 result->err = 2.0 * GSL_DBL_EPSILON;
10199 return GSL_SUCCESS;
10202 return gsl_sf_exp_e(x, result);
10205 return gsl_sf_exprel_e(x, result);
10208 return gsl_sf_exprel_2_e(x, result);
10211 if(x > N && (-x + N*(1.0 + log(x/N)) < GSL_LOG_DBL_EPSILON)) {
10216 gsl_sf_result lnf_N;
10220 gsl_sf_lnfact_e(N, &lnf_N);
10222 lnr_val = x + lnf_N.val - lnterm;
10223 lnr_err = GSL_DBL_EPSILON * (fabs(x) + fabs(lnf_N.val) + fabs(lnterm));
10224 lnr_err += lnf_N.err;
10225 return gsl_sf_exp_err_e(lnr_val, lnr_err, result);
10233 double ln_x = log(x);
10234 gsl_sf_result lnf_N;
10238 gsl_sf_lnfact_e(N, &lnf_N);
10239 lg_N = lnf_N.val - log(N);
10240 lnpre_val = x + lnf_N.val - N*ln_x;
10241 lnpre_err = GSL_DBL_EPSILON * (fabs(x) + fabs(lnf_N.val) + fabs(N*ln_x));
10242 lnpre_err += lnf_N.err;
10243 if(lnpre_val < GSL_LOG_DBL_MAX - 5.0) {
10245 gsl_sf_result bigG_ratio;
10247 int stat_ex = gsl_sf_exp_err_e(lnpre_val, lnpre_err, &pre);
10248 double ln_bigG_ratio_pre = -x + (N-1)*ln_x - lg_N;
10249 double bigGsum = 1.0;
10252 for(k=1; k<N; k++) {
10256 stat_eG = gsl_sf_exp_mult_e(ln_bigG_ratio_pre, bigGsum, &bigG_ratio);
10257 if(stat_eG == GSL_SUCCESS) {
10258 result->val = pre.val * (1.0 - bigG_ratio.val);
10259 result->err = pre.val * (2.0*GSL_DBL_EPSILON + bigG_ratio.err);
10260 result->err += pre.err * fabs(1.0 - bigG_ratio.val);
10261 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
10271 OVERFLOW_ERROR(result);
10274 else if(x > -10.0*N) {
10275 return exprel_n_CF(N, x, result);
10285 for(k=1; k<N; k++) {
10289 result->val = -N/x * sum;
10290 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
10291 return GSL_SUCCESS;
10298gsl_sf_exp_err_e(
const double x,
const double dx, gsl_sf_result * result)
10300 const double adx = fabs(dx);
10304 if(x + adx > GSL_LOG_DBL_MAX) {
10305 OVERFLOW_ERROR(result);
10307 else if(x - adx < GSL_LOG_DBL_MIN) {
10308 UNDERFLOW_ERROR(result);
10311 const double ex = exp(x);
10312 const double edx = exp(adx);
10314 result->err = ex * GSL_MAX_DBL(GSL_DBL_EPSILON, edx - 1.0/edx);
10315 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
10316 return GSL_SUCCESS;
10322gsl_sf_exp_err_e10_e(
const double x,
const double dx, gsl_sf_result_e10 * result)
10324 const double adx = fabs(dx);
10328 if(x + adx > INT_MAX - 1) {
10329 OVERFLOW_ERROR_E10(result);
10331 else if(x - adx < INT_MIN + 1) {
10332 UNDERFLOW_ERROR_E10(result);
10335 const int N = (int)floor(x/M_LN10);
10336 const double ex = exp(x-N*M_LN10);
10338 result->err = ex * (2.0 * GSL_DBL_EPSILON * (fabs(x) + 1.0) + adx);
10340 return GSL_SUCCESS;
10349double gsl_sf_exp(
const double x)
10351 EVAL_RESULT(gsl_sf_exp_e(x, &result));
10354double gsl_sf_exp_mult(
const double x,
const double y)
10356 EVAL_RESULT(gsl_sf_exp_mult_e(x, y, &result));
10359double gsl_sf_expm1(
const double x)
10361 EVAL_RESULT(gsl_sf_expm1_e(x, &result));
10364double gsl_sf_exprel(
const double x)
10366 EVAL_RESULT(gsl_sf_exprel_e(x, &result));
10369double gsl_sf_exprel_2(
const double x)
10371 EVAL_RESULT(gsl_sf_exprel_2_e(x, &result));
10374double gsl_sf_exprel_n(
const int n,
const double x)
10376 EVAL_RESULT(gsl_sf_exprel_n_e(n, x, &result));
10401#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
10402#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
10404#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
10405#define MARLEY_BUILTIN_GSL_CONFIG_H
10407#define HAVE_INLINE 1
10408#define HAVE_DECL_ISFINITE 1
10409#define HAVE_DECL_ISNAN 1
10410#define HAVE_DECL_ISINF 1
10411#define GSL_COERCE_DBL(x) (x)
10413#define GSL_DISABLE_DEPRECATED 0
10414#define PACKAGE_VERSION "2.8"
10415#define VERSION "2.8"
10443#ifndef __GSL_MATH_H__
10444#define __GSL_MATH_H__
10466#ifndef __GSL_SYS_H__
10467#define __GSL_SYS_H__
10473double gsl_log1p (
const double x);
10474double gsl_expm1 (
const double x);
10475double gsl_hypot (
const double x,
const double y);
10476double gsl_hypot3 (
const double x,
const double y,
const double z);
10477double gsl_acosh (
const double x);
10478double gsl_asinh (
const double x);
10479double gsl_atanh (
const double x);
10481int gsl_isnan (
const double x);
10482int gsl_isinf (
const double x);
10483int gsl_finite (
const double x);
10485double gsl_nan (
void);
10486double gsl_posinf (
void);
10487double gsl_neginf (
void);
10488double gsl_fdiv (
const double x,
const double y);
10490double gsl_coerce_double (
const double x);
10491float gsl_coerce_float (
const float x);
10492long double gsl_coerce_long_double (
const long double x);
10494double gsl_ldexp(
const double x,
const int e);
10495double gsl_frexp(
const double x,
int * e);
10497int gsl_fcmp (
const double x1,
const double x2,
const double epsilon);
10524#ifndef __GSL_INLINE_H__
10525#define __GSL_INLINE_H__
10554# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
10555# define INLINE_DECL inline
10556# define INLINE_FUN inline
10558# define INLINE_DECL
10559# define INLINE_FUN extern inline
10562# define INLINE_DECL
10569#define GSL_RANGE_COND(x) (x)
10576#ifndef __GSL_MACHINE_H__
10577#define __GSL_MACHINE_H__
10591#define GSL_DBL_EPSILON 2.2204460492503131e-16
10592#define GSL_SQRT_DBL_EPSILON 1.4901161193847656e-08
10593#define GSL_ROOT3_DBL_EPSILON 6.0554544523933429e-06
10594#define GSL_ROOT4_DBL_EPSILON 1.2207031250000000e-04
10595#define GSL_ROOT5_DBL_EPSILON 7.4009597974140505e-04
10596#define GSL_ROOT6_DBL_EPSILON 2.4607833005759251e-03
10597#define GSL_LOG_DBL_EPSILON (-3.6043653389117154e+01)
10599#define GSL_DBL_MIN 2.2250738585072014e-308
10600#define GSL_SQRT_DBL_MIN 1.4916681462400413e-154
10601#define GSL_ROOT3_DBL_MIN 2.8126442852362996e-103
10602#define GSL_ROOT4_DBL_MIN 1.2213386697554620e-77
10603#define GSL_ROOT5_DBL_MIN 2.9476022969691763e-62
10604#define GSL_ROOT6_DBL_MIN 5.3034368905798218e-52
10605#define GSL_LOG_DBL_MIN (-7.0839641853226408e+02)
10607#define GSL_DBL_MAX 1.7976931348623157e+308
10608#define GSL_SQRT_DBL_MAX 1.3407807929942596e+154
10609#define GSL_ROOT3_DBL_MAX 5.6438030941222897e+102
10610#define GSL_ROOT4_DBL_MAX 1.1579208923731620e+77
10611#define GSL_ROOT5_DBL_MAX 4.4765466227572707e+61
10612#define GSL_ROOT6_DBL_MAX 2.3756689782295612e+51
10613#define GSL_LOG_DBL_MAX 7.0978271289338397e+02
10615#define GSL_FLT_EPSILON 1.1920928955078125e-07
10616#define GSL_SQRT_FLT_EPSILON 3.4526698300124393e-04
10617#define GSL_ROOT3_FLT_EPSILON 4.9215666011518501e-03
10618#define GSL_ROOT4_FLT_EPSILON 1.8581361171917516e-02
10619#define GSL_ROOT5_FLT_EPSILON 4.1234622211652937e-02
10620#define GSL_ROOT6_FLT_EPSILON 7.0153878019335827e-02
10621#define GSL_LOG_FLT_EPSILON (-1.5942385152878742e+01)
10623#define GSL_FLT_MIN 1.1754943508222875e-38
10624#define GSL_SQRT_FLT_MIN 1.0842021724855044e-19
10625#define GSL_ROOT3_FLT_MIN 2.2737367544323241e-13
10626#define GSL_ROOT4_FLT_MIN 3.2927225399135965e-10
10627#define GSL_ROOT5_FLT_MIN 2.5944428542140822e-08
10628#define GSL_ROOT6_FLT_MIN 4.7683715820312542e-07
10629#define GSL_LOG_FLT_MIN (-8.7336544750553102e+01)
10631#define GSL_FLT_MAX 3.4028234663852886e+38
10632#define GSL_SQRT_FLT_MAX 1.8446743523953730e+19
10633#define GSL_ROOT3_FLT_MAX 6.9814635196223242e+12
10634#define GSL_ROOT4_FLT_MAX 4.2949672319999986e+09
10635#define GSL_ROOT5_FLT_MAX 5.0859007855960041e+07
10636#define GSL_ROOT6_FLT_MAX 2.6422459233807749e+06
10637#define GSL_LOG_FLT_MAX 8.8722839052068352e+01
10639#define GSL_SFLT_EPSILON 4.8828125000000000e-04
10640#define GSL_SQRT_SFLT_EPSILON 2.2097086912079612e-02
10641#define GSL_ROOT3_SFLT_EPSILON 7.8745065618429588e-02
10642#define GSL_ROOT4_SFLT_EPSILON 1.4865088937534013e-01
10643#define GSL_ROOT5_SFLT_EPSILON 2.1763764082403100e-01
10644#define GSL_ROOT6_SFLT_EPSILON 2.8061551207734325e-01
10645#define GSL_LOG_SFLT_EPSILON (-7.6246189861593985e+00)
10651#define GSL_MACH_EPS GSL_DBL_EPSILON
10670#define GSL_SQRT_MACH_EPS 3.2e-08
10671#define GSL_ROOT3_MACH_EPS 1.0e-05
10672#define GSL_ROOT4_MACH_EPS 0.000178
10673#define GSL_ROOT5_MACH_EPS 0.00100
10674#define GSL_ROOT6_MACH_EPS 0.00316
10675#define GSL_LOG_MACH_EPS (-34.54)
10703#ifndef __GSL_PRECISION_H__
10704#define __GSL_PRECISION_H__
10725#ifndef __GSL_TYPES_H__
10726#define __GSL_TYPES_H__
10733# define GSL_VAR extern __declspec(dllexport)
10735# define GSL_VAR extern __declspec(dllimport)
10738# define GSL_VAR extern
10741# define GSL_VAR extern
10757typedef unsigned int gsl_prec_t;
10764#define _GSL_PREC_T_NUM 3
10771GSL_VAR
const double gsl_prec_eps[];
10772GSL_VAR
const double gsl_prec_sqrt_eps[];
10773GSL_VAR
const double gsl_prec_root3_eps[];
10774GSL_VAR
const double gsl_prec_root4_eps[];
10775GSL_VAR
const double gsl_prec_root5_eps[];
10776GSL_VAR
const double gsl_prec_root6_eps[];
10804#ifndef __GSL_NAN_H__
10805#define __GSL_NAN_H__
10808# define GSL_POSINF INFINITY
10809# define GSL_NEGINF (-INFINITY)
10810#elif defined(HUGE_VAL)
10811# define GSL_POSINF HUGE_VAL
10812# define GSL_NEGINF (-HUGE_VAL)
10814# define GSL_POSINF (gsl_posinf())
10815# define GSL_NEGINF (gsl_neginf())
10819# define GSL_NAN NAN
10820#elif defined(INFINITY)
10821# define GSL_NAN (INFINITY/INFINITY)
10823# define GSL_NAN (gsl_nan())
10826#define GSL_POSZERO (+0.0)
10827#define GSL_NEGZERO (-0.0)
10852#ifndef __GSL_POW_INT_H__
10853#define __GSL_POW_INT_H__
10874#ifndef __GSL_INLINE_H__
10875#define __GSL_INLINE_H__
10904# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
10905# define INLINE_DECL inline
10906# define INLINE_FUN inline
10908# define INLINE_DECL
10909# define INLINE_FUN extern inline
10912# define INLINE_DECL
10919#define GSL_RANGE_COND(x) (x)
10928INLINE_DECL
double gsl_pow_2(
const double x);
10929INLINE_DECL
double gsl_pow_3(
const double x);
10930INLINE_DECL
double gsl_pow_4(
const double x);
10931INLINE_DECL
double gsl_pow_5(
const double x);
10932INLINE_DECL
double gsl_pow_6(
const double x);
10933INLINE_DECL
double gsl_pow_7(
const double x);
10934INLINE_DECL
double gsl_pow_8(
const double x);
10935INLINE_DECL
double gsl_pow_9(
const double x);
10938INLINE_FUN
double gsl_pow_2(
const double x) {
return x*x; }
10939INLINE_FUN
double gsl_pow_3(
const double x) {
return x*x*x; }
10940INLINE_FUN
double gsl_pow_4(
const double x) {
double x2 = x*x;
return x2*x2; }
10941INLINE_FUN
double gsl_pow_5(
const double x) {
double x2 = x*x;
return x2*x2*x; }
10942INLINE_FUN
double gsl_pow_6(
const double x) {
double x2 = x*x;
return x2*x2*x2; }
10943INLINE_FUN
double gsl_pow_7(
const double x) {
double x3 = x*x*x;
return x3*x3*x; }
10944INLINE_FUN
double gsl_pow_8(
const double x) {
double x2 = x*x;
double x4 = x2*x2;
return x4*x4; }
10945INLINE_FUN
double gsl_pow_9(
const double x) {
double x3 = x*x*x;
return x3*x3*x3; }
10948double gsl_pow_int(
double x,
int n);
10949double gsl_pow_uint(
double x,
unsigned int n);
10976#ifndef __GSL_MINMAX_H__
10977#define __GSL_MINMAX_H__
10998#ifndef __GSL_INLINE_H__
10999#define __GSL_INLINE_H__
11028# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
11029# define INLINE_DECL inline
11030# define INLINE_FUN inline
11032# define INLINE_DECL
11033# define INLINE_FUN extern inline
11036# define INLINE_DECL
11043#define GSL_RANGE_COND(x) (x)
11055#define GSL_MAX(a,b) ((a) > (b) ? (a) : (b))
11056#define GSL_MIN(a,b) ((a) < (b) ? (a) : (b))
11059double gsl_max (
double a,
double b);
11060double gsl_min (
double a,
double b);
11065INLINE_FUN
int GSL_MAX_INT (
int a,
int b);
11066INLINE_FUN
int GSL_MIN_INT (
int a,
int b);
11067INLINE_FUN
double GSL_MAX_DBL (
double a,
double b);
11068INLINE_FUN
double GSL_MIN_DBL (
double a,
double b);
11069INLINE_FUN
long double GSL_MAX_LDBL (
long double a,
long double b);
11070INLINE_FUN
long double GSL_MIN_LDBL (
long double a,
long double b);
11073GSL_MAX_INT (
int a,
int b)
11075 return GSL_MAX (a, b);
11079GSL_MIN_INT (
int a,
int b)
11081 return GSL_MIN (a, b);
11085GSL_MAX_DBL (
double a,
double b)
11087 return GSL_MAX (a, b);
11091GSL_MIN_DBL (
double a,
double b)
11093 return GSL_MIN (a, b);
11096INLINE_FUN
long double
11097GSL_MAX_LDBL (
long double a,
long double b)
11099 return GSL_MAX (a, b);
11102INLINE_FUN
long double
11103GSL_MIN_LDBL (
long double a,
long double b)
11105 return GSL_MIN (a, b);
11108#define GSL_MAX_INT(a,b) GSL_MAX(a,b)
11109#define GSL_MIN_INT(a,b) GSL_MIN(a,b)
11110#define GSL_MAX_DBL(a,b) GSL_MAX(a,b)
11111#define GSL_MIN_DBL(a,b) GSL_MIN(a,b)
11112#define GSL_MAX_LDBL(a,b) GSL_MAX(a,b)
11113#define GSL_MIN_LDBL(a,b) GSL_MIN(a,b)
11122#define M_E 2.71828182845904523536028747135
11126#define M_LOG2E 1.44269504088896340735992468100
11130#define M_LOG10E 0.43429448190325182765112891892
11134#define M_SQRT2 1.41421356237309504880168872421
11138#define M_SQRT1_2 0.70710678118654752440084436210
11143#define M_SQRT3 1.73205080756887729352744634151
11147#define M_PI 3.14159265358979323846264338328
11151#define M_PI_2 1.57079632679489661923132169164
11155#define M_PI_4 0.78539816339744830961566084582
11159#define M_SQRTPI 1.77245385090551602729816748334
11163#define M_2_SQRTPI 1.12837916709551257389615890312
11167#define M_1_PI 0.31830988618379067153776752675
11171#define M_2_PI 0.63661977236758134307553505349
11175#define M_LN10 2.30258509299404568401799145468
11179#define M_LN2 0.69314718055994530941723212146
11183#define M_LNPI 1.14472988584940017414342735135
11187#define M_EULER 0.57721566490153286060651209008
11196#define GSL_IS_ODD(n) ((n) & 1)
11197#define GSL_IS_EVEN(n) (!(GSL_IS_ODD(n)))
11198#define GSL_SIGN(x) ((x) >= 0.0 ? 1 : -1)
11201#define GSL_IS_REAL(x) (gsl_finite(x))
11207 double (* function) (
double x,
void * params);
11213#define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params)
11219 double (* f) (
double x,
void * params);
11220 double (* df) (
double x,
void * params);
11221 void (* fdf) (
double x,
void * params,
double * f,
double * df);
11227#define GSL_FN_FDF_EVAL_F(FDF,x) (*((FDF)->f))(x,(FDF)->params)
11228#define GSL_FN_FDF_EVAL_DF(FDF,x) (*((FDF)->df))(x,(FDF)->params)
11229#define GSL_FN_FDF_EVAL_F_DF(FDF,x,y,dy) (*((FDF)->fdf))(x,(FDF)->params,(y),(dy))
11236 int (* function) (
double x,
double y[],
void * params);
11242#define GSL_FN_VEC_EVAL(F,x,y) (*((F)->function))(x,y,(F)->params)
11269#ifndef __GSL_ERRNO_H__
11270#define __GSL_ERRNO_H__
11294#ifndef __GSL_TYPES_H__
11295#define __GSL_TYPES_H__
11302# define GSL_VAR extern __declspec(dllexport)
11304# define GSL_VAR extern __declspec(dllimport)
11307# define GSL_VAR extern
11310# define GSL_VAR extern
11360void gsl_error (
const char * reason,
const char * file,
int line,
11363void gsl_stream_printf (
const char *label,
const char *file,
11364 int line,
const char *reason);
11366typedef void gsl_error_handler_t (
const char * reason,
const char * file,
11367 int line,
int gsl_errno);
11369gsl_error_handler_t *
11370gsl_set_error_handler (gsl_error_handler_t * new_handler);
11374#define GSL_ERROR(reason, gsl_errno) \
11376 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
11377 return gsl_errno ; \
11382#define GSL_ERROR_VAL(reason, gsl_errno, value) \
11384 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
11391#define GSL_ERROR_VOID(reason, gsl_errno) \
11393 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
11399#define GSL_ERROR_NULL(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, 0)
11415#define GSL_ERROR_SELECT_2(a,b) ((a) != GSL_SUCCESS ? (a) : ((b) != GSL_SUCCESS ? (b) : GSL_SUCCESS))
11416#define GSL_ERROR_SELECT_3(a,b,c) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_2(b,c))
11417#define GSL_ERROR_SELECT_4(a,b,c,d) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_3(b,c,d))
11418#define GSL_ERROR_SELECT_5(a,b,c,d,e) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_4(b,c,d,e))
11420#define GSL_STATUS_UPDATE(sp, s) do { if ((s) != GSL_SUCCESS) *(sp) = (s);} while(0)
11449#ifndef __GSL_SF_EXP_H__
11450#define __GSL_SF_EXP_H__
11473#ifndef __GSL_SF_RESULT_H__
11474#define __GSL_SF_RESULT_H__
11486#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
11497int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
11527#ifndef __GSL_PRECISION_H__
11528#define __GSL_PRECISION_H__
11549#ifndef __GSL_TYPES_H__
11550#define __GSL_TYPES_H__
11557# define GSL_VAR extern __declspec(dllexport)
11559# define GSL_VAR extern __declspec(dllimport)
11562# define GSL_VAR extern
11565# define GSL_VAR extern
11581typedef unsigned int gsl_prec_t;
11588#define _GSL_PREC_T_NUM 3
11595GSL_VAR
const double gsl_prec_eps[];
11596GSL_VAR
const double gsl_prec_sqrt_eps[];
11597GSL_VAR
const double gsl_prec_root3_eps[];
11598GSL_VAR
const double gsl_prec_root4_eps[];
11599GSL_VAR
const double gsl_prec_root5_eps[];
11600GSL_VAR
const double gsl_prec_root6_eps[];
11617int gsl_sf_exp_e(
const double x, gsl_sf_result * result);
11618double gsl_sf_exp(
const double x);
11625int gsl_sf_exp_e10_e(
const double x, gsl_sf_result_e10 * result);
11632int gsl_sf_exp_mult_e(
const double x,
const double y, gsl_sf_result * result);
11633double gsl_sf_exp_mult(
const double x,
const double y);
11640int gsl_sf_exp_mult_e10_e(
const double x,
const double y, gsl_sf_result_e10 * result);
11647int gsl_sf_expm1_e(
const double x, gsl_sf_result * result);
11648double gsl_sf_expm1(
const double x);
11655int gsl_sf_exprel_e(
const double x, gsl_sf_result * result);
11656double gsl_sf_exprel(
const double x);
11663int gsl_sf_exprel_2_e(
double x, gsl_sf_result * result);
11664double gsl_sf_exprel_2(
const double x);
11674int gsl_sf_exprel_n_e(
const int n,
const double x, gsl_sf_result * result);
11675double gsl_sf_exprel_n(
const int n,
const double x);
11677int gsl_sf_exprel_n_CF_e(
const double n,
const double x, gsl_sf_result * result);
11682int gsl_sf_exp_err_e(
const double x,
const double dx, gsl_sf_result * result);
11686int gsl_sf_exp_err_e10_e(
const double x,
const double dx, gsl_sf_result_e10 * result);
11694int gsl_sf_exp_mult_err_e(
const double x,
const double dx,
const double y,
const double dy, gsl_sf_result * result);
11702int gsl_sf_exp_mult_err_e10_e(
const double x,
const double dx,
const double y,
const double dy, gsl_sf_result_e10 * result);
11731#ifndef __GSL_SF_LOG_H__
11732#define __GSL_SF_LOG_H__
11755#ifndef __GSL_SF_RESULT_H__
11756#define __GSL_SF_RESULT_H__
11768#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
11779int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
11796int gsl_sf_log_e(
const double x, gsl_sf_result * result);
11797double gsl_sf_log(
const double x);
11804int gsl_sf_log_abs_e(
const double x, gsl_sf_result * result);
11805double gsl_sf_log_abs(
const double x);
11814int gsl_sf_complex_log_e(
const double zr,
const double zi, gsl_sf_result * lnr, gsl_sf_result * theta);
11821int gsl_sf_log_1plusx_e(
const double x, gsl_sf_result * result);
11822double gsl_sf_log_1plusx(
const double x);
11829int gsl_sf_log_1plusx_mx_e(
const double x, gsl_sf_result * result);
11830double gsl_sf_log_1plusx_mx(
const double x);
11859#ifndef __GSL_SF_PSI_H__
11860#define __GSL_SF_PSI_H__
11883#ifndef __GSL_SF_RESULT_H__
11884#define __GSL_SF_RESULT_H__
11896#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
11907int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
11931int gsl_sf_psi_int_e(
const int n, gsl_sf_result * result);
11932double gsl_sf_psi_int(
const int n);
11940int gsl_sf_psi_e(
const double x, gsl_sf_result * result);
11941double gsl_sf_psi(
const double x);
11948int gsl_sf_psi_1piy_e(
const double y, gsl_sf_result * result);
11949double gsl_sf_psi_1piy(
const double y);
11956int gsl_sf_complex_psi_e(
11959 gsl_sf_result * result_re,
11960 gsl_sf_result * result_im
11969int gsl_sf_psi_1_int_e(
const int n, gsl_sf_result * result);
11970double gsl_sf_psi_1_int(
const int n);
11978int gsl_sf_psi_1_e(
const double x, gsl_sf_result * result);
11979double gsl_sf_psi_1(
const double x);
11987int gsl_sf_psi_n_e(
const int n,
const double x, gsl_sf_result * result);
11988double gsl_sf_psi_n(
const int n,
const double x);
12018#ifndef __GSL_SF_TRIG_H__
12019#define __GSL_SF_TRIG_H__
12042#ifndef __GSL_SF_RESULT_H__
12043#define __GSL_SF_RESULT_H__
12055#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
12066int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
12084int gsl_sf_sin_e(
double x, gsl_sf_result * result);
12085double gsl_sf_sin(
const double x);
12090int gsl_sf_cos_e(
double x, gsl_sf_result * result);
12091double gsl_sf_cos(
const double x);
12096int gsl_sf_hypot_e(
const double x,
const double y, gsl_sf_result * result);
12097double gsl_sf_hypot(
const double x,
const double y);
12104int gsl_sf_complex_sin_e(
const double zr,
const double zi, gsl_sf_result * szr, gsl_sf_result * szi);
12111int gsl_sf_complex_cos_e(
const double zr,
const double zi, gsl_sf_result * czr, gsl_sf_result * czi);
12118int gsl_sf_complex_logsin_e(
const double zr,
const double zi, gsl_sf_result * lszr, gsl_sf_result * lszi);
12125int gsl_sf_sinc_e(
double x, gsl_sf_result * result);
12126double gsl_sf_sinc(
const double x);
12133int gsl_sf_lnsinh_e(
const double x, gsl_sf_result * result);
12134double gsl_sf_lnsinh(
const double x);
12141int gsl_sf_lncosh_e(
const double x, gsl_sf_result * result);
12142double gsl_sf_lncosh(
const double x);
12149int gsl_sf_polar_to_rect(
const double r,
const double theta, gsl_sf_result * x, gsl_sf_result * y);
12156int gsl_sf_rect_to_polar(
const double x,
const double y, gsl_sf_result * r, gsl_sf_result * theta);
12160int gsl_sf_sin_err_e(
const double x,
const double dx, gsl_sf_result * result);
12165int gsl_sf_cos_err_e(
const double x,
const double dx, gsl_sf_result * result);
12172int gsl_sf_angle_restrict_symm_e(
double * theta);
12173double gsl_sf_angle_restrict_symm(
const double theta);
12180int gsl_sf_angle_restrict_pos_e(
double * theta);
12181double gsl_sf_angle_restrict_pos(
const double theta);
12184int gsl_sf_angle_restrict_symm_err_e(
const double theta, gsl_sf_result * result);
12186int gsl_sf_angle_restrict_pos_err_e(
const double theta, gsl_sf_result * result);
12216#ifndef __GSL_SF_GAMMA_H__
12217#define __GSL_SF_GAMMA_H__
12240#ifndef __GSL_SF_RESULT_H__
12241#define __GSL_SF_RESULT_H__
12253#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
12264int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
12284int gsl_sf_lngamma_e(
double x, gsl_sf_result * result);
12285double gsl_sf_lngamma(
const double x);
12295int gsl_sf_lngamma_sgn_e(
double x, gsl_sf_result * result_lg,
double *sgn);
12303int gsl_sf_gamma_e(
const double x, gsl_sf_result * result);
12304double gsl_sf_gamma(
const double x);
12314int gsl_sf_gammastar_e(
const double x, gsl_sf_result * result);
12315double gsl_sf_gammastar(
const double x);
12323int gsl_sf_gammainv_e(
const double x, gsl_sf_result * result);
12324double gsl_sf_gammainv(
const double x);
12340int gsl_sf_lngamma_complex_e(
double zr,
double zi, gsl_sf_result * lnr, gsl_sf_result * arg);
12348int gsl_sf_taylorcoeff_e(
const int n,
const double x, gsl_sf_result * result);
12349double gsl_sf_taylorcoeff(
const int n,
const double x);
12356int gsl_sf_fact_e(
const unsigned int n, gsl_sf_result * result);
12357double gsl_sf_fact(
const unsigned int n);
12364int gsl_sf_doublefact_e(
const unsigned int n, gsl_sf_result * result);
12365double gsl_sf_doublefact(
const unsigned int n);
12373int gsl_sf_lnfact_e(
const unsigned int n, gsl_sf_result * result);
12374double gsl_sf_lnfact(
const unsigned int n);
12381int gsl_sf_lndoublefact_e(
const unsigned int n, gsl_sf_result * result);
12382double gsl_sf_lndoublefact(
const unsigned int n);
12389int gsl_sf_lnchoose_e(
unsigned int n,
unsigned int m, gsl_sf_result * result);
12390double gsl_sf_lnchoose(
unsigned int n,
unsigned int m);
12397int gsl_sf_choose_e(
unsigned int n,
unsigned int m, gsl_sf_result * result);
12398double gsl_sf_choose(
unsigned int n,
unsigned int m);
12409int gsl_sf_lnpoch_e(
const double a,
const double x, gsl_sf_result * result);
12410double gsl_sf_lnpoch(
const double a,
const double x);
12422int gsl_sf_lnpoch_sgn_e(
const double a,
const double x, gsl_sf_result * result,
double * sgn);
12432int gsl_sf_poch_e(
const double a,
const double x, gsl_sf_result * result);
12433double gsl_sf_poch(
const double a,
const double x);
12442int gsl_sf_pochrel_e(
const double a,
const double x, gsl_sf_result * result);
12443double gsl_sf_pochrel(
const double a,
const double x);
12456int gsl_sf_gamma_inc_Q_e(
const double a,
const double x, gsl_sf_result * result);
12457double gsl_sf_gamma_inc_Q(
const double a,
const double x);
12468int gsl_sf_gamma_inc_P_e(
const double a,
const double x, gsl_sf_result * result);
12469double gsl_sf_gamma_inc_P(
const double a,
const double x);
12481int gsl_sf_gamma_inc_e(
const double a,
const double x, gsl_sf_result * result);
12482double gsl_sf_gamma_inc(
const double a,
const double x);
12491int gsl_sf_lnbeta_e(
const double a,
const double b, gsl_sf_result * result);
12492double gsl_sf_lnbeta(
const double a,
const double b);
12494int gsl_sf_lnbeta_sgn_e(
const double x,
const double y, gsl_sf_result * result,
double * sgn);
12503int gsl_sf_beta_e(
const double a,
const double b, gsl_sf_result * result);
12504double gsl_sf_beta(
const double a,
const double b);
12513int gsl_sf_beta_inc_e(
const double a,
const double b,
const double x, gsl_sf_result * result);
12514double gsl_sf_beta_inc(
const double a,
const double b,
const double x);
12520#define GSL_SF_GAMMA_XMAX 171.0
12523#define GSL_SF_FACT_NMAX 170
12526#define GSL_SF_DOUBLEFACT_NMAX 297
12539#define LogRootTwoPi_ 0.9189385332046727418
12544static struct {
int n;
double f;
long i; } fact_table[GSL_SF_FACT_NMAX + 1] = {
12550 { 5, 120.0, 120L },
12551 { 6, 720.0, 720L },
12552 { 7, 5040.0, 5040L },
12553 { 8, 40320.0, 40320L },
12555 { 9, 362880.0, 362880L },
12556 { 10, 3628800.0, 3628800L },
12557 { 11, 39916800.0, 39916800L },
12558 { 12, 479001600.0, 479001600L },
12560 { 13, 6227020800.0, 0 },
12561 { 14, 87178291200.0, 0 },
12562 { 15, 1307674368000.0, 0 },
12563 { 16, 20922789888000.0, 0 },
12564 { 17, 355687428096000.0, 0 },
12565 { 18, 6402373705728000.0, 0 },
12566 { 19, 121645100408832000.0, 0 },
12567 { 20, 2432902008176640000.0, 0 },
12568 { 21, 51090942171709440000.0, 0 },
12569 { 22, 1124000727777607680000.0, 0 },
12570 { 23, 25852016738884976640000.0, 0 },
12571 { 24, 620448401733239439360000.0, 0 },
12572 { 25, 15511210043330985984000000.0, 0 },
12573 { 26, 403291461126605635584000000.0, 0 },
12574 { 27, 10888869450418352160768000000.0, 0 },
12575 { 28, 304888344611713860501504000000.0, 0 },
12576 { 29, 8841761993739701954543616000000.0, 0 },
12577 { 30, 265252859812191058636308480000000.0, 0 },
12578 { 31, 8222838654177922817725562880000000.0, 0 },
12579 { 32, 263130836933693530167218012160000000.0, 0 },
12580 { 33, 8683317618811886495518194401280000000.0, 0 },
12581 { 34, 2.95232799039604140847618609644e38, 0 },
12582 { 35, 1.03331479663861449296666513375e40, 0 },
12583 { 36, 3.71993326789901217467999448151e41, 0 },
12584 { 37, 1.37637530912263450463159795816e43, 0 },
12585 { 38, 5.23022617466601111760007224100e44, 0 },
12586 { 39, 2.03978820811974433586402817399e46, 0 },
12587 { 40, 8.15915283247897734345611269600e47, 0 },
12588 { 41, 3.34525266131638071081700620534e49, 0 },
12589 { 42, 1.40500611775287989854314260624e51, 0 },
12590 { 43, 6.04152630633738356373551320685e52, 0 },
12591 { 44, 2.65827157478844876804362581101e54, 0 },
12592 { 45, 1.19622220865480194561963161496e56, 0 },
12593 { 46, 5.50262215981208894985030542880e57, 0 },
12594 { 47, 2.58623241511168180642964355154e59, 0 },
12595 { 48, 1.24139155925360726708622890474e61, 0 },
12596 { 49, 6.08281864034267560872252163321e62, 0 },
12597 { 50, 3.04140932017133780436126081661e64, 0 },
12598 { 51, 1.55111875328738228022424301647e66, 0 },
12599 { 52, 8.06581751709438785716606368564e67, 0 },
12600 { 53, 4.27488328406002556429801375339e69, 0 },
12601 { 54, 2.30843697339241380472092742683e71, 0 },
12602 { 55, 1.26964033536582759259651008476e73, 0 },
12603 { 56, 7.10998587804863451854045647464e74, 0 },
12604 { 57, 4.05269195048772167556806019054e76, 0 },
12605 { 58, 2.35056133128287857182947491052e78, 0 },
12606 { 59, 1.38683118545689835737939019720e80, 0 },
12607 { 60, 8.32098711274139014427634118320e81, 0 },
12608 { 61, 5.07580213877224798800856812177e83, 0 },
12609 { 62, 3.14699732603879375256531223550e85, 0 },
12610 { 63, 1.982608315404440064116146708360e87, 0 },
12611 { 64, 1.268869321858841641034333893350e89, 0 },
12612 { 65, 8.247650592082470666723170306800e90, 0 },
12613 { 66, 5.443449390774430640037292402480e92, 0 },
12614 { 67, 3.647111091818868528824985909660e94, 0 },
12615 { 68, 2.480035542436830599600990418570e96, 0 },
12616 { 69, 1.711224524281413113724683388810e98, 0 },
12617 { 70, 1.197857166996989179607278372170e100, 0 },
12618 { 71, 8.504785885678623175211676442400e101, 0 },
12619 { 72, 6.123445837688608686152407038530e103, 0 },
12620 { 73, 4.470115461512684340891257138130e105, 0 },
12621 { 74, 3.307885441519386412259530282210e107, 0 },
12622 { 75, 2.480914081139539809194647711660e109, 0 },
12623 { 76, 1.885494701666050254987932260860e111, 0 },
12624 { 77, 1.451830920282858696340707840860e113, 0 },
12625 { 78, 1.132428117820629783145752115870e115, 0 },
12626 { 79, 8.946182130782975286851441715400e116, 0 },
12627 { 80, 7.156945704626380229481153372320e118, 0 },
12628 { 81, 5.797126020747367985879734231580e120, 0 },
12629 { 82, 4.753643337012841748421382069890e122, 0 },
12630 { 83, 3.945523969720658651189747118010e124, 0 },
12631 { 84, 3.314240134565353266999387579130e126, 0 },
12632 { 85, 2.817104114380550276949479442260e128, 0 },
12633 { 86, 2.422709538367273238176552320340e130, 0 },
12634 { 87, 2.107757298379527717213600518700e132, 0 },
12635 { 88, 1.854826422573984391147968456460e134, 0 },
12636 { 89, 1.650795516090846108121691926250e136, 0 },
12637 { 90, 1.485715964481761497309522733620e138, 0 },
12638 { 91, 1.352001527678402962551665687590e140, 0 },
12639 { 92, 1.243841405464130725547532432590e142, 0 },
12640 { 93, 1.156772507081641574759205162310e144, 0 },
12641 { 94, 1.087366156656743080273652852570e146, 0 },
12642 { 95, 1.032997848823905926259970209940e148, 0 },
12643 { 96, 9.916779348709496892095714015400e149, 0 },
12644 { 97, 9.619275968248211985332842594960e151, 0 },
12645 { 98, 9.426890448883247745626185743100e153, 0 },
12646 { 99, 9.332621544394415268169923885600e155, 0 },
12647 { 100, 9.33262154439441526816992388563e157, 0 },
12648 { 101, 9.42594775983835942085162312450e159, 0 },
12649 { 102, 9.61446671503512660926865558700e161, 0 },
12650 { 103, 9.90290071648618040754671525458e163, 0 },
12651 { 104, 1.02990167451456276238485838648e166, 0 },
12652 { 105, 1.08139675824029090050410130580e168, 0 },
12653 { 106, 1.146280563734708354534347384148e170, 0 },
12654 { 107, 1.226520203196137939351751701040e172, 0 },
12655 { 108, 1.324641819451828974499891837120e174, 0 },
12656 { 109, 1.443859583202493582204882102460e176, 0 },
12657 { 110, 1.588245541522742940425370312710e178, 0 },
12658 { 111, 1.762952551090244663872161047110e180, 0 },
12659 { 112, 1.974506857221074023536820372760e182, 0 },
12660 { 113, 2.231192748659813646596607021220e184, 0 },
12661 { 114, 2.543559733472187557120132004190e186, 0 },
12662 { 115, 2.925093693493015690688151804820e188, 0 },
12663 { 116, 3.393108684451898201198256093590e190, 0 },
12664 { 117, 3.96993716080872089540195962950e192, 0 },
12665 { 118, 4.68452584975429065657431236281e194, 0 },
12666 { 119, 5.57458576120760588132343171174e196, 0 },
12667 { 120, 6.68950291344912705758811805409e198, 0 },
12668 { 121, 8.09429852527344373968162284545e200, 0 },
12669 { 122, 9.87504420083360136241157987140e202, 0 },
12670 { 123, 1.21463043670253296757662432419e205, 0 },
12671 { 124, 1.50614174151114087979501416199e207, 0 },
12672 { 125, 1.88267717688892609974376770249e209, 0 },
12673 { 126, 2.37217324288004688567714730514e211, 0 },
12674 { 127, 3.01266001845765954480997707753e213, 0 },
12675 { 128, 3.85620482362580421735677065923e215, 0 },
12676 { 129, 4.97450422247728744039023415041e217, 0 },
12677 { 130, 6.46685548922047367250730439554e219, 0 },
12678 { 131, 8.47158069087882051098456875820e221, 0 },
12679 { 132, 1.11824865119600430744996307608e224, 0 },
12680 { 133, 1.48727070609068572890845089118e226, 0 },
12681 { 134, 1.99294274616151887673732419418e228, 0 },
12682 { 135, 2.69047270731805048359538766215e230, 0 },
12683 { 136, 3.65904288195254865768972722052e232, 0 },
12684 { 137, 5.01288874827499166103492629211e234, 0 },
12685 { 138, 6.91778647261948849222819828311e236, 0 },
12686 { 139, 9.61572319694108900419719561353e238, 0 },
12687 { 140, 1.34620124757175246058760738589e241, 0 },
12688 { 141, 1.89814375907617096942852641411e243, 0 },
12689 { 142, 2.69536413788816277658850750804e245, 0 },
12690 { 143, 3.85437071718007277052156573649e247, 0 },
12691 { 144, 5.55029383273930478955105466055e249, 0 },
12692 { 145, 8.04792605747199194484902925780e251, 0 },
12693 { 146, 1.17499720439091082394795827164e254, 0 },
12694 { 147, 1.72724589045463891120349865931e256, 0 },
12695 { 148, 2.55632391787286558858117801578e258, 0 },
12696 { 149, 3.80892263763056972698595524351e260, 0 },
12697 { 150, 5.71338395644585459047893286526e262, 0 },
12698 { 151, 8.62720977423324043162318862650e264, 0 },
12699 { 152, 1.31133588568345254560672467123e267, 0 },
12700 { 153, 2.00634390509568239477828874699e269, 0 },
12701 { 154, 3.08976961384735088795856467036e271, 0 },
12702 { 155, 4.78914290146339387633577523906e273, 0 },
12703 { 156, 7.47106292628289444708380937294e275, 0 },
12704 { 157, 1.17295687942641442819215807155e278, 0 },
12705 { 158, 1.85327186949373479654360975305e280, 0 },
12706 { 159, 2.94670227249503832650433950735e282, 0 },
12707 { 160, 4.71472363599206132240694321176e284, 0 },
12708 { 161, 7.59070505394721872907517857094e286, 0 },
12709 { 162, 1.22969421873944943411017892849e289, 0 },
12710 { 163, 2.00440157654530257759959165344e291, 0 },
12711 { 164, 3.28721858553429622726333031164e293, 0 },
12712 { 165, 5.42391066613158877498449501421e295, 0 },
12713 { 166, 9.00369170577843736647426172359e297, 0 },
12714 { 167, 1.50361651486499904020120170784e300, 0 },
12715 { 168, 2.52607574497319838753801886917e302, 0 },
12716 { 169, 4.26906800900470527493925188890e304, 0 },
12717 { 170, 7.25741561530799896739672821113e306, 0 },
12753static struct {
int n;
double f;
long i; } doub_fact_table[GSL_SF_DOUBLEFACT_NMAX + 1] = {
12754 { 0, 1.000000000000000000000000000, 1L },
12755 { 1, 1.000000000000000000000000000, 1L },
12756 { 2, 2.000000000000000000000000000, 2L },
12757 { 3, 3.000000000000000000000000000, 3L },
12758 { 4, 8.000000000000000000000000000, 8L },
12759 { 5, 15.00000000000000000000000000, 15L },
12760 { 6, 48.00000000000000000000000000, 48L },
12761 { 7, 105.0000000000000000000000000, 105L },
12762 { 8, 384.0000000000000000000000000, 384L },
12763 { 9, 945.0000000000000000000000000, 945L },
12764 { 10, 3840.000000000000000000000000, 3840L },
12765 { 11, 10395.00000000000000000000000, 10395L },
12766 { 12, 46080.00000000000000000000000, 46080L },
12767 { 13, 135135.0000000000000000000000, 135135L },
12768 { 14, 645120.00000000000000000000000, 645120L },
12769 { 15, 2.02702500000000000000000000000e6, 2027025L },
12770 { 16, 1.03219200000000000000000000000e7, 10321920L },
12771 { 17, 3.4459425000000000000000000000e7, 34459425L },
12772 { 18, 1.85794560000000000000000000000e8, 185794560L },
12773 { 19, 6.5472907500000000000000000000e8, 0 },
12774 { 20, 3.7158912000000000000000000000e9, 0 },
12775 { 21, 1.37493105750000000000000000000e10, 0 },
12776 { 22, 8.1749606400000000000000000000e10, 0 },
12777 { 23, 3.1623414322500000000000000000e11, 0 },
12778 { 24, 1.96199055360000000000000000000e12, 0 },
12779 { 25, 7.9058535806250000000000000000e12, 0 },
12780 { 26, 5.1011754393600000000000000000e13, 0 },
12781 { 27, 2.13458046676875000000000000000e14, 0 },
12782 { 28, 1.42832912302080000000000000000e15, 0 },
12783 { 29, 6.1902833536293750000000000000e15, 0 },
12784 { 30, 4.2849873690624000000000000000e16, 0 },
12785 { 31, 1.91898783962510625000000000000e17, 0 },
12786 { 32, 1.37119595809996800000000000000e18, 0 },
12787 { 33, 6.3326598707628506250000000000e18, 0 },
12788 { 34, 4.6620662575398912000000000000e19, 0 },
12789 { 35, 2.21643095476699771875000000000e20, 0 },
12790 { 36, 1.67834385271436083200000000000e21, 0 },
12791 { 37, 8.2007945326378915593750000000e21, 0 },
12792 { 38, 6.3777066403145711616000000000e22, 0 },
12793 { 39, 3.1983098677287777081562500000e23, 0 },
12794 { 40, 2.55108265612582846464000000000e24, 0 },
12795 { 41, 1.31130704576879886034406250000e25, 0 },
12796 { 42, 1.07145471557284795514880000000e26, 0 },
12797 { 43, 5.6386202968058350994794687500e26, 0 },
12798 { 44, 4.7144007485205310026547200000e27, 0 },
12799 { 45, 2.53737913356262579476576093750e28, 0 },
12800 { 46, 2.16862434431944426122117120000e29, 0 },
12801 { 47, 1.19256819277443412353990764062e30, 0 },
12802 { 48, 1.04093968527333324538616217600e31, 0 },
12803 { 49, 5.8435841445947272053455474391e31, 0 },
12804 { 50, 5.2046984263666662269308108800e32, 0 },
12805 { 51, 2.98022791374331087472622919392e33, 0 },
12806 { 52, 2.70644318171066643800402165760e34, 0 },
12807 { 53, 1.57952079428395476360490147278e35, 0 },
12808 { 54, 1.46147931812375987652217169510e36, 0 },
12809 { 55, 8.6873643685617511998269581003e36, 0 },
12810 { 56, 8.1842841814930553085241614926e37, 0 },
12811 { 57, 4.9517976900801981839013661172e38, 0 },
12812 { 58, 4.7468848252659720789440136657e39, 0 },
12813 { 59, 2.92156063714731692850180600912e40, 0 },
12814 { 60, 2.84813089515958324736640819942e41, 0 },
12815 { 61, 1.78215198865986332638610166557e42, 0 },
12816 { 62, 1.76584115499894161336717308364e43, 0 },
12817 { 63, 1.12275575285571389562324404931e44, 0 },
12818 { 64, 1.13013833919932263255499077353e45, 0 },
12819 { 65, 7.2979123935621403215510863205e45, 0 },
12820 { 66, 7.4589130387155293748629391053e46, 0 },
12821 { 67, 4.8896013036866340154392278347e47, 0 },
12822 { 68, 5.0720608663265599749067985916e48, 0 },
12823 { 69, 3.3738248995437774706530672060e49, 0 },
12824 { 70, 3.5504426064285919824347590141e50, 0 },
12825 { 71, 2.39541567867608200416367771623e51, 0 },
12826 { 72, 2.55631867662858622735302649017e52, 0 },
12827 { 73, 1.74865344543353986303948473285e53, 0 },
12828 { 74, 1.89167582070515380824123960272e54, 0 },
12829 { 75, 1.31149008407515489727961354964e55, 0 },
12830 { 76, 1.43767362373591689426334209807e56, 0 },
12831 { 77, 1.00984736473786927090530243322e57, 0 },
12832 { 78, 1.12138542651401517752540683649e58, 0 },
12833 { 79, 7.9777941814291672401518892225e58, 0 },
12834 { 80, 8.9710834121121214202032546920e59, 0 },
12835 { 81, 6.4620132869576254645230302702e60, 0 },
12836 { 82, 7.3562883979319395645666688474e61, 0 },
12837 { 83, 5.3634710281748291355541151243e62, 0 },
12838 { 84, 6.1792822542628292342360018318e63, 0 },
12839 { 85, 4.5589503739486047652209978556e64, 0 },
12840 { 86, 5.3141827386660331414429615754e65, 0 },
12841 { 87, 3.9662868253352861457422681344e66, 0 },
12842 { 88, 4.6764808100261091644698061863e67, 0 },
12843 { 89, 3.5299952745484046697106186396e68, 0 },
12844 { 90, 4.2088327290234982480228255677e69, 0 },
12845 { 91, 3.2122956998390482494366629620e70, 0 },
12846 { 92, 3.8721261107016183881809995223e71, 0 },
12847 { 93, 2.98743500085031487197609655470e72, 0 },
12848 { 94, 3.6397985440595212848901395509e73, 0 },
12849 { 95, 2.83806325080779912837729172696e74, 0 },
12850 { 96, 3.4942066022971404334945339689e75, 0 },
12851 { 97, 2.75292135328356515452597297515e76, 0 },
12852 { 98, 3.4243224702511976248246432895e77, 0 },
12853 { 99, 2.72539213975072950298071324540e78, 0 },
12854 { 100, 3.4243224702511976248246432895e79, 0 },
12855 { 101, 2.75264606114823679801052037785e80, 0 },
12856 { 102, 3.4928089196562215773211361553e81, 0 },
12857 { 103, 2.83522544298268390195083598919e82, 0 },
12858 { 104, 3.6325212764424704404139816015e83, 0 },
12859 { 105, 2.97698671513181809704837778865e84, 0 },
12860 { 106, 3.8504725530290186668388204976e85, 0 },
12861 { 107, 3.1853757851910453638417642339e86, 0 },
12862 { 108, 4.1585103572713401601859261374e87, 0 },
12863 { 109, 3.4720596058582394465875230149e88, 0 },
12864 { 110, 4.5743613929984741762045187512e89, 0 },
12865 { 111, 3.8539861625026457857121505465e90, 0 },
12866 { 112, 5.1232847601582910773490610013e91, 0 },
12867 { 113, 4.3550043636279897378547301176e92, 0 },
12868 { 114, 5.8405446265804518281779295415e93, 0 },
12869 { 115, 5.0082550181721881985329396352e94, 0 },
12870 { 116, 6.7750317668333241206863982681e95, 0 },
12871 { 117, 5.8596583712614601922835393732e96, 0 },
12872 { 118, 7.9945374848633224624099499564e97, 0 },
12873 { 119, 6.9729934618011376288174118541e98, 0 },
12874 { 120, 9.5934449818359869548919399477e99, 0 },
12875 { 121, 8.4373220887793765308690683435e100, 0 },
12876 { 122, 1.17040028778399040849681667362e102, 0 },
12877 { 123, 1.03779061691986331329689540625e103, 0 },
12878 { 124, 1.45129635685214810653605267528e104, 0 },
12879 { 125, 1.29723827114982914162111925781e105, 0 },
12880 { 126, 1.82863340963370661423542637086e106, 0 },
12881 { 127, 1.64749260436028300985882145742e107, 0 },
12882 { 128, 2.34065076433114446622134575470e108, 0 },
12883 { 129, 2.12526545962476508271787968008e109, 0 },
12884 { 130, 3.04284599363048780608774948111e110, 0 },
12885 { 131, 2.78409775210844225836042238090e111, 0 },
12886 { 132, 4.0165567115922439040358293151e112, 0 },
12887 { 133, 3.7028500103042282036193617666e113, 0 },
12888 { 134, 5.3821859935336068314080112822e114, 0 },
12889 { 135, 4.9988475139107080748861383849e115, 0 },
12890 { 136, 7.3197729512057052907148953438e116, 0 },
12891 { 137, 6.8484210940576700625940095873e117, 0 },
12892 { 138, 1.01012866726638733011865555744e119, 0 },
12893 { 139, 9.5193053207401613870056733264e119, 0 },
12894 { 140, 1.41418013417294226216611778042e121, 0 },
12895 { 141, 1.34222205022436275556779993902e122, 0 },
12896 { 142, 2.00813579052557801227588724819e123, 0 },
12897 { 143, 1.91937753182083874046195391280e124, 0 },
12898 { 144, 2.89171553835683233767727763739e125, 0 },
12899 { 145, 2.78309742114021617366983317355e126, 0 },
12900 { 146, 4.2219046860009752130088253506e127, 0 },
12901 { 147, 4.0911532090761177752946547651e128, 0 },
12902 { 148, 6.2484189352814433152530615189e129, 0 },
12903 { 149, 6.0958182815234154851890356000e130, 0 },
12904 { 150, 9.3726284029221649728795922783e131, 0 },
12905 { 151, 9.2046856051003573826354437561e132, 0 },
12906 { 152, 1.42463951724416907587769802630e134, 0 },
12907 { 153, 1.40831689758035467954322289468e135, 0 },
12908 { 154, 2.19394485655602037685165496051e136, 0 },
12909 { 155, 2.18289119124954975329199548675e137, 0 },
12910 { 156, 3.4225539762273917878885817384e138, 0 },
12911 { 157, 3.4271391702617931126684329142e139, 0 },
12912 { 158, 5.4076352824392790248639591467e140, 0 },
12913 { 159, 5.4491512807162510491428083336e141, 0 },
12914 { 160, 8.6522164519028464397823346347e142, 0 },
12915 { 161, 8.7731335619531641891199214170e143, 0 },
12916 { 162, 1.40165906520826112324473821082e145, 0 },
12917 { 163, 1.43002077059836576282654719098e146, 0 },
12918 { 164, 2.29872086694154824212137066574e147, 0 },
12919 { 165, 2.35953427148730350866380286512e148, 0 },
12920 { 166, 3.8158766391229700819214753051e149, 0 },
12921 { 167, 3.9404222333837968594685507847e150, 0 },
12922 { 168, 6.4106727537265897376280785126e151, 0 },
12923 { 169, 6.6593135744186166925018508262e152, 0 },
12924 { 170, 1.08981436813352025539677334714e154, 0 },
12925 { 171, 1.13874262122558345441781649128e155, 0 },
12926 { 172, 1.87448071318965483928245015709e156, 0 },
12927 { 173, 1.97002473472025937614282252992e157, 0 },
12928 { 174, 3.2615964409499994203514632733e158, 0 },
12929 { 175, 3.4475432857604539082499394274e159, 0 },
12930 { 176, 5.7404097360719989798185753611e160, 0 },
12931 { 177, 6.1021516157960034176023927864e161, 0 },
12932 { 178, 1.02179293302081581840770641427e163, 0 },
12933 { 179, 1.09228513922748461175082830877e164, 0 },
12934 { 180, 1.83922727943746847313387154568e165, 0 },
12935 { 181, 1.97703610200174714726899923887e166, 0 },
12936 { 182, 3.3473936485761926211036462131e167, 0 },
12937 { 183, 3.6179760666631972795022686071e168, 0 },
12938 { 184, 6.1592043133801944228307090322e169, 0 },
12939 { 185, 6.6932557233269149670791969232e170, 0 },
12940 { 186, 1.14561200228871616264651187999e172, 0 },
12941 { 187, 1.25163882026213309884380982464e173, 0 },
12942 { 188, 2.15375056430278638577544233437e174, 0 },
12943 { 189, 2.36559737029543155681480056857e175, 0 },
12944 { 190, 4.0921260721752941329733404353e176, 0 },
12945 { 191, 4.5182909772642742735162690860e177, 0 },
12946 { 192, 7.8568820585765647353088136358e178, 0 },
12947 { 193, 8.7203015861200493478863993359e179, 0 },
12948 { 194, 1.52423511936385355864990984535e181, 0 },
12949 { 195, 1.70045880929340962283784787050e182, 0 },
12950 { 196, 2.98750083395315297495382329688e183, 0 },
12951 { 197, 3.3499038543080169569905603049e184, 0 },
12952 { 198, 5.9152516512272428904085701278e185, 0 },
12953 { 199, 6.6663086700729537444112150067e186, 0 },
12954 { 200, 1.18305033024544857808171402556e188, 0 },
12955 { 201, 1.33992804268466370262665421635e189, 0 },
12956 { 202, 2.38976166709580612772506233164e190, 0 },
12957 { 203, 2.72005392664986731633210805920e191, 0 },
12958 { 204, 4.8751138008754445005591271565e192, 0 },
12959 { 205, 5.5761105496322279984808215214e193, 0 },
12960 { 206, 1.00427344298034156711518019425e195, 0 },
12961 { 207, 1.15425488377387119568553005492e196, 0 },
12962 { 208, 2.08888876139911045959957480403e197, 0 },
12963 { 209, 2.41239270708739079898275781478e198, 0 },
12964 { 210, 4.3866663989381319651591070885e199, 0 },
12965 { 211, 5.0901486119543945858536189892e200, 0 },
12966 { 212, 9.2997327657488397661373070276e201, 0 },
12967 { 213, 1.08420165434628604678682084470e203, 0 },
12968 { 214, 1.99014281187025170995338370390e204, 0 },
12969 { 215, 2.33103355684451500059166481610e205, 0 },
12970 { 216, 4.2987084736397436934993088004e206, 0 },
12971 { 217, 5.0583428183525975512839126509e207, 0 },
12972 { 218, 9.3711844725346412518284931849e208, 0 },
12973 { 219, 1.10777707721921886373117687056e210, 0 },
12974 { 220, 2.06166058395762107540226850068e211, 0 },
12975 { 221, 2.44818734065447368884590088393e212, 0 },
12976 { 222, 4.5768864963859187873930360715e213, 0 },
12977 { 223, 5.4594577696594763261263589712e214, 0 },
12978 { 224, 1.02522257519044580837604008002e216, 0 },
12979 { 225, 1.22837799817338217337843076851e217, 0 },
12980 { 226, 2.31700301993040752692985058084e218, 0 },
12981 { 227, 2.78841805585357753356903784452e219, 0 },
12982 { 228, 5.2827668854413291614000593243e220, 0 },
12983 { 229, 6.3854773479046925518730966640e221, 0 },
12984 { 230, 1.21503638365150570712201364459e223, 0 },
12985 { 231, 1.47504526736598397948268532937e224, 0 },
12986 { 232, 2.81888441007149324052307165546e225, 0 },
12987 { 233, 3.4368554729627426721946568174e226, 0 },
12988 { 234, 6.5961895195672941828239876738e227, 0 },
12989 { 235, 8.0766103614624452796574435210e228, 0 },
12990 { 236, 1.55670072661788142714646109101e230, 0 },
12991 { 237, 1.91415665566659953127881411447e231, 0 },
12992 { 238, 3.7049477293505577966085773966e232, 0 },
12993 { 239, 4.5748344070431728797563657336e233, 0 },
12994 { 240, 8.8918745504413387118605857518e234, 0 },
12995 { 241, 1.10253509209740466402128414180e236, 0 },
12996 { 242, 2.15183364120680396827026175195e237, 0 },
12997 { 243, 2.67916027379669333357172046456e238, 0 },
12998 { 244, 5.2504740845446016825794386748e239, 0 },
12999 { 245, 6.5639426708018986672507151382e240, 0 },
13000 { 246, 1.29161662479797201391454191399e242, 0 },
13001 { 247, 1.62129383968806897081092663913e243, 0 },
13002 { 248, 3.2032092294989705945080639467e244, 0 },
13003 { 249, 4.0370216608232917373192073314e245, 0 },
13004 { 250, 8.0080230737474264862701598667e246, 0 },
13005 { 251, 1.01329243686664622606712104019e248, 0 },
13006 { 252, 2.01802181458435147454008028642e249, 0 },
13007 { 253, 2.56362986527261495194981623168e250, 0 },
13008 { 254, 5.1257754090442527453318039275e251, 0 },
13009 { 255, 6.5372561564451681274720313908e252, 0 },
13010 { 256, 1.31219850471532870280494180544e254, 0 },
13011 { 257, 1.68007483220640820876031206743e255, 0 },
13012 { 258, 3.3854721421655480532367498580e256, 0 },
13013 { 259, 4.3513938154145972606892082546e257, 0 },
13014 { 260, 8.8022275696304249384155496309e258, 0 },
13015 { 261, 1.13571378582320988503988335446e260, 0 },
13016 { 262, 2.30618362324317133386487400329e261, 0 },
13017 { 263, 2.98692725671504199765489322224e262, 0 },
13018 { 264, 6.0883247653619723214032673687e263, 0 },
13019 { 265, 7.9153572302948612937854670389e264, 0 },
13020 { 266, 1.61949438758628463749326912007e266, 0 },
13021 { 267, 2.11340038048872796544071969939e267, 0 },
13022 { 268, 4.3402449587312428284819612418e268, 0 },
13023 { 269, 5.6850470235146782270355359914e269, 0 },
13024 { 270, 1.17186613885743556369012953528e271, 0 },
13025 { 271, 1.54064774337247779952663025366e272, 0 },
13026 { 272, 3.1874758976922247332371523360e273, 0 },
13027 { 273, 4.2059683394068643927077005925e274, 0 },
13028 { 274, 8.7336839596766957690697974006e275, 0 },
13029 { 275, 1.15664129333688770799461766294e277, 0 },
13030 { 276, 2.41049677287076803226326408256e278, 0 },
13031 { 277, 3.2038963825431789511450909263e279, 0 },
13032 { 278, 6.7011810285807351296918741495e280, 0 },
13033 { 279, 8.9388709072954692736948036845e281, 0 },
13034 { 280, 1.87633068800260583631372476186e283, 0 },
13035 { 281, 2.51182272495002686590823983534e284, 0 },
13036 { 282, 5.2912525401673484584047038284e285, 0 },
13037 { 283, 7.1084583116085760305203187340e286, 0 },
13038 { 284, 1.50271572140752696218693588728e288, 0 },
13039 { 285, 2.02591061880844416869829083919e289, 0 },
13040 { 286, 4.2977669632255271118546366376e290, 0 },
13041 { 287, 5.8143634759802347641640947085e291, 0 },
13042 { 288, 1.23775688540895180821413535163e293, 0 },
13043 { 289, 1.68035104455828784684342337075e294, 0 },
13044 { 290, 3.5894949676859602438209925197e295, 0 },
13045 { 291, 4.8898215396646176343143620089e296, 0 },
13046 { 292, 1.04813253056430039119572981576e298, 0 },
13047 { 293, 1.43271771112173296685410806860e299, 0 },
13048 { 294, 3.08150963985904315011544565835e300, 0 },
13049 { 295, 4.2265172478091122522196188024e301, 0 },
13050 { 296, 9.1212685339827677243417191487e302, 0 },
13051 { 297, 1.25527562259930633890922678431e304, 0 },
13062static double gstar_a_data[30] = {
13063 2.16786447866463034423060819465,
13064 -0.05533249018745584258035832802,
13065 0.01800392431460719960888319748,
13066 -0.00580919269468937714480019814,
13067 0.00186523689488400339978881560,
13068 -0.00059746524113955531852595159,
13069 0.00019125169907783353925426722,
13070 -0.00006124996546944685735909697,
13071 0.00001963889633130842586440945,
13072 -6.3067741254637180272515795142e-06,
13073 2.0288698405861392526872789863e-06,
13074 -6.5384896660838465981983750582e-07,
13075 2.1108698058908865476480734911e-07,
13076 -6.8260714912274941677892994580e-08,
13077 2.2108560875880560555583978510e-08,
13078 -7.1710331930255456643627187187e-09,
13079 2.3290892983985406754602564745e-09,
13080 -7.5740371598505586754890405359e-10,
13081 2.4658267222594334398525312084e-10,
13082 -8.0362243171659883803428749516e-11,
13083 2.6215616826341594653521346229e-11,
13084 -8.5596155025948750540420068109e-12,
13085 2.7970831499487963614315315444e-12,
13086 -9.1471771211886202805502562414e-13,
13087 2.9934720198063397094916415927e-13,
13088 -9.8026575909753445931073620469e-14,
13089 3.2116773667767153777571410671e-14,
13090 -1.0518035333878147029650507254e-14,
13091 3.4144405720185253938994854173e-15,
13092 -1.0115153943081187052322643819e-15
13094static cheb_series gstar_a_cs = {
13105static double gstar_b_data[] = {
13106 0.0057502277273114339831606096782,
13107 0.0004496689534965685038254147807,
13108 -0.0001672763153188717308905047405,
13109 0.0000615137014913154794776670946,
13110 -0.0000223726551711525016380862195,
13111 8.0507405356647954540694800545e-06,
13112 -2.8671077107583395569766746448e-06,
13113 1.0106727053742747568362254106e-06,
13114 -3.5265558477595061262310873482e-07,
13115 1.2179216046419401193247254591e-07,
13116 -4.1619640180795366971160162267e-08,
13117 1.4066283500795206892487241294e-08,
13118 -4.6982570380537099016106141654e-09,
13119 1.5491248664620612686423108936e-09,
13120 -5.0340936319394885789686867772e-10,
13121 1.6084448673736032249959475006e-10,
13122 -5.0349733196835456497619787559e-11,
13123 1.5357154939762136997591808461e-11,
13124 -4.5233809655775649997667176224e-12,
13125 1.2664429179254447281068538964e-12,
13126 -3.2648287937449326771785041692e-13,
13127 7.1528272726086133795579071407e-14,
13128 -9.4831735252566034505739531258e-15,
13129 -2.3124001991413207293120906691e-15,
13130 2.8406613277170391482590129474e-15,
13131 -1.7245370321618816421281770927e-15,
13132 8.6507923128671112154695006592e-16,
13133 -3.9506563665427555895391869919e-16,
13134 1.6779342132074761078792361165e-16,
13135 -6.0483153034414765129837716260e-17
13137static cheb_series gstar_b_cs = {
13146static double lanczos_7_c[9] = {
13147 0.99999999999980993227684700473478,
13148 676.520368121885098567009190444019,
13149 -1259.13921672240287047156078755283,
13150 771.3234287776530788486528258894,
13151 -176.61502916214059906584551354,
13152 12.507343278686904814458936853,
13153 -0.13857109526572011689554707,
13154 9.984369578019570859563e-6,
13155 1.50563273514931155834e-7
13163lngamma_lanczos_complex(
double zr,
double zi, gsl_sf_result * yr, gsl_sf_result * yi)
13166 gsl_sf_result log1_r, log1_i;
13167 gsl_sf_result logAg_r, logAg_i;
13169 double yi_tmp_val, yi_tmp_err;
13173 Ag_r = lanczos_7_c[0];
13175 for(k=1; k<=8; k++) {
13178 double a = lanczos_7_c[k] / (R*R + I*I);
13183 gsl_sf_complex_log_e(zr + 7.5, zi, &log1_r, &log1_i);
13184 gsl_sf_complex_log_e(Ag_r, Ag_i, &logAg_r, &logAg_i);
13187 yr->val = (zr+0.5)*log1_r.val - zi*log1_i.val - (zr+7.5) + LogRootTwoPi_ + logAg_r.val;
13188 yi->val = zi*log1_r.val + (zr+0.5)*log1_i.val - zi + logAg_i.val;
13189 yr->err = 4.0 * GSL_DBL_EPSILON * fabs(yr->val);
13190 yi->err = 4.0 * GSL_DBL_EPSILON * fabs(yi->val);
13191 yi_tmp_val = yi->val;
13192 yi_tmp_err = yi->err;
13193 gsl_sf_angle_restrict_symm_err_e(yi_tmp_val, yi);
13194 yi->err += yi_tmp_err;
13195 return GSL_SUCCESS;
13205lngamma_lanczos(
double x, gsl_sf_result * result)
13209 double term1, term2;
13213 Ag = lanczos_7_c[0];
13214 for(k=1; k<=8; k++) { Ag += lanczos_7_c[k]/(x+k); }
13217 term1 = (x+0.5)*log((x+7.5)/M_E);
13218 term2 = LogRootTwoPi_ + log(Ag);
13219 result->val = term1 + (term2 - 7.0);
13220 result->err = 2.0 * GSL_DBL_EPSILON * (fabs(term1) + fabs(term2) + 7.0);
13221 result->err += GSL_DBL_EPSILON * fabs(result->val);
13223 return GSL_SUCCESS;
13231lngamma_sgn_0(
double eps, gsl_sf_result * lng,
double * sgn)
13234 const double c1 = -0.07721566490153286061;
13235 const double c2 = -0.01094400467202744461;
13236 const double c3 = 0.09252092391911371098;
13237 const double c4 = -0.01827191316559981266;
13238 const double c5 = 0.01800493109685479790;
13239 const double c6 = -0.00685088537872380685;
13240 const double c7 = 0.00399823955756846603;
13241 const double c8 = -0.00189430621687107802;
13242 const double c9 = 0.00097473237804513221;
13243 const double c10 = -0.00048434392722255893;
13244 const double g6 = c6+eps*(c7+eps*(c8 + eps*(c9 + eps*c10)));
13245 const double g = eps*(c1+eps*(c2+eps*(c3+eps*(c4+eps*(c5+eps*g6)))));
13248 const double gee = g + 1.0/(1.0+eps) + 0.5*eps;
13250 lng->val = log(gee/fabs(eps));
13251 lng->err = 4.0 * GSL_DBL_EPSILON * fabs(lng->val);
13252 *sgn = GSL_SIGN(eps);
13254 return GSL_SUCCESS;
13265lngamma_sgn_sing(
int N,
double eps, gsl_sf_result * lng,
double * sgn)
13271 GSL_ERROR (
"error", GSL_EDOM);
13278 const double c0 = 0.07721566490153286061;
13279 const double c1 = 0.08815966957356030521;
13280 const double c2 = -0.00436125434555340577;
13281 const double c3 = 0.01391065882004640689;
13282 const double c4 = -0.00409427227680839100;
13283 const double c5 = 0.00275661310191541584;
13284 const double c6 = -0.00124162645565305019;
13285 const double c7 = 0.00065267976121802783;
13286 const double c8 = -0.00032205261682710437;
13287 const double c9 = 0.00016229131039545456;
13288 const double g5 = c5 + eps*(c6 + eps*(c7 + eps*(c8 + eps*c9)));
13289 const double g = eps*(c0 + eps*(c1 + eps*(c2 + eps*(c3 + eps*(c4 + eps*g5)))));
13292 const double gam_e = g - 1.0 - 0.5*eps*(1.0+3.0*eps)/(1.0 - eps*eps);
13294 lng->val = log(fabs(gam_e)/fabs(eps));
13295 lng->err = 2.0 * GSL_DBL_EPSILON * fabs(lng->val);
13296 *sgn = ( eps > 0.0 ? -1.0 : 1.0 );
13297 return GSL_SUCCESS;
13305 const double cs1 = -1.6449340668482264365;
13306 const double cs2 = 0.8117424252833536436;
13307 const double cs3 = -0.1907518241220842137;
13308 const double cs4 = 0.0261478478176548005;
13309 const double cs5 = -0.0023460810354558236;
13310 const double e2 = eps*eps;
13311 const double sin_ser = 1.0 + e2*(cs1+e2*(cs2+e2*(cs3+e2*(cs4+e2*cs5))));
13316 double aeps = fabs(eps);
13317 double c1, c2, c3, c4, c5, c6, c7;
13320 gsl_sf_result psi_0;
13321 gsl_sf_result psi_1;
13322 gsl_sf_result psi_2;
13323 gsl_sf_result psi_3;
13324 gsl_sf_result psi_4;
13325 gsl_sf_result psi_5;
13326 gsl_sf_result psi_6;
13332 gsl_sf_lnfact_e(N, &c0);
13333 gsl_sf_psi_int_e(N+1, &psi_0);
13334 gsl_sf_psi_1_int_e(N+1, &psi_1);
13335 if(aeps > 0.00001) gsl_sf_psi_n_e(2, N+1.0, &psi_2);
13336 if(aeps > 0.0002) gsl_sf_psi_n_e(3, N+1.0, &psi_3);
13337 if(aeps > 0.001) gsl_sf_psi_n_e(4, N+1.0, &psi_4);
13338 if(aeps > 0.005) gsl_sf_psi_n_e(5, N+1.0, &psi_5);
13339 if(aeps > 0.01) gsl_sf_psi_n_e(6, N+1.0, &psi_6);
13341 c2 = psi_1.val/2.0;
13342 c3 = psi_2.val/6.0;
13343 c4 = psi_3.val/24.0;
13344 c5 = psi_4.val/120.0;
13345 c6 = psi_5.val/720.0;
13346 c7 = psi_6.val/5040.0;
13347 lng_ser = c0.val-eps*(c1-eps*(c2-eps*(c3-eps*(c4-eps*(c5-eps*(c6-eps*c7))))));
13353 g = -lng_ser - log(sin_ser);
13355 lng->val = g - log(fabs(eps));
13356 lng->err = c0.err + 2.0 * GSL_DBL_EPSILON * (fabs(g) + fabs(lng->val));
13358 *sgn = ( GSL_IS_ODD(N) ? -1.0 : 1.0 ) * ( eps > 0.0 ? 1.0 : -1.0 );
13360 return GSL_SUCCESS;
13372lngamma_complex_stirling(
const double zr,
const double zi,
double * lg_r,
double * arg)
13374 double re_zinv, im_zinv;
13375 double re_zinv2, im_zinv2;
13376 double re_zinv3, im_zinv3;
13377 double re_zhlnz, im_zhlnz;
13378 double r, lnr, theta;
13379 gsl_sf_complex_log_e(zr, zi, &lnr, &theta);
13381 re_zinv = (zr/r)/r;
13382 im_zinv = -(zi/r)/r;
13383 re_zinv2 = re_zinv*re_zinv - im_zinv*im_zinv;
13384 re_zinv2 = 2.0*re_zinv*im_zinv;
13385 re_zinv3 = re_zinv2*re_zinv - im_zinv2*im_zinv;
13386 re_zinv3 = re_zinv2*im_zinv + im_zinv2*re_zinv;
13387 re_zhlnz = (zr - 0.5)*lnr - zi*theta;
13388 im_zhlnz = zi*lnr + zr*theta;
13389 *lg_r = re_zhlnz - zr + 0.5*(M_LN2+M_LNPI) + re_zinv/12.0 - re_zinv3/360.0;
13390 *arg = im_zhlnz - zi + 1.0/12.0*im_zinv - im_zinv3/360.0;
13391 return GSL_SUCCESS;
13399lngamma_1_pade(
const double eps, gsl_sf_result * result)
13404 const double n1 = -1.0017419282349508699871138440;
13405 const double n2 = 1.7364839209922879823280541733;
13406 const double d1 = 1.2433006018858751556055436011;
13407 const double d2 = 5.0456274100274010152489597514;
13408 const double num = (eps + n1) * (eps + n2);
13409 const double den = (eps + d1) * (eps + d2);
13410 const double pade = 2.0816265188662692474880210318 * num / den;
13411 const double c0 = 0.004785324257581753;
13412 const double c1 = -0.01192457083645441;
13413 const double c2 = 0.01931961413960498;
13414 const double c3 = -0.02594027398725020;
13415 const double c4 = 0.03141928755021455;
13416 const double eps5 = eps*eps*eps*eps*eps;
13417 const double corr = eps5 * (c0 + eps*(c1 + eps*(c2 + eps*(c3 + c4*eps))));
13418 result->val = eps * (pade + corr);
13419 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
13420 return GSL_SUCCESS;
13426lngamma_2_pade(
const double eps, gsl_sf_result * result)
13431 const double n1 = 1.000895834786669227164446568;
13432 const double n2 = 4.209376735287755081642901277;
13433 const double d1 = 2.618851904903217274682578255;
13434 const double d2 = 10.85766559900983515322922936;
13435 const double num = (eps + n1) * (eps + n2);
13436 const double den = (eps + d1) * (eps + d2);
13437 const double pade = 2.85337998765781918463568869 * num/den;
13438 const double c0 = 0.0001139406357036744;
13439 const double c1 = -0.0001365435269792533;
13440 const double c2 = 0.0001067287169183665;
13441 const double c3 = -0.0000693271800931282;
13442 const double c4 = 0.0000407220927867950;
13443 const double eps5 = eps*eps*eps*eps*eps;
13444 const double corr = eps5 * (c0 + eps*(c1 + eps*(c2 + eps*(c3 + c4*eps))));
13445 result->val = eps * (pade + corr);
13446 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
13447 return GSL_SUCCESS;
13456gammastar_ser(
const double x, gsl_sf_result * result)
13462 const double y = 1.0/(x*x);
13463 const double c0 = 1.0/12.0;
13464 const double c1 = -1.0/360.0;
13465 const double c2 = 1.0/1260.0;
13466 const double c3 = -1.0/1680.0;
13467 const double c4 = 1.0/1188.0;
13468 const double c5 = -691.0/360360.0;
13469 const double c6 = 1.0/156.0;
13470 const double c7 = -3617.0/122400.0;
13471 const double ser = c0 + y*(c1 + y*(c2 + y*(c3 + y*(c4 + y*(c5 + y*(c6 + y*c7))))));
13472 result->val = exp(ser/x);
13473 result->err = 2.0 * GSL_DBL_EPSILON * result->val * GSL_MAX_DBL(1.0, ser/x);
13474 return GSL_SUCCESS;
13482static double gamma_5_10_data[24] = {
13483 -1.5285594096661578881275075214,
13484 4.8259152300595906319768555035,
13485 0.2277712320977614992970601978,
13486 -0.0138867665685617873604917300,
13487 0.0012704876495201082588139723,
13488 -0.0001393841240254993658962470,
13489 0.0000169709242992322702260663,
13490 -2.2108528820210580075775889168e-06,
13491 3.0196602854202309805163918716e-07,
13492 -4.2705675000079118380587357358e-08,
13493 6.2026423818051402794663551945e-09,
13494 -9.1993973208880910416311405656e-10,
13495 1.3875551258028145778301211638e-10,
13496 -2.1218861491906788718519522978e-11,
13497 3.2821736040381439555133562600e-12,
13498 -5.1260001009953791220611135264e-13,
13499 8.0713532554874636696982146610e-14,
13500 -1.2798522376569209083811628061e-14,
13501 2.0417711600852502310258808643e-15,
13502 -3.2745239502992355776882614137e-16,
13503 5.2759418422036579482120897453e-17,
13504 -8.5354147151695233960425725513e-18,
13505 1.3858639703888078291599886143e-18,
13506 -2.2574398807738626571560124396e-19
13508static const cheb_series gamma_5_10_cs = {
13521gamma_xgthalf(
const double x, gsl_sf_result * result)
13526 result->val = 1.77245385090551602729817;
13527 result->err = GSL_DBL_EPSILON * result->val;
13528 return GSL_SUCCESS;
13529 }
else if (x <= (GSL_SF_FACT_NMAX + 1.0) && x == floor(x)) {
13530 int n = (int) floor (x);
13531 result->val = fact_table[n - 1].f;
13532 result->err = GSL_DBL_EPSILON * result->val;
13533 return GSL_SUCCESS;
13535 else if(fabs(x - 1.0) < 0.01) {
13538 const double eps = x - 1.0;
13539 const double c1 = 0.4227843350984671394;
13540 const double c2 = -0.01094400467202744461;
13541 const double c3 = 0.09252092391911371098;
13542 const double c4 = -0.018271913165599812664;
13543 const double c5 = 0.018004931096854797895;
13544 const double c6 = -0.006850885378723806846;
13545 const double c7 = 0.003998239557568466030;
13546 result->val = 1.0/x + eps*(c1+eps*(c2+eps*(c3+eps*(c4+eps*(c5+eps*(c6+eps*c7))))));
13547 result->err = GSL_DBL_EPSILON;
13548 return GSL_SUCCESS;
13550 else if(fabs(x - 2.0) < 0.01) {
13553 const double eps = x - 2.0;
13554 const double c1 = 0.4227843350984671394;
13555 const double c2 = 0.4118403304264396948;
13556 const double c3 = 0.08157691924708626638;
13557 const double c4 = 0.07424901075351389832;
13558 const double c5 = -0.00026698206874501476832;
13559 const double c6 = 0.011154045718130991049;
13560 const double c7 = -0.002852645821155340816;
13561 const double c8 = 0.0021039333406973880085;
13562 result->val = 1.0 + eps*(c1+eps*(c2+eps*(c3+eps*(c4+eps*(c5+eps*(c6+eps*(c7+eps*c8)))))));
13563 result->err = GSL_DBL_EPSILON;
13564 return GSL_SUCCESS;
13572 lngamma_lanczos(x, &lg);
13573 result->val = exp(lg.val);
13574 result->err = result->val * (lg.err + 2.0 * GSL_DBL_EPSILON);
13575 return GSL_SUCCESS;
13577 else if(x < 10.0) {
13582 const double gamma_8 = 5040.0;
13583 const double t = (2.0*x - 15.0)/5.0;
13585 cheb_eval_e(&gamma_5_10_cs, t, &c);
13586 result->val = exp(c.val) * gamma_8;
13587 result->err = result->val * c.err;
13588 result->err += 2.0 * GSL_DBL_EPSILON * result->val;
13589 return GSL_SUCCESS;
13591 else if(x < GSL_SF_GAMMA_XMAX) {
13597 double p = pow(x, 0.5*x);
13598 double e = exp(-x);
13599 double q = (p * e) * p;
13600 double pre = M_SQRT2 * M_SQRTPI * q/sqrt(x);
13601 gsl_sf_result gstar;
13602 int stat_gs = gammastar_ser(x, &gstar);
13603 result->val = pre * gstar.val;
13604 result->err = (x + 2.5) * GSL_DBL_EPSILON * result->val;
13608 OVERFLOW_ERROR(result);
13616int gsl_sf_lngamma_e(
double x, gsl_sf_result * result)
13620 if(fabs(x - 1.0) < 0.01) {
13627 int stat = lngamma_1_pade(x - 1.0, result);
13628 result->err *= 1.0/(GSL_DBL_EPSILON + fabs(x - 1.0));
13631 else if(fabs(x - 2.0) < 0.01) {
13632 int stat = lngamma_2_pade(x - 2.0, result);
13633 result->err *= 1.0/(GSL_DBL_EPSILON + fabs(x - 2.0));
13636 else if(x >= 0.5) {
13637 return lngamma_lanczos(x, result);
13639 else if(x == 0.0) {
13640 DOMAIN_ERROR(result);
13642 else if(fabs(x) < 0.02) {
13644 return lngamma_sgn_0(x, result, &sgn);
13646 else if(x > -0.5/(GSL_DBL_EPSILON*M_PI)) {
13650 double z = 1.0 - x;
13651 double s = sin(M_PI*z);
13652 double as = fabs(s);
13654 DOMAIN_ERROR(result);
13656 else if(as < M_PI*0.015) {
13658 if(x < INT_MIN + 2.0) {
13661 GSL_ERROR (
"error", GSL_EROUND);
13664 int N = -(int)(x - 0.5);
13665 double eps = x + N;
13667 return lngamma_sgn_sing(N, eps, result, &sgn);
13671 gsl_sf_result lg_z;
13672 lngamma_lanczos(z, &lg_z);
13673 result->val = M_LNPI - (log(as) + lg_z.val);
13674 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val) + lg_z.err;
13675 return GSL_SUCCESS;
13682 GSL_ERROR (
"error", GSL_EROUND);
13687int gsl_sf_lngamma_sgn_e(
double x, gsl_sf_result * result_lg,
double * sgn)
13689 if(fabs(x - 1.0) < 0.01) {
13690 int stat = lngamma_1_pade(x - 1.0, result_lg);
13691 result_lg->err *= 1.0/(GSL_DBL_EPSILON + fabs(x - 1.0));
13695 else if(fabs(x - 2.0) < 0.01) {
13696 int stat = lngamma_2_pade(x - 2.0, result_lg);
13697 result_lg->err *= 1.0/(GSL_DBL_EPSILON + fabs(x - 2.0));
13701 else if(x >= 0.5) {
13703 return lngamma_lanczos(x, result_lg);
13705 else if(x == 0.0) {
13707 DOMAIN_ERROR(result_lg);
13709 else if(fabs(x) < 0.02) {
13710 return lngamma_sgn_0(x, result_lg, sgn);
13712 else if(x > -0.5/(GSL_DBL_EPSILON*M_PI)) {
13716 double z = 1.0 - x;
13717 double s = sin(M_PI*x);
13718 double as = fabs(s);
13721 DOMAIN_ERROR(result_lg);
13723 else if(as < M_PI*0.015) {
13725 if(x < INT_MIN + 2.0) {
13726 result_lg->val = 0.0;
13727 result_lg->err = 0.0;
13729 GSL_ERROR (
"error", GSL_EROUND);
13732 int N = -(int)(x - 0.5);
13733 double eps = x + N;
13734 return lngamma_sgn_sing(N, eps, result_lg, sgn);
13738 gsl_sf_result lg_z;
13739 lngamma_lanczos(z, &lg_z);
13740 *sgn = (s > 0.0 ? 1.0 : -1.0);
13741 result_lg->val = M_LNPI - (log(as) + lg_z.val);
13742 result_lg->err = 2.0 * GSL_DBL_EPSILON * fabs(result_lg->val) + lg_z.err;
13743 return GSL_SUCCESS;
13748 result_lg->val = 0.0;
13749 result_lg->err = 0.0;
13751 GSL_ERROR (
"x too large to extract fraction part", GSL_EROUND);
13757gsl_sf_gamma_e(
const double x, gsl_sf_result * result)
13760 int rint_x = (int)floor(x+0.5);
13761 double f_x = x - rint_x;
13762 double sgn_gamma = ( GSL_IS_EVEN(rint_x) ? 1.0 : -1.0 );
13763 double sin_term = sgn_gamma * sin(M_PI * f_x) / M_PI;
13765 if(sin_term == 0.0) {
13766 DOMAIN_ERROR(result);
13768 else if(x > -169.0) {
13770 gamma_xgthalf(1.0-x, &g);
13771 if(fabs(sin_term) * g.val * GSL_DBL_MIN < 1.0) {
13772 result->val = 1.0/(sin_term * g.val);
13773 result->err = fabs(g.err/g.val) * fabs(result->val);
13774 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
13775 return GSL_SUCCESS;
13778 UNDERFLOW_ERROR(result);
13789 int stat_lng = gsl_sf_lngamma_sgn_e(x, &lng, &sgn);
13790 int stat_e = gsl_sf_exp_mult_err_e(lng.val, lng.err, sgn, 0.0, result);
13791 return GSL_ERROR_SELECT_2(stat_e, stat_lng);
13795 return gamma_xgthalf(x, result);
13801gsl_sf_gammastar_e(
const double x, gsl_sf_result * result)
13806 DOMAIN_ERROR(result);
13810 const int stat_lg = gsl_sf_lngamma_e(x, &lg);
13811 const double lx = log(x);
13812 const double c = 0.5*(M_LN2+M_LNPI);
13813 const double lnr_val = lg.val - (x-0.5)*lx + x - c;
13814 const double lnr_err = lg.err + 2.0 * GSL_DBL_EPSILON *((x+0.5)*fabs(lx) + c);
13815 const int stat_e = gsl_sf_exp_err_e(lnr_val, lnr_err, result);
13816 return GSL_ERROR_SELECT_2(stat_lg, stat_e);
13819 const double t = 4.0/3.0*(x-0.5) - 1.0;
13820 return cheb_eval_e(&gstar_a_cs, t, result);
13822 else if(x < 10.0) {
13823 const double t = 0.25*(x-2.0) - 1.0;
13825 cheb_eval_e(&gstar_b_cs, t, &c);
13826 result->val = c.val/(x*x) + 1.0 + 1.0/(12.0*x);
13827 result->err = c.err/(x*x);
13828 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
13829 return GSL_SUCCESS;
13831 else if(x < 1.0/GSL_ROOT4_DBL_EPSILON) {
13832 return gammastar_ser(x, result);
13834 else if(x < 1.0/GSL_DBL_EPSILON) {
13837 const double xi = 1.0/x;
13838 result->val = 1.0 + xi/12.0*(1.0 + xi/24.0*(1.0 - xi*(139.0/180.0 + 571.0/8640.0*xi)));
13839 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
13840 return GSL_SUCCESS;
13844 result->err = 1.0/x;
13845 return GSL_SUCCESS;
13851gsl_sf_gammainv_e(
const double x, gsl_sf_result * result)
13855 if (x <= 0.0 && x == floor(x)) {
13858 return GSL_SUCCESS;
13859 }
else if(x < 0.5) {
13862 int stat_lng = gsl_sf_lngamma_sgn_e(x, &lng, &sgn);
13863 if(stat_lng == GSL_EDOM) {
13866 return GSL_SUCCESS;
13868 else if(stat_lng != GSL_SUCCESS) {
13874 return gsl_sf_exp_mult_err_e(-lng.val, lng.err, sgn, 0.0, result);
13879 int stat_g = gamma_xgthalf(x, &g);
13880 if(stat_g == GSL_EOVRFLW) {
13881 UNDERFLOW_ERROR(result);
13884 result->val = 1.0/g.val;
13885 result->err = fabs(g.err/g.val) * fabs(result->val);
13886 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
13887 CHECK_UNDERFLOW(result);
13888 return GSL_SUCCESS;
13895gsl_sf_lngamma_complex_e(
double zr,
double zi, gsl_sf_result * lnr, gsl_sf_result * arg)
13903 gsl_sf_result a, b;
13904 gsl_sf_result lnsin_r, lnsin_i;
13906 int stat_l = lngamma_lanczos_complex(x, y, &a, &b);
13907 int stat_s = gsl_sf_complex_logsin_e(M_PI*zr, M_PI*zi, &lnsin_r, &lnsin_i);
13909 if(stat_s == GSL_SUCCESS) {
13911 lnr->val = M_LNPI - lnsin_r.val - a.val;
13912 lnr->err = lnsin_r.err + a.err + 2.0 * GSL_DBL_EPSILON * fabs(lnr->val);
13913 arg->val = -lnsin_i.val - b.val;
13914 arg->err = lnsin_i.err + b.err + 2.0 * GSL_DBL_EPSILON * fabs(arg->val);
13915 stat_r = gsl_sf_angle_restrict_symm_e(&(arg->val));
13916 return GSL_ERROR_SELECT_2(stat_r, stat_l);
13919 DOMAIN_ERROR_2(lnr,arg);
13924 return lngamma_lanczos_complex(zr, zi, lnr, arg);
13929int gsl_sf_taylorcoeff_e(
const int n,
const double x, gsl_sf_result * result)
13933 if(x < 0.0 || n < 0) {
13934 DOMAIN_ERROR(result);
13939 return GSL_SUCCESS;
13944 return GSL_SUCCESS;
13946 else if(x == 0.0) {
13949 return GSL_SUCCESS;
13952 const double log2pi = M_LNPI + M_LN2;
13953 const double ln_test = n*(log(x)+1.0) + 1.0 - (n+0.5)*log(n+1.0) + 0.5*log2pi;
13955 if(ln_test < GSL_LOG_DBL_MIN+1.0) {
13956 UNDERFLOW_ERROR(result);
13958 else if(ln_test > GSL_LOG_DBL_MAX-1.0) {
13959 OVERFLOW_ERROR(result);
13962 double product = 1.0;
13964 for(k=1; k<=n; k++) {
13967 result->val = product;
13968 result->err = n * GSL_DBL_EPSILON * product;
13969 CHECK_UNDERFLOW(result);
13970 return GSL_SUCCESS;
13976int gsl_sf_fact_e(
const unsigned int n, gsl_sf_result * result)
13981 result->val = fact_table[n].f;
13983 return GSL_SUCCESS;
13985 else if(n <= GSL_SF_FACT_NMAX){
13986 result->val = fact_table[n].f;
13987 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
13988 return GSL_SUCCESS;
13991 OVERFLOW_ERROR(result);
13996int gsl_sf_doublefact_e(
const unsigned int n, gsl_sf_result * result)
14001 result->val = doub_fact_table[n].f;
14003 return GSL_SUCCESS;
14005 else if(n <= GSL_SF_DOUBLEFACT_NMAX){
14006 result->val = doub_fact_table[n].f;
14007 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
14008 return GSL_SUCCESS;
14011 OVERFLOW_ERROR(result);
14016int gsl_sf_lnfact_e(
const unsigned int n, gsl_sf_result * result)
14020 if(n <= GSL_SF_FACT_NMAX){
14021 result->val = log(fact_table[n].f);
14022 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
14023 return GSL_SUCCESS;
14026 gsl_sf_lngamma_e(n+1.0, result);
14027 return GSL_SUCCESS;
14032int gsl_sf_lndoublefact_e(
const unsigned int n, gsl_sf_result * result)
14036 if(n <= GSL_SF_DOUBLEFACT_NMAX){
14037 result->val = log(doub_fact_table[n].f);
14038 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
14039 return GSL_SUCCESS;
14041 else if(GSL_IS_ODD(n)) {
14043 gsl_sf_lngamma_e(0.5*(n+2.0), &lg);
14044 result->val = 0.5*(n+1.0) * M_LN2 - 0.5*M_LNPI + lg.val;
14045 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val) + lg.err;
14046 return GSL_SUCCESS;
14050 gsl_sf_lngamma_e(0.5*n+1.0, &lg);
14051 result->val = 0.5*n*M_LN2 + lg.val;
14052 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val) + lg.err;
14053 return GSL_SUCCESS;
14058int gsl_sf_lnchoose_e(
unsigned int n,
unsigned int m, gsl_sf_result * result)
14063 DOMAIN_ERROR(result);
14065 else if(m == n || m == 0) {
14068 return GSL_SUCCESS;
14073 gsl_sf_result nmmf;
14074 if(m*2 > n) m = n-m;
14075 gsl_sf_lnfact_e(n, &nf);
14076 gsl_sf_lnfact_e(m, &mf);
14077 gsl_sf_lnfact_e(n-m, &nmmf);
14078 result->val = nf.val - mf.val - nmmf.val;
14079 result->err = nf.err + mf.err + nmmf.err;
14080 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
14081 return GSL_SUCCESS;
14086int gsl_sf_choose_e(
unsigned int n,
unsigned int m, gsl_sf_result * result)
14089 DOMAIN_ERROR(result);
14091 else if(m == n || m == 0) {
14094 return GSL_SUCCESS;
14096 else if (n <= GSL_SF_FACT_NMAX) {
14097 result->val = (fact_table[n].f / fact_table[m].f) / fact_table[n-m].f;
14098 result->err = 6.0 * GSL_DBL_EPSILON * fabs(result->val);
14099 return GSL_SUCCESS;
14101 if(m*2 < n) m = n-m;
14108 for(k=n; k>=m+1; k--) {
14109 double tk = (double)k / (
double)(k-m);
14110 if(tk > GSL_DBL_MAX/prod) {
14111 OVERFLOW_ERROR(result);
14115 result->val = prod;
14116 result->err = 2.0 * GSL_DBL_EPSILON * prod * fabs((
double) (n-m));
14117 return GSL_SUCCESS;
14122 const int stat_lc = gsl_sf_lnchoose_e (n, m, &lc);
14123 const int stat_e = gsl_sf_exp_err_e(lc.val, lc.err, result);
14124 return GSL_ERROR_SELECT_2(stat_lc, stat_e);
14134double gsl_sf_fact(
const unsigned int n)
14136 EVAL_RESULT(gsl_sf_fact_e(n, &result));
14139double gsl_sf_lnfact(
const unsigned int n)
14141 EVAL_RESULT(gsl_sf_lnfact_e(n, &result));
14144double gsl_sf_doublefact(
const unsigned int n)
14146 EVAL_RESULT(gsl_sf_doublefact_e(n, &result));
14149double gsl_sf_lndoublefact(
const unsigned int n)
14151 EVAL_RESULT(gsl_sf_lndoublefact_e(n, &result));
14154double gsl_sf_lngamma(
const double x)
14156 EVAL_RESULT(gsl_sf_lngamma_e(x, &result));
14159double gsl_sf_gamma(
const double x)
14161 EVAL_RESULT(gsl_sf_gamma_e(x, &result));
14164double gsl_sf_gammastar(
const double x)
14166 EVAL_RESULT(gsl_sf_gammastar_e(x, &result));
14169double gsl_sf_gammainv(
const double x)
14171 EVAL_RESULT(gsl_sf_gammainv_e(x, &result));
14174double gsl_sf_taylorcoeff(
const int n,
const double x)
14176 EVAL_RESULT(gsl_sf_taylorcoeff_e(n, x, &result));
14179double gsl_sf_choose(
unsigned int n,
unsigned int m)
14181 EVAL_RESULT(gsl_sf_choose_e(n, m, &result));
14184double gsl_sf_lnchoose(
unsigned int n,
unsigned int m)
14186 EVAL_RESULT(gsl_sf_lnchoose_e(n, m, &result));
14211#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
14212#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
14214#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
14215#define MARLEY_BUILTIN_GSL_CONFIG_H
14217#define HAVE_INLINE 1
14218#define HAVE_DECL_ISFINITE 1
14219#define HAVE_DECL_ISNAN 1
14220#define HAVE_DECL_ISINF 1
14221#define GSL_COERCE_DBL(x) (x)
14223#define GSL_DISABLE_DEPRECATED 0
14224#define PACKAGE_VERSION "2.8"
14225#define VERSION "2.8"
14253#ifndef __GSL_MATH_H__
14254#define __GSL_MATH_H__
14276#ifndef __GSL_SYS_H__
14277#define __GSL_SYS_H__
14283double gsl_log1p (
const double x);
14284double gsl_expm1 (
const double x);
14285double gsl_hypot (
const double x,
const double y);
14286double gsl_hypot3 (
const double x,
const double y,
const double z);
14287double gsl_acosh (
const double x);
14288double gsl_asinh (
const double x);
14289double gsl_atanh (
const double x);
14291int gsl_isnan (
const double x);
14292int gsl_isinf (
const double x);
14293int gsl_finite (
const double x);
14295double gsl_nan (
void);
14296double gsl_posinf (
void);
14297double gsl_neginf (
void);
14298double gsl_fdiv (
const double x,
const double y);
14300double gsl_coerce_double (
const double x);
14301float gsl_coerce_float (
const float x);
14302long double gsl_coerce_long_double (
const long double x);
14304double gsl_ldexp(
const double x,
const int e);
14305double gsl_frexp(
const double x,
int * e);
14307int gsl_fcmp (
const double x1,
const double x2,
const double epsilon);
14334#ifndef __GSL_INLINE_H__
14335#define __GSL_INLINE_H__
14364# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
14365# define INLINE_DECL inline
14366# define INLINE_FUN inline
14368# define INLINE_DECL
14369# define INLINE_FUN extern inline
14372# define INLINE_DECL
14379#define GSL_RANGE_COND(x) (x)
14386#ifndef __GSL_MACHINE_H__
14387#define __GSL_MACHINE_H__
14401#define GSL_DBL_EPSILON 2.2204460492503131e-16
14402#define GSL_SQRT_DBL_EPSILON 1.4901161193847656e-08
14403#define GSL_ROOT3_DBL_EPSILON 6.0554544523933429e-06
14404#define GSL_ROOT4_DBL_EPSILON 1.2207031250000000e-04
14405#define GSL_ROOT5_DBL_EPSILON 7.4009597974140505e-04
14406#define GSL_ROOT6_DBL_EPSILON 2.4607833005759251e-03
14407#define GSL_LOG_DBL_EPSILON (-3.6043653389117154e+01)
14409#define GSL_DBL_MIN 2.2250738585072014e-308
14410#define GSL_SQRT_DBL_MIN 1.4916681462400413e-154
14411#define GSL_ROOT3_DBL_MIN 2.8126442852362996e-103
14412#define GSL_ROOT4_DBL_MIN 1.2213386697554620e-77
14413#define GSL_ROOT5_DBL_MIN 2.9476022969691763e-62
14414#define GSL_ROOT6_DBL_MIN 5.3034368905798218e-52
14415#define GSL_LOG_DBL_MIN (-7.0839641853226408e+02)
14417#define GSL_DBL_MAX 1.7976931348623157e+308
14418#define GSL_SQRT_DBL_MAX 1.3407807929942596e+154
14419#define GSL_ROOT3_DBL_MAX 5.6438030941222897e+102
14420#define GSL_ROOT4_DBL_MAX 1.1579208923731620e+77
14421#define GSL_ROOT5_DBL_MAX 4.4765466227572707e+61
14422#define GSL_ROOT6_DBL_MAX 2.3756689782295612e+51
14423#define GSL_LOG_DBL_MAX 7.0978271289338397e+02
14425#define GSL_FLT_EPSILON 1.1920928955078125e-07
14426#define GSL_SQRT_FLT_EPSILON 3.4526698300124393e-04
14427#define GSL_ROOT3_FLT_EPSILON 4.9215666011518501e-03
14428#define GSL_ROOT4_FLT_EPSILON 1.8581361171917516e-02
14429#define GSL_ROOT5_FLT_EPSILON 4.1234622211652937e-02
14430#define GSL_ROOT6_FLT_EPSILON 7.0153878019335827e-02
14431#define GSL_LOG_FLT_EPSILON (-1.5942385152878742e+01)
14433#define GSL_FLT_MIN 1.1754943508222875e-38
14434#define GSL_SQRT_FLT_MIN 1.0842021724855044e-19
14435#define GSL_ROOT3_FLT_MIN 2.2737367544323241e-13
14436#define GSL_ROOT4_FLT_MIN 3.2927225399135965e-10
14437#define GSL_ROOT5_FLT_MIN 2.5944428542140822e-08
14438#define GSL_ROOT6_FLT_MIN 4.7683715820312542e-07
14439#define GSL_LOG_FLT_MIN (-8.7336544750553102e+01)
14441#define GSL_FLT_MAX 3.4028234663852886e+38
14442#define GSL_SQRT_FLT_MAX 1.8446743523953730e+19
14443#define GSL_ROOT3_FLT_MAX 6.9814635196223242e+12
14444#define GSL_ROOT4_FLT_MAX 4.2949672319999986e+09
14445#define GSL_ROOT5_FLT_MAX 5.0859007855960041e+07
14446#define GSL_ROOT6_FLT_MAX 2.6422459233807749e+06
14447#define GSL_LOG_FLT_MAX 8.8722839052068352e+01
14449#define GSL_SFLT_EPSILON 4.8828125000000000e-04
14450#define GSL_SQRT_SFLT_EPSILON 2.2097086912079612e-02
14451#define GSL_ROOT3_SFLT_EPSILON 7.8745065618429588e-02
14452#define GSL_ROOT4_SFLT_EPSILON 1.4865088937534013e-01
14453#define GSL_ROOT5_SFLT_EPSILON 2.1763764082403100e-01
14454#define GSL_ROOT6_SFLT_EPSILON 2.8061551207734325e-01
14455#define GSL_LOG_SFLT_EPSILON (-7.6246189861593985e+00)
14461#define GSL_MACH_EPS GSL_DBL_EPSILON
14480#define GSL_SQRT_MACH_EPS 3.2e-08
14481#define GSL_ROOT3_MACH_EPS 1.0e-05
14482#define GSL_ROOT4_MACH_EPS 0.000178
14483#define GSL_ROOT5_MACH_EPS 0.00100
14484#define GSL_ROOT6_MACH_EPS 0.00316
14485#define GSL_LOG_MACH_EPS (-34.54)
14513#ifndef __GSL_PRECISION_H__
14514#define __GSL_PRECISION_H__
14535#ifndef __GSL_TYPES_H__
14536#define __GSL_TYPES_H__
14543# define GSL_VAR extern __declspec(dllexport)
14545# define GSL_VAR extern __declspec(dllimport)
14548# define GSL_VAR extern
14551# define GSL_VAR extern
14567typedef unsigned int gsl_prec_t;
14574#define _GSL_PREC_T_NUM 3
14581GSL_VAR
const double gsl_prec_eps[];
14582GSL_VAR
const double gsl_prec_sqrt_eps[];
14583GSL_VAR
const double gsl_prec_root3_eps[];
14584GSL_VAR
const double gsl_prec_root4_eps[];
14585GSL_VAR
const double gsl_prec_root5_eps[];
14586GSL_VAR
const double gsl_prec_root6_eps[];
14614#ifndef __GSL_NAN_H__
14615#define __GSL_NAN_H__
14618# define GSL_POSINF INFINITY
14619# define GSL_NEGINF (-INFINITY)
14620#elif defined(HUGE_VAL)
14621# define GSL_POSINF HUGE_VAL
14622# define GSL_NEGINF (-HUGE_VAL)
14624# define GSL_POSINF (gsl_posinf())
14625# define GSL_NEGINF (gsl_neginf())
14629# define GSL_NAN NAN
14630#elif defined(INFINITY)
14631# define GSL_NAN (INFINITY/INFINITY)
14633# define GSL_NAN (gsl_nan())
14636#define GSL_POSZERO (+0.0)
14637#define GSL_NEGZERO (-0.0)
14662#ifndef __GSL_POW_INT_H__
14663#define __GSL_POW_INT_H__
14684#ifndef __GSL_INLINE_H__
14685#define __GSL_INLINE_H__
14714# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
14715# define INLINE_DECL inline
14716# define INLINE_FUN inline
14718# define INLINE_DECL
14719# define INLINE_FUN extern inline
14722# define INLINE_DECL
14729#define GSL_RANGE_COND(x) (x)
14738INLINE_DECL
double gsl_pow_2(
const double x);
14739INLINE_DECL
double gsl_pow_3(
const double x);
14740INLINE_DECL
double gsl_pow_4(
const double x);
14741INLINE_DECL
double gsl_pow_5(
const double x);
14742INLINE_DECL
double gsl_pow_6(
const double x);
14743INLINE_DECL
double gsl_pow_7(
const double x);
14744INLINE_DECL
double gsl_pow_8(
const double x);
14745INLINE_DECL
double gsl_pow_9(
const double x);
14748INLINE_FUN
double gsl_pow_2(
const double x) {
return x*x; }
14749INLINE_FUN
double gsl_pow_3(
const double x) {
return x*x*x; }
14750INLINE_FUN
double gsl_pow_4(
const double x) {
double x2 = x*x;
return x2*x2; }
14751INLINE_FUN
double gsl_pow_5(
const double x) {
double x2 = x*x;
return x2*x2*x; }
14752INLINE_FUN
double gsl_pow_6(
const double x) {
double x2 = x*x;
return x2*x2*x2; }
14753INLINE_FUN
double gsl_pow_7(
const double x) {
double x3 = x*x*x;
return x3*x3*x; }
14754INLINE_FUN
double gsl_pow_8(
const double x) {
double x2 = x*x;
double x4 = x2*x2;
return x4*x4; }
14755INLINE_FUN
double gsl_pow_9(
const double x) {
double x3 = x*x*x;
return x3*x3*x3; }
14758double gsl_pow_int(
double x,
int n);
14759double gsl_pow_uint(
double x,
unsigned int n);
14786#ifndef __GSL_MINMAX_H__
14787#define __GSL_MINMAX_H__
14808#ifndef __GSL_INLINE_H__
14809#define __GSL_INLINE_H__
14838# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
14839# define INLINE_DECL inline
14840# define INLINE_FUN inline
14842# define INLINE_DECL
14843# define INLINE_FUN extern inline
14846# define INLINE_DECL
14853#define GSL_RANGE_COND(x) (x)
14865#define GSL_MAX(a,b) ((a) > (b) ? (a) : (b))
14866#define GSL_MIN(a,b) ((a) < (b) ? (a) : (b))
14869double gsl_max (
double a,
double b);
14870double gsl_min (
double a,
double b);
14875INLINE_FUN
int GSL_MAX_INT (
int a,
int b);
14876INLINE_FUN
int GSL_MIN_INT (
int a,
int b);
14877INLINE_FUN
double GSL_MAX_DBL (
double a,
double b);
14878INLINE_FUN
double GSL_MIN_DBL (
double a,
double b);
14879INLINE_FUN
long double GSL_MAX_LDBL (
long double a,
long double b);
14880INLINE_FUN
long double GSL_MIN_LDBL (
long double a,
long double b);
14883GSL_MAX_INT (
int a,
int b)
14885 return GSL_MAX (a, b);
14889GSL_MIN_INT (
int a,
int b)
14891 return GSL_MIN (a, b);
14895GSL_MAX_DBL (
double a,
double b)
14897 return GSL_MAX (a, b);
14901GSL_MIN_DBL (
double a,
double b)
14903 return GSL_MIN (a, b);
14906INLINE_FUN
long double
14907GSL_MAX_LDBL (
long double a,
long double b)
14909 return GSL_MAX (a, b);
14912INLINE_FUN
long double
14913GSL_MIN_LDBL (
long double a,
long double b)
14915 return GSL_MIN (a, b);
14918#define GSL_MAX_INT(a,b) GSL_MAX(a,b)
14919#define GSL_MIN_INT(a,b) GSL_MIN(a,b)
14920#define GSL_MAX_DBL(a,b) GSL_MAX(a,b)
14921#define GSL_MIN_DBL(a,b) GSL_MIN(a,b)
14922#define GSL_MAX_LDBL(a,b) GSL_MAX(a,b)
14923#define GSL_MIN_LDBL(a,b) GSL_MIN(a,b)
14932#define M_E 2.71828182845904523536028747135
14936#define M_LOG2E 1.44269504088896340735992468100
14940#define M_LOG10E 0.43429448190325182765112891892
14944#define M_SQRT2 1.41421356237309504880168872421
14948#define M_SQRT1_2 0.70710678118654752440084436210
14953#define M_SQRT3 1.73205080756887729352744634151
14957#define M_PI 3.14159265358979323846264338328
14961#define M_PI_2 1.57079632679489661923132169164
14965#define M_PI_4 0.78539816339744830961566084582
14969#define M_SQRTPI 1.77245385090551602729816748334
14973#define M_2_SQRTPI 1.12837916709551257389615890312
14977#define M_1_PI 0.31830988618379067153776752675
14981#define M_2_PI 0.63661977236758134307553505349
14985#define M_LN10 2.30258509299404568401799145468
14989#define M_LN2 0.69314718055994530941723212146
14993#define M_LNPI 1.14472988584940017414342735135
14997#define M_EULER 0.57721566490153286060651209008
15006#define GSL_IS_ODD(n) ((n) & 1)
15007#define GSL_IS_EVEN(n) (!(GSL_IS_ODD(n)))
15008#define GSL_SIGN(x) ((x) >= 0.0 ? 1 : -1)
15011#define GSL_IS_REAL(x) (gsl_finite(x))
15017 double (* function) (
double x,
void * params);
15023#define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params)
15029 double (* f) (
double x,
void * params);
15030 double (* df) (
double x,
void * params);
15031 void (* fdf) (
double x,
void * params,
double * f,
double * df);
15037#define GSL_FN_FDF_EVAL_F(FDF,x) (*((FDF)->f))(x,(FDF)->params)
15038#define GSL_FN_FDF_EVAL_DF(FDF,x) (*((FDF)->df))(x,(FDF)->params)
15039#define GSL_FN_FDF_EVAL_F_DF(FDF,x,y,dy) (*((FDF)->fdf))(x,(FDF)->params,(y),(dy))
15046 int (* function) (
double x,
double y[],
void * params);
15052#define GSL_FN_VEC_EVAL(F,x,y) (*((F)->function))(x,y,(F)->params)
15079#ifndef __GSL_ERRNO_H__
15080#define __GSL_ERRNO_H__
15104#ifndef __GSL_TYPES_H__
15105#define __GSL_TYPES_H__
15112# define GSL_VAR extern __declspec(dllexport)
15114# define GSL_VAR extern __declspec(dllimport)
15117# define GSL_VAR extern
15120# define GSL_VAR extern
15170void gsl_error (
const char * reason,
const char * file,
int line,
15173void gsl_stream_printf (
const char *label,
const char *file,
15174 int line,
const char *reason);
15176typedef void gsl_error_handler_t (
const char * reason,
const char * file,
15177 int line,
int gsl_errno);
15179gsl_error_handler_t *
15180gsl_set_error_handler (gsl_error_handler_t * new_handler);
15184#define GSL_ERROR(reason, gsl_errno) \
15186 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
15187 return gsl_errno ; \
15192#define GSL_ERROR_VAL(reason, gsl_errno, value) \
15194 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
15201#define GSL_ERROR_VOID(reason, gsl_errno) \
15203 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
15209#define GSL_ERROR_NULL(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, 0)
15225#define GSL_ERROR_SELECT_2(a,b) ((a) != GSL_SUCCESS ? (a) : ((b) != GSL_SUCCESS ? (b) : GSL_SUCCESS))
15226#define GSL_ERROR_SELECT_3(a,b,c) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_2(b,c))
15227#define GSL_ERROR_SELECT_4(a,b,c,d) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_3(b,c,d))
15228#define GSL_ERROR_SELECT_5(a,b,c,d,e) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_4(b,c,d,e))
15230#define GSL_STATUS_UPDATE(sp, s) do { if ((s) != GSL_SUCCESS) *(sp) = (s);} while(0)
15261#ifndef __GSL_SF_ELEMENTARY_H__
15262#define __GSL_SF_ELEMENTARY_H__
15285#ifndef __GSL_SF_RESULT_H__
15286#define __GSL_SF_RESULT_H__
15298#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
15309int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
15326int gsl_sf_multiply_e(
const double x,
const double y, gsl_sf_result * result);
15327double gsl_sf_multiply(
const double x,
const double y);
15332int gsl_sf_multiply_err_e(
const double x,
const double dx,
const double y,
const double dy, gsl_sf_result * result);
15344gsl_sf_multiply_e(
const double x,
const double y, gsl_sf_result * result)
15346 const double ax = fabs(x);
15347 const double ay = fabs(y);
15349 if(x == 0.0 || y == 0.0) {
15354 return GSL_SUCCESS;
15356 else if((ax <= 1.0 && ay >= 1.0) || (ay <= 1.0 && ax >= 1.0)) {
15360 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
15361 return GSL_SUCCESS;
15364 const double f = 1.0 - 2.0 * GSL_DBL_EPSILON;
15365 const double min = GSL_MIN_DBL(fabs(x), fabs(y));
15366 const double max = GSL_MAX_DBL(fabs(x), fabs(y));
15367 if(max < 0.9 * GSL_SQRT_DBL_MAX || min < (f * DBL_MAX)/max) {
15368 result->val = GSL_COERCE_DBL(x*y);
15369 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
15370 CHECK_UNDERFLOW(result);
15371 return GSL_SUCCESS;
15374 OVERFLOW_ERROR(result);
15381gsl_sf_multiply_err_e(
const double x,
const double dx,
15382 const double y,
const double dy,
15383 gsl_sf_result * result)
15385 int status = gsl_sf_multiply_e(x, y, result);
15386 result->err += fabs(dx*y) + fabs(dy*x);
15395double gsl_sf_multiply(
const double x,
const double y)
15397 EVAL_RESULT(gsl_sf_multiply_e(x, y, &result));
15423#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
15424#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
15426#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
15427#define MARLEY_BUILTIN_GSL_CONFIG_H
15429#define HAVE_INLINE 1
15430#define HAVE_DECL_ISFINITE 1
15431#define HAVE_DECL_ISNAN 1
15432#define HAVE_DECL_ISINF 1
15433#define GSL_COERCE_DBL(x) (x)
15435#define GSL_DISABLE_DEPRECATED 0
15436#define PACKAGE_VERSION "2.8"
15437#define VERSION "2.8"
15465#ifndef __GSL_MATH_H__
15466#define __GSL_MATH_H__
15488#ifndef __GSL_SYS_H__
15489#define __GSL_SYS_H__
15495double gsl_log1p (
const double x);
15496double gsl_expm1 (
const double x);
15497double gsl_hypot (
const double x,
const double y);
15498double gsl_hypot3 (
const double x,
const double y,
const double z);
15499double gsl_acosh (
const double x);
15500double gsl_asinh (
const double x);
15501double gsl_atanh (
const double x);
15503int gsl_isnan (
const double x);
15504int gsl_isinf (
const double x);
15505int gsl_finite (
const double x);
15507double gsl_nan (
void);
15508double gsl_posinf (
void);
15509double gsl_neginf (
void);
15510double gsl_fdiv (
const double x,
const double y);
15512double gsl_coerce_double (
const double x);
15513float gsl_coerce_float (
const float x);
15514long double gsl_coerce_long_double (
const long double x);
15516double gsl_ldexp(
const double x,
const int e);
15517double gsl_frexp(
const double x,
int * e);
15519int gsl_fcmp (
const double x1,
const double x2,
const double epsilon);
15546#ifndef __GSL_INLINE_H__
15547#define __GSL_INLINE_H__
15576# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
15577# define INLINE_DECL inline
15578# define INLINE_FUN inline
15580# define INLINE_DECL
15581# define INLINE_FUN extern inline
15584# define INLINE_DECL
15591#define GSL_RANGE_COND(x) (x)
15598#ifndef __GSL_MACHINE_H__
15599#define __GSL_MACHINE_H__
15613#define GSL_DBL_EPSILON 2.2204460492503131e-16
15614#define GSL_SQRT_DBL_EPSILON 1.4901161193847656e-08
15615#define GSL_ROOT3_DBL_EPSILON 6.0554544523933429e-06
15616#define GSL_ROOT4_DBL_EPSILON 1.2207031250000000e-04
15617#define GSL_ROOT5_DBL_EPSILON 7.4009597974140505e-04
15618#define GSL_ROOT6_DBL_EPSILON 2.4607833005759251e-03
15619#define GSL_LOG_DBL_EPSILON (-3.6043653389117154e+01)
15621#define GSL_DBL_MIN 2.2250738585072014e-308
15622#define GSL_SQRT_DBL_MIN 1.4916681462400413e-154
15623#define GSL_ROOT3_DBL_MIN 2.8126442852362996e-103
15624#define GSL_ROOT4_DBL_MIN 1.2213386697554620e-77
15625#define GSL_ROOT5_DBL_MIN 2.9476022969691763e-62
15626#define GSL_ROOT6_DBL_MIN 5.3034368905798218e-52
15627#define GSL_LOG_DBL_MIN (-7.0839641853226408e+02)
15629#define GSL_DBL_MAX 1.7976931348623157e+308
15630#define GSL_SQRT_DBL_MAX 1.3407807929942596e+154
15631#define GSL_ROOT3_DBL_MAX 5.6438030941222897e+102
15632#define GSL_ROOT4_DBL_MAX 1.1579208923731620e+77
15633#define GSL_ROOT5_DBL_MAX 4.4765466227572707e+61
15634#define GSL_ROOT6_DBL_MAX 2.3756689782295612e+51
15635#define GSL_LOG_DBL_MAX 7.0978271289338397e+02
15637#define GSL_FLT_EPSILON 1.1920928955078125e-07
15638#define GSL_SQRT_FLT_EPSILON 3.4526698300124393e-04
15639#define GSL_ROOT3_FLT_EPSILON 4.9215666011518501e-03
15640#define GSL_ROOT4_FLT_EPSILON 1.8581361171917516e-02
15641#define GSL_ROOT5_FLT_EPSILON 4.1234622211652937e-02
15642#define GSL_ROOT6_FLT_EPSILON 7.0153878019335827e-02
15643#define GSL_LOG_FLT_EPSILON (-1.5942385152878742e+01)
15645#define GSL_FLT_MIN 1.1754943508222875e-38
15646#define GSL_SQRT_FLT_MIN 1.0842021724855044e-19
15647#define GSL_ROOT3_FLT_MIN 2.2737367544323241e-13
15648#define GSL_ROOT4_FLT_MIN 3.2927225399135965e-10
15649#define GSL_ROOT5_FLT_MIN 2.5944428542140822e-08
15650#define GSL_ROOT6_FLT_MIN 4.7683715820312542e-07
15651#define GSL_LOG_FLT_MIN (-8.7336544750553102e+01)
15653#define GSL_FLT_MAX 3.4028234663852886e+38
15654#define GSL_SQRT_FLT_MAX 1.8446743523953730e+19
15655#define GSL_ROOT3_FLT_MAX 6.9814635196223242e+12
15656#define GSL_ROOT4_FLT_MAX 4.2949672319999986e+09
15657#define GSL_ROOT5_FLT_MAX 5.0859007855960041e+07
15658#define GSL_ROOT6_FLT_MAX 2.6422459233807749e+06
15659#define GSL_LOG_FLT_MAX 8.8722839052068352e+01
15661#define GSL_SFLT_EPSILON 4.8828125000000000e-04
15662#define GSL_SQRT_SFLT_EPSILON 2.2097086912079612e-02
15663#define GSL_ROOT3_SFLT_EPSILON 7.8745065618429588e-02
15664#define GSL_ROOT4_SFLT_EPSILON 1.4865088937534013e-01
15665#define GSL_ROOT5_SFLT_EPSILON 2.1763764082403100e-01
15666#define GSL_ROOT6_SFLT_EPSILON 2.8061551207734325e-01
15667#define GSL_LOG_SFLT_EPSILON (-7.6246189861593985e+00)
15673#define GSL_MACH_EPS GSL_DBL_EPSILON
15692#define GSL_SQRT_MACH_EPS 3.2e-08
15693#define GSL_ROOT3_MACH_EPS 1.0e-05
15694#define GSL_ROOT4_MACH_EPS 0.000178
15695#define GSL_ROOT5_MACH_EPS 0.00100
15696#define GSL_ROOT6_MACH_EPS 0.00316
15697#define GSL_LOG_MACH_EPS (-34.54)
15725#ifndef __GSL_PRECISION_H__
15726#define __GSL_PRECISION_H__
15747#ifndef __GSL_TYPES_H__
15748#define __GSL_TYPES_H__
15755# define GSL_VAR extern __declspec(dllexport)
15757# define GSL_VAR extern __declspec(dllimport)
15760# define GSL_VAR extern
15763# define GSL_VAR extern
15779typedef unsigned int gsl_prec_t;
15786#define _GSL_PREC_T_NUM 3
15793GSL_VAR
const double gsl_prec_eps[];
15794GSL_VAR
const double gsl_prec_sqrt_eps[];
15795GSL_VAR
const double gsl_prec_root3_eps[];
15796GSL_VAR
const double gsl_prec_root4_eps[];
15797GSL_VAR
const double gsl_prec_root5_eps[];
15798GSL_VAR
const double gsl_prec_root6_eps[];
15826#ifndef __GSL_NAN_H__
15827#define __GSL_NAN_H__
15830# define GSL_POSINF INFINITY
15831# define GSL_NEGINF (-INFINITY)
15832#elif defined(HUGE_VAL)
15833# define GSL_POSINF HUGE_VAL
15834# define GSL_NEGINF (-HUGE_VAL)
15836# define GSL_POSINF (gsl_posinf())
15837# define GSL_NEGINF (gsl_neginf())
15841# define GSL_NAN NAN
15842#elif defined(INFINITY)
15843# define GSL_NAN (INFINITY/INFINITY)
15845# define GSL_NAN (gsl_nan())
15848#define GSL_POSZERO (+0.0)
15849#define GSL_NEGZERO (-0.0)
15874#ifndef __GSL_POW_INT_H__
15875#define __GSL_POW_INT_H__
15896#ifndef __GSL_INLINE_H__
15897#define __GSL_INLINE_H__
15926# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
15927# define INLINE_DECL inline
15928# define INLINE_FUN inline
15930# define INLINE_DECL
15931# define INLINE_FUN extern inline
15934# define INLINE_DECL
15941#define GSL_RANGE_COND(x) (x)
15950INLINE_DECL
double gsl_pow_2(
const double x);
15951INLINE_DECL
double gsl_pow_3(
const double x);
15952INLINE_DECL
double gsl_pow_4(
const double x);
15953INLINE_DECL
double gsl_pow_5(
const double x);
15954INLINE_DECL
double gsl_pow_6(
const double x);
15955INLINE_DECL
double gsl_pow_7(
const double x);
15956INLINE_DECL
double gsl_pow_8(
const double x);
15957INLINE_DECL
double gsl_pow_9(
const double x);
15960INLINE_FUN
double gsl_pow_2(
const double x) {
return x*x; }
15961INLINE_FUN
double gsl_pow_3(
const double x) {
return x*x*x; }
15962INLINE_FUN
double gsl_pow_4(
const double x) {
double x2 = x*x;
return x2*x2; }
15963INLINE_FUN
double gsl_pow_5(
const double x) {
double x2 = x*x;
return x2*x2*x; }
15964INLINE_FUN
double gsl_pow_6(
const double x) {
double x2 = x*x;
return x2*x2*x2; }
15965INLINE_FUN
double gsl_pow_7(
const double x) {
double x3 = x*x*x;
return x3*x3*x; }
15966INLINE_FUN
double gsl_pow_8(
const double x) {
double x2 = x*x;
double x4 = x2*x2;
return x4*x4; }
15967INLINE_FUN
double gsl_pow_9(
const double x) {
double x3 = x*x*x;
return x3*x3*x3; }
15970double gsl_pow_int(
double x,
int n);
15971double gsl_pow_uint(
double x,
unsigned int n);
15998#ifndef __GSL_MINMAX_H__
15999#define __GSL_MINMAX_H__
16020#ifndef __GSL_INLINE_H__
16021#define __GSL_INLINE_H__
16050# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
16051# define INLINE_DECL inline
16052# define INLINE_FUN inline
16054# define INLINE_DECL
16055# define INLINE_FUN extern inline
16058# define INLINE_DECL
16065#define GSL_RANGE_COND(x) (x)
16077#define GSL_MAX(a,b) ((a) > (b) ? (a) : (b))
16078#define GSL_MIN(a,b) ((a) < (b) ? (a) : (b))
16081double gsl_max (
double a,
double b);
16082double gsl_min (
double a,
double b);
16087INLINE_FUN
int GSL_MAX_INT (
int a,
int b);
16088INLINE_FUN
int GSL_MIN_INT (
int a,
int b);
16089INLINE_FUN
double GSL_MAX_DBL (
double a,
double b);
16090INLINE_FUN
double GSL_MIN_DBL (
double a,
double b);
16091INLINE_FUN
long double GSL_MAX_LDBL (
long double a,
long double b);
16092INLINE_FUN
long double GSL_MIN_LDBL (
long double a,
long double b);
16095GSL_MAX_INT (
int a,
int b)
16097 return GSL_MAX (a, b);
16101GSL_MIN_INT (
int a,
int b)
16103 return GSL_MIN (a, b);
16107GSL_MAX_DBL (
double a,
double b)
16109 return GSL_MAX (a, b);
16113GSL_MIN_DBL (
double a,
double b)
16115 return GSL_MIN (a, b);
16118INLINE_FUN
long double
16119GSL_MAX_LDBL (
long double a,
long double b)
16121 return GSL_MAX (a, b);
16124INLINE_FUN
long double
16125GSL_MIN_LDBL (
long double a,
long double b)
16127 return GSL_MIN (a, b);
16130#define GSL_MAX_INT(a,b) GSL_MAX(a,b)
16131#define GSL_MIN_INT(a,b) GSL_MIN(a,b)
16132#define GSL_MAX_DBL(a,b) GSL_MAX(a,b)
16133#define GSL_MIN_DBL(a,b) GSL_MIN(a,b)
16134#define GSL_MAX_LDBL(a,b) GSL_MAX(a,b)
16135#define GSL_MIN_LDBL(a,b) GSL_MIN(a,b)
16144#define M_E 2.71828182845904523536028747135
16148#define M_LOG2E 1.44269504088896340735992468100
16152#define M_LOG10E 0.43429448190325182765112891892
16156#define M_SQRT2 1.41421356237309504880168872421
16160#define M_SQRT1_2 0.70710678118654752440084436210
16165#define M_SQRT3 1.73205080756887729352744634151
16169#define M_PI 3.14159265358979323846264338328
16173#define M_PI_2 1.57079632679489661923132169164
16177#define M_PI_4 0.78539816339744830961566084582
16181#define M_SQRTPI 1.77245385090551602729816748334
16185#define M_2_SQRTPI 1.12837916709551257389615890312
16189#define M_1_PI 0.31830988618379067153776752675
16193#define M_2_PI 0.63661977236758134307553505349
16197#define M_LN10 2.30258509299404568401799145468
16201#define M_LN2 0.69314718055994530941723212146
16205#define M_LNPI 1.14472988584940017414342735135
16209#define M_EULER 0.57721566490153286060651209008
16218#define GSL_IS_ODD(n) ((n) & 1)
16219#define GSL_IS_EVEN(n) (!(GSL_IS_ODD(n)))
16220#define GSL_SIGN(x) ((x) >= 0.0 ? 1 : -1)
16223#define GSL_IS_REAL(x) (gsl_finite(x))
16229 double (* function) (
double x,
void * params);
16235#define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params)
16241 double (* f) (
double x,
void * params);
16242 double (* df) (
double x,
void * params);
16243 void (* fdf) (
double x,
void * params,
double * f,
double * df);
16249#define GSL_FN_FDF_EVAL_F(FDF,x) (*((FDF)->f))(x,(FDF)->params)
16250#define GSL_FN_FDF_EVAL_DF(FDF,x) (*((FDF)->df))(x,(FDF)->params)
16251#define GSL_FN_FDF_EVAL_F_DF(FDF,x,y,dy) (*((FDF)->fdf))(x,(FDF)->params,(y),(dy))
16258 int (* function) (
double x,
double y[],
void * params);
16264#define GSL_FN_VEC_EVAL(F,x,y) (*((F)->function))(x,y,(F)->params)
16291#ifndef __GSL_ERRNO_H__
16292#define __GSL_ERRNO_H__
16316#ifndef __GSL_TYPES_H__
16317#define __GSL_TYPES_H__
16324# define GSL_VAR extern __declspec(dllexport)
16326# define GSL_VAR extern __declspec(dllimport)
16329# define GSL_VAR extern
16332# define GSL_VAR extern
16382void gsl_error (
const char * reason,
const char * file,
int line,
16385void gsl_stream_printf (
const char *label,
const char *file,
16386 int line,
const char *reason);
16388typedef void gsl_error_handler_t (
const char * reason,
const char * file,
16389 int line,
int gsl_errno);
16391gsl_error_handler_t *
16392gsl_set_error_handler (gsl_error_handler_t * new_handler);
16396#define GSL_ERROR(reason, gsl_errno) \
16398 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
16399 return gsl_errno ; \
16404#define GSL_ERROR_VAL(reason, gsl_errno, value) \
16406 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
16413#define GSL_ERROR_VOID(reason, gsl_errno) \
16415 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
16421#define GSL_ERROR_NULL(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, 0)
16437#define GSL_ERROR_SELECT_2(a,b) ((a) != GSL_SUCCESS ? (a) : ((b) != GSL_SUCCESS ? (b) : GSL_SUCCESS))
16438#define GSL_ERROR_SELECT_3(a,b,c) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_2(b,c))
16439#define GSL_ERROR_SELECT_4(a,b,c,d) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_3(b,c,d))
16440#define GSL_ERROR_SELECT_5(a,b,c,d,e) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_4(b,c,d,e))
16442#define GSL_STATUS_UPDATE(sp, s) do { if ((s) != GSL_SUCCESS) *(sp) = (s);} while(0)
16473#ifndef __GSL_SF_ELEMENTARY_H__
16474#define __GSL_SF_ELEMENTARY_H__
16497#ifndef __GSL_SF_RESULT_H__
16498#define __GSL_SF_RESULT_H__
16510#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
16521int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
16538int gsl_sf_multiply_e(
const double x,
const double y, gsl_sf_result * result);
16539double gsl_sf_multiply(
const double x,
const double y);
16544int gsl_sf_multiply_err_e(
const double x,
const double dx,
const double y,
const double dy, gsl_sf_result * result);
16574#ifndef __GSL_SF_EXP_H__
16575#define __GSL_SF_EXP_H__
16598#ifndef __GSL_SF_RESULT_H__
16599#define __GSL_SF_RESULT_H__
16611#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
16622int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
16652#ifndef __GSL_PRECISION_H__
16653#define __GSL_PRECISION_H__
16674#ifndef __GSL_TYPES_H__
16675#define __GSL_TYPES_H__
16682# define GSL_VAR extern __declspec(dllexport)
16684# define GSL_VAR extern __declspec(dllimport)
16687# define GSL_VAR extern
16690# define GSL_VAR extern
16706typedef unsigned int gsl_prec_t;
16713#define _GSL_PREC_T_NUM 3
16720GSL_VAR
const double gsl_prec_eps[];
16721GSL_VAR
const double gsl_prec_sqrt_eps[];
16722GSL_VAR
const double gsl_prec_root3_eps[];
16723GSL_VAR
const double gsl_prec_root4_eps[];
16724GSL_VAR
const double gsl_prec_root5_eps[];
16725GSL_VAR
const double gsl_prec_root6_eps[];
16742int gsl_sf_exp_e(
const double x, gsl_sf_result * result);
16743double gsl_sf_exp(
const double x);
16750int gsl_sf_exp_e10_e(
const double x, gsl_sf_result_e10 * result);
16757int gsl_sf_exp_mult_e(
const double x,
const double y, gsl_sf_result * result);
16758double gsl_sf_exp_mult(
const double x,
const double y);
16765int gsl_sf_exp_mult_e10_e(
const double x,
const double y, gsl_sf_result_e10 * result);
16772int gsl_sf_expm1_e(
const double x, gsl_sf_result * result);
16773double gsl_sf_expm1(
const double x);
16780int gsl_sf_exprel_e(
const double x, gsl_sf_result * result);
16781double gsl_sf_exprel(
const double x);
16788int gsl_sf_exprel_2_e(
double x, gsl_sf_result * result);
16789double gsl_sf_exprel_2(
const double x);
16799int gsl_sf_exprel_n_e(
const int n,
const double x, gsl_sf_result * result);
16800double gsl_sf_exprel_n(
const int n,
const double x);
16802int gsl_sf_exprel_n_CF_e(
const double n,
const double x, gsl_sf_result * result);
16807int gsl_sf_exp_err_e(
const double x,
const double dx, gsl_sf_result * result);
16811int gsl_sf_exp_err_e10_e(
const double x,
const double dx, gsl_sf_result_e10 * result);
16819int gsl_sf_exp_mult_err_e(
const double x,
const double dx,
const double y,
const double dy, gsl_sf_result * result);
16827int gsl_sf_exp_mult_err_e10_e(
const double x,
const double dx,
const double y,
const double dy, gsl_sf_result_e10 * result);
16856#ifndef __GSL_SF_GAMMA_H__
16857#define __GSL_SF_GAMMA_H__
16880#ifndef __GSL_SF_RESULT_H__
16881#define __GSL_SF_RESULT_H__
16893#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
16904int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
16924int gsl_sf_lngamma_e(
double x, gsl_sf_result * result);
16925double gsl_sf_lngamma(
const double x);
16935int gsl_sf_lngamma_sgn_e(
double x, gsl_sf_result * result_lg,
double *sgn);
16943int gsl_sf_gamma_e(
const double x, gsl_sf_result * result);
16944double gsl_sf_gamma(
const double x);
16954int gsl_sf_gammastar_e(
const double x, gsl_sf_result * result);
16955double gsl_sf_gammastar(
const double x);
16963int gsl_sf_gammainv_e(
const double x, gsl_sf_result * result);
16964double gsl_sf_gammainv(
const double x);
16980int gsl_sf_lngamma_complex_e(
double zr,
double zi, gsl_sf_result * lnr, gsl_sf_result * arg);
16988int gsl_sf_taylorcoeff_e(
const int n,
const double x, gsl_sf_result * result);
16989double gsl_sf_taylorcoeff(
const int n,
const double x);
16996int gsl_sf_fact_e(
const unsigned int n, gsl_sf_result * result);
16997double gsl_sf_fact(
const unsigned int n);
17004int gsl_sf_doublefact_e(
const unsigned int n, gsl_sf_result * result);
17005double gsl_sf_doublefact(
const unsigned int n);
17013int gsl_sf_lnfact_e(
const unsigned int n, gsl_sf_result * result);
17014double gsl_sf_lnfact(
const unsigned int n);
17021int gsl_sf_lndoublefact_e(
const unsigned int n, gsl_sf_result * result);
17022double gsl_sf_lndoublefact(
const unsigned int n);
17029int gsl_sf_lnchoose_e(
unsigned int n,
unsigned int m, gsl_sf_result * result);
17030double gsl_sf_lnchoose(
unsigned int n,
unsigned int m);
17037int gsl_sf_choose_e(
unsigned int n,
unsigned int m, gsl_sf_result * result);
17038double gsl_sf_choose(
unsigned int n,
unsigned int m);
17049int gsl_sf_lnpoch_e(
const double a,
const double x, gsl_sf_result * result);
17050double gsl_sf_lnpoch(
const double a,
const double x);
17062int gsl_sf_lnpoch_sgn_e(
const double a,
const double x, gsl_sf_result * result,
double * sgn);
17072int gsl_sf_poch_e(
const double a,
const double x, gsl_sf_result * result);
17073double gsl_sf_poch(
const double a,
const double x);
17082int gsl_sf_pochrel_e(
const double a,
const double x, gsl_sf_result * result);
17083double gsl_sf_pochrel(
const double a,
const double x);
17096int gsl_sf_gamma_inc_Q_e(
const double a,
const double x, gsl_sf_result * result);
17097double gsl_sf_gamma_inc_Q(
const double a,
const double x);
17108int gsl_sf_gamma_inc_P_e(
const double a,
const double x, gsl_sf_result * result);
17109double gsl_sf_gamma_inc_P(
const double a,
const double x);
17121int gsl_sf_gamma_inc_e(
const double a,
const double x, gsl_sf_result * result);
17122double gsl_sf_gamma_inc(
const double a,
const double x);
17131int gsl_sf_lnbeta_e(
const double a,
const double b, gsl_sf_result * result);
17132double gsl_sf_lnbeta(
const double a,
const double b);
17134int gsl_sf_lnbeta_sgn_e(
const double x,
const double y, gsl_sf_result * result,
double * sgn);
17143int gsl_sf_beta_e(
const double a,
const double b, gsl_sf_result * result);
17144double gsl_sf_beta(
const double a,
const double b);
17153int gsl_sf_beta_inc_e(
const double a,
const double b,
const double x, gsl_sf_result * result);
17154double gsl_sf_beta_inc(
const double a,
const double b,
const double x);
17160#define GSL_SF_GAMMA_XMAX 171.0
17163#define GSL_SF_FACT_NMAX 170
17166#define GSL_SF_DOUBLEFACT_NMAX 297
17195#ifndef __GSL_SF_POW_INT_H__
17196#define __GSL_SF_POW_INT_H__
17219#ifndef __GSL_SF_RESULT_H__
17220#define __GSL_SF_RESULT_H__
17232#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
17243int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
17259int gsl_sf_pow_int_e(
double x,
int n, gsl_sf_result * result);
17260double gsl_sf_pow_int(
const double x,
const int n);
17290#ifndef __GSL_SF_ZETA_H__
17291#define __GSL_SF_ZETA_H__
17314#ifndef __GSL_SF_RESULT_H__
17315#define __GSL_SF_RESULT_H__
17327#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
17338int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
17357int gsl_sf_zeta_int_e(
const int n, gsl_sf_result * result);
17358double gsl_sf_zeta_int(
const int n);
17367int gsl_sf_zeta_e(
const double s, gsl_sf_result * result);
17368double gsl_sf_zeta(
const double s);
17378int gsl_sf_zetam1_e(
const double s, gsl_sf_result * result);
17379double gsl_sf_zetam1(
const double s);
17389int gsl_sf_zetam1_int_e(
const int s, gsl_sf_result * result);
17390double gsl_sf_zetam1_int(
const int s);
17399int gsl_sf_hzeta_e(
const double s,
const double q, gsl_sf_result * result);
17400double gsl_sf_hzeta(
const double s,
const double q);
17408int gsl_sf_eta_int_e(
int n, gsl_sf_result * result);
17409double gsl_sf_eta_int(
const int n);
17417int gsl_sf_eta_e(
const double s, gsl_sf_result * result);
17418double gsl_sf_eta(
const double s);
17431#define LogTwoPi_ 1.8378770664093454835606594728111235279723
17440static double zeta_xlt1_data[14] = {
17441 1.48018677156931561235192914649,
17442 0.25012062539889426471999938167,
17443 0.00991137502135360774243761467,
17444 -0.00012084759656676410329833091,
17445 -4.7585866367662556504652535281e-06,
17446 2.2229946694466391855561441361e-07,
17447 -2.2237496498030257121309056582e-09,
17448 -1.0173226513229028319420799028e-10,
17449 4.3756643450424558284466248449e-12,
17450 -6.2229632593100551465504090814e-14,
17451 -6.6116201003272207115277520305e-16,
17452 4.9477279533373912324518463830e-17,
17453 -1.0429819093456189719660003522e-18,
17454 6.9925216166580021051464412040e-21,
17456static cheb_series zeta_xlt1_cs = {
17467static double zeta_xgt1_data[30] = {
17468 19.3918515726724119415911269006,
17469 9.1525329692510756181581271500,
17470 0.2427897658867379985365270155,
17471 -0.1339000688262027338316641329,
17472 0.0577827064065028595578410202,
17473 -0.0187625983754002298566409700,
17474 0.0039403014258320354840823803,
17475 -0.0000581508273158127963598882,
17476 -0.0003756148907214820704594549,
17477 0.0001892530548109214349092999,
17478 -0.0000549032199695513496115090,
17479 8.7086484008939038610413331863e-6,
17480 6.4609477924811889068410083425e-7,
17481 -9.6749773915059089205835337136e-7,
17482 3.6585400766767257736982342461e-7,
17483 -8.4592516427275164351876072573e-8,
17484 9.9956786144497936572288988883e-9,
17485 1.4260036420951118112457144842e-9,
17486 -1.1761968823382879195380320948e-9,
17487 3.7114575899785204664648987295e-10,
17488 -7.4756855194210961661210215325e-11,
17489 7.8536934209183700456512982968e-12,
17490 9.9827182259685539619810406271e-13,
17491 -7.5276687030192221587850302453e-13,
17492 2.1955026393964279988917878654e-13,
17493 -4.1934859852834647427576319246e-14,
17494 4.6341149635933550715779074274e-15,
17495 2.3742488509048340106830309402e-16,
17496 -2.7276516388124786119323824391e-16,
17497 7.8473570134636044722154797225e-17
17499static cheb_series zeta_xgt1_cs = {
17511static double zetam1_inter_data[24] = {
17512 -21.7509435653088483422022339374,
17513 -5.63036877698121782876372020472,
17514 0.0528041358684229425504861579635,
17515 -0.0156381809179670789342700883562,
17516 0.00408218474372355881195080781927,
17517 -0.0010264867349474874045036628282,
17518 0.000260469880409886900143834962387,
17519 -0.0000676175847209968878098566819447,
17520 0.0000179284472587833525426660171124,
17521 -4.83238651318556188834107605116e-6,
17522 1.31913788964999288471371329447e-6,
17523 -3.63760500656329972578222188542e-7,
17524 1.01146847513194744989748396574e-7,
17525 -2.83215225141806501619105289509e-8,
17526 7.97733710252021423361012829496e-9,
17527 -2.25850168553956886676250696891e-9,
17528 6.42269392950164306086395744145e-10,
17529 -1.83363861846127284505060843614e-10,
17530 5.25309763895283179960368072104e-11,
17531 -1.50958687042589821074710575446e-11,
17532 4.34997545516049244697776942981e-12,
17533 -1.25597782748190416118082322061e-12,
17534 3.61280740072222650030134104162e-13,
17535 -9.66437239205745207188920348801e-14
17537static cheb_series zetam1_inter_cs = {
17549riemann_zeta_sgt0(
double s, gsl_sf_result * result)
17553 cheb_eval_e(&zeta_xlt1_cs, 2.0*s - 1.0, &c);
17554 result->val = c.val / (s - 1.0);
17555 result->err = c.err / fabs(s-1.0) + GSL_DBL_EPSILON * fabs(result->val);
17556 return GSL_SUCCESS;
17558 else if(s <= 20.0) {
17559 double x = (2.0*s - 21.0)/19.0;
17561 cheb_eval_e(&zeta_xgt1_cs, x, &c);
17562 result->val = c.val / (s - 1.0);
17563 result->err = c.err / (s - 1.0) + GSL_DBL_EPSILON * fabs(result->val);
17564 return GSL_SUCCESS;
17567 double f2 = 1.0 - pow(2.0,-s);
17568 double f3 = 1.0 - pow(3.0,-s);
17569 double f5 = 1.0 - pow(5.0,-s);
17570 double f7 = 1.0 - pow(7.0,-s);
17571 result->val = 1.0/(f2*f3*f5*f7);
17572 result->err = 3.0 * GSL_DBL_EPSILON * fabs(result->val);
17573 return GSL_SUCCESS;
17580riemann_zeta1ms_slt0(
double s, gsl_sf_result * result)
17583 double x = (-19 - 2.0*s)/19.0;
17585 cheb_eval_e(&zeta_xgt1_cs, x, &c);
17586 result->val = c.val / (-s);
17587 result->err = c.err / (-s) + GSL_DBL_EPSILON * fabs(result->val);
17588 return GSL_SUCCESS;
17591 double f2 = 1.0 - pow(2.0,-(1.0-s));
17592 double f3 = 1.0 - pow(3.0,-(1.0-s));
17593 double f5 = 1.0 - pow(5.0,-(1.0-s));
17594 double f7 = 1.0 - pow(7.0,-(1.0-s));
17595 result->val = 1.0/(f2*f3*f5*f7);
17596 result->err = 3.0 * GSL_DBL_EPSILON * fabs(result->val);
17597 return GSL_SUCCESS;
17604riemann_zeta_minus_1_intermediate_s(
double s, gsl_sf_result * result)
17606 double t = (s - 10.0)/5.0;
17608 cheb_eval_e(&zetam1_inter_cs, t, &c);
17609 result->val = exp(c.val) + pow(2.0, -s);
17610 result->err = (c.err + 2.0*GSL_DBL_EPSILON)*result->val;
17611 return GSL_SUCCESS;
17622riemann_zeta_minus1_large_s(
double s, gsl_sf_result * result)
17624 double a = pow( 2.0,-s);
17625 double b = pow( 3.0,-s);
17626 double c = pow( 5.0,-s);
17627 double d = pow( 7.0,-s);
17628 double e = pow(11.0,-s);
17629 double f = pow(13.0,-s);
17630 double t1 = a + b + c + d + e + f;
17631 double t2 = a*(b+c+d+e+f) + b*(c+d+e+f) + c*(d+e+f) + d*(e+f) + e*f;
17643 double numt = t1 - t2 ;
17644 double zeta = 1.0/((1.0-a)*(1.0-b)*(1.0-c)*(1.0-d)*(1.0-e)*(1.0-f));
17645 result->val = numt*zeta;
17646 result->err = (15.0/s + 1.0) * 6.0*GSL_DBL_EPSILON*result->val;
17647 return GSL_SUCCESS;
17653#define ZETA_POS_TABLE_NMAX 100
17654static double zeta_pos_int_table_OLD[ZETA_POS_TABLE_NMAX+1] = {
17655 -0.50000000000000000000000000000,
17657 1.64493406684822643647241516665,
17658 1.20205690315959428539973816151,
17659 1.08232323371113819151600369654,
17660 1.03692775514336992633136548646,
17661 1.01734306198444913971451792979,
17662 1.00834927738192282683979754985,
17663 1.00407735619794433937868523851,
17664 1.00200839282608221441785276923,
17665 1.00099457512781808533714595890,
17666 1.00049418860411946455870228253,
17667 1.00024608655330804829863799805,
17668 1.00012271334757848914675183653,
17669 1.00006124813505870482925854511,
17670 1.00003058823630702049355172851,
17671 1.00001528225940865187173257149,
17672 1.00000763719763789976227360029,
17673 1.00000381729326499983985646164,
17674 1.00000190821271655393892565696,
17675 1.00000095396203387279611315204,
17676 1.00000047693298678780646311672,
17677 1.00000023845050272773299000365,
17678 1.00000011921992596531107306779,
17679 1.00000005960818905125947961244,
17680 1.00000002980350351465228018606,
17681 1.00000001490155482836504123466,
17682 1.00000000745071178983542949198,
17683 1.00000000372533402478845705482,
17684 1.00000000186265972351304900640,
17685 1.00000000093132743241966818287,
17686 1.00000000046566290650337840730,
17687 1.00000000023283118336765054920,
17688 1.00000000011641550172700519776,
17689 1.00000000005820772087902700889,
17690 1.00000000002910385044497099687,
17691 1.00000000001455192189104198424,
17692 1.00000000000727595983505748101,
17693 1.00000000000363797954737865119,
17694 1.00000000000181898965030706595,
17695 1.00000000000090949478402638893,
17696 1.00000000000045474737830421540,
17697 1.00000000000022737368458246525,
17698 1.00000000000011368684076802278,
17699 1.00000000000005684341987627586,
17700 1.00000000000002842170976889302,
17701 1.00000000000001421085482803161,
17702 1.00000000000000710542739521085,
17703 1.00000000000000355271369133711,
17704 1.00000000000000177635684357912,
17705 1.00000000000000088817842109308,
17706 1.00000000000000044408921031438,
17707 1.00000000000000022204460507980,
17708 1.00000000000000011102230251411,
17709 1.00000000000000005551115124845,
17710 1.00000000000000002775557562136,
17711 1.00000000000000001387778780973,
17712 1.00000000000000000693889390454,
17713 1.00000000000000000346944695217,
17714 1.00000000000000000173472347605,
17715 1.00000000000000000086736173801,
17716 1.00000000000000000043368086900,
17717 1.00000000000000000021684043450,
17718 1.00000000000000000010842021725,
17719 1.00000000000000000005421010862,
17720 1.00000000000000000002710505431,
17721 1.00000000000000000001355252716,
17722 1.00000000000000000000677626358,
17723 1.00000000000000000000338813179,
17724 1.00000000000000000000169406589,
17725 1.00000000000000000000084703295,
17726 1.00000000000000000000042351647,
17727 1.00000000000000000000021175824,
17728 1.00000000000000000000010587912,
17729 1.00000000000000000000005293956,
17730 1.00000000000000000000002646978,
17731 1.00000000000000000000001323489,
17732 1.00000000000000000000000661744,
17733 1.00000000000000000000000330872,
17734 1.00000000000000000000000165436,
17735 1.00000000000000000000000082718,
17736 1.00000000000000000000000041359,
17737 1.00000000000000000000000020680,
17738 1.00000000000000000000000010340,
17739 1.00000000000000000000000005170,
17740 1.00000000000000000000000002585,
17741 1.00000000000000000000000001292,
17742 1.00000000000000000000000000646,
17743 1.00000000000000000000000000323,
17744 1.00000000000000000000000000162,
17745 1.00000000000000000000000000081,
17746 1.00000000000000000000000000040,
17747 1.00000000000000000000000000020,
17748 1.00000000000000000000000000010,
17749 1.00000000000000000000000000005,
17750 1.00000000000000000000000000003,
17751 1.00000000000000000000000000001,
17752 1.00000000000000000000000000001,
17753 1.00000000000000000000000000000,
17754 1.00000000000000000000000000000,
17755 1.00000000000000000000000000000
17761#define ZETA_POS_TABLE_NMAX 100
17762static double zetam1_pos_int_table[ZETA_POS_TABLE_NMAX+1] = {
17765 0.644934066848226436472415166646,
17766 0.202056903159594285399738161511,
17767 0.082323233711138191516003696541,
17768 0.036927755143369926331365486457,
17769 0.017343061984449139714517929790,
17770 0.008349277381922826839797549849,
17771 0.004077356197944339378685238508,
17772 0.002008392826082214417852769232,
17773 0.000994575127818085337145958900,
17774 0.000494188604119464558702282526,
17775 0.000246086553308048298637998047,
17776 0.000122713347578489146751836526,
17777 0.000061248135058704829258545105,
17778 0.000030588236307020493551728510,
17779 0.000015282259408651871732571487,
17780 7.6371976378997622736002935630e-6,
17781 3.8172932649998398564616446219e-6,
17782 1.9082127165539389256569577951e-6,
17783 9.5396203387279611315203868344e-7,
17784 4.7693298678780646311671960437e-7,
17785 2.3845050272773299000364818675e-7,
17786 1.1921992596531107306778871888e-7,
17787 5.9608189051259479612440207935e-8,
17788 2.9803503514652280186063705069e-8,
17789 1.4901554828365041234658506630e-8,
17790 7.4507117898354294919810041706e-9,
17791 3.7253340247884570548192040184e-9,
17792 1.8626597235130490064039099454e-9,
17793 9.3132743241966818287176473502e-10,
17794 4.6566290650337840729892332512e-10,
17795 2.3283118336765054920014559759e-10,
17796 1.1641550172700519775929738354e-10,
17797 5.8207720879027008892436859891e-11,
17798 2.9103850444970996869294252278e-11,
17799 1.4551921891041984235929632245e-11,
17800 7.2759598350574810145208690123e-12,
17801 3.6379795473786511902372363558e-12,
17802 1.8189896503070659475848321007e-12,
17803 9.0949478402638892825331183869e-13,
17804 4.5474737830421540267991120294e-13,
17805 2.2737368458246525152268215779e-13,
17806 1.1368684076802278493491048380e-13,
17807 5.6843419876275856092771829675e-14,
17808 2.8421709768893018554550737049e-14,
17809 1.4210854828031606769834307141e-14,
17810 7.1054273952108527128773544799e-15,
17811 3.5527136913371136732984695340e-15,
17812 1.7763568435791203274733490144e-15,
17813 8.8817842109308159030960913863e-16,
17814 4.4408921031438133641977709402e-16,
17815 2.2204460507980419839993200942e-16,
17816 1.1102230251410661337205445699e-16,
17817 5.5511151248454812437237365905e-17,
17818 2.7755575621361241725816324538e-17,
17819 1.3877787809725232762839094906e-17,
17820 6.9388939045441536974460853262e-18,
17821 3.4694469521659226247442714961e-18,
17822 1.7347234760475765720489729699e-18,
17823 8.6736173801199337283420550673e-19,
17824 4.3368086900206504874970235659e-19,
17825 2.1684043449972197850139101683e-19,
17826 1.0842021724942414063012711165e-19,
17827 5.4210108624566454109187004043e-20,
17828 2.7105054312234688319546213119e-20,
17829 1.3552527156101164581485233996e-20,
17830 6.7762635780451890979952987415e-21,
17831 3.3881317890207968180857031004e-21,
17832 1.6940658945097991654064927471e-21,
17833 8.4703294725469983482469926091e-22,
17834 4.2351647362728333478622704833e-22,
17835 2.1175823681361947318442094398e-22,
17836 1.0587911840680233852265001539e-22,
17837 5.2939559203398703238139123029e-23,
17838 2.6469779601698529611341166842e-23,
17839 1.3234889800848990803094510250e-23,
17840 6.6174449004244040673552453323e-24,
17841 3.3087224502121715889469563843e-24,
17842 1.6543612251060756462299236771e-24,
17843 8.2718061255303444036711056167e-25,
17844 4.1359030627651609260093824555e-25,
17845 2.0679515313825767043959679193e-25,
17846 1.0339757656912870993284095591e-25,
17847 5.1698788284564313204101332166e-26,
17848 2.5849394142282142681277617708e-26,
17849 1.2924697071141066700381126118e-26,
17850 6.4623485355705318034380021611e-27,
17851 3.2311742677852653861348141180e-27,
17852 1.6155871338926325212060114057e-27,
17853 8.0779356694631620331587381863e-28,
17854 4.0389678347315808256222628129e-28,
17855 2.0194839173657903491587626465e-28,
17856 1.0097419586828951533619250700e-28,
17857 5.0487097934144756960847711725e-29,
17858 2.5243548967072378244674341938e-29,
17859 1.2621774483536189043753999660e-29,
17860 6.3108872417680944956826093943e-30,
17861 3.1554436208840472391098412184e-30,
17862 1.5777218104420236166444327830e-30,
17863 7.8886090522101180735205378276e-31
17867#define ZETA_NEG_TABLE_NMAX 99
17868#define ZETA_NEG_TABLE_SIZE 50
17869static double zeta_neg_int_table[ZETA_NEG_TABLE_SIZE] = {
17870 -0.083333333333333333333333333333,
17871 0.008333333333333333333333333333,
17872 -0.003968253968253968253968253968,
17873 0.004166666666666666666666666667,
17874 -0.007575757575757575757575757576,
17875 0.021092796092796092796092796093,
17876 -0.083333333333333333333333333333,
17877 0.44325980392156862745098039216,
17878 -3.05395433027011974380395433027,
17879 26.4562121212121212121212121212,
17880 -281.460144927536231884057971014,
17881 3607.5105463980463980463980464,
17882 -54827.583333333333333333333333,
17883 974936.82385057471264367816092,
17884 -2.0052695796688078946143462272e+07,
17885 4.7238486772162990196078431373e+08,
17886 -1.2635724795916666666666666667e+10,
17887 3.8087931125245368811553022079e+11,
17888 -1.2850850499305083333333333333e+13,
17889 4.8241448354850170371581670362e+14,
17890 -2.0040310656516252738108421663e+16,
17891 9.1677436031953307756992753623e+17,
17892 -4.5979888343656503490437943262e+19,
17893 2.5180471921451095697089023320e+21,
17894 -1.5001733492153928733711440151e+23,
17895 9.6899578874635940656497942895e+24,
17896 -6.7645882379292820990945242302e+26,
17897 5.0890659468662289689766332916e+28,
17898 -4.1147288792557978697665486068e+30,
17899 3.5666582095375556109684574609e+32,
17900 -3.3066089876577576725680214670e+34,
17901 3.2715634236478716264211227016e+36,
17902 -3.4473782558278053878256455080e+38,
17903 3.8614279832705258893092720200e+40,
17904 -4.5892974432454332168863989006e+42,
17905 5.7775386342770431824884825688e+44,
17906 -7.6919858759507135167410075972e+46,
17907 1.0813635449971654696354033351e+49,
17908 -1.6029364522008965406067102346e+51,
17909 2.5019479041560462843656661499e+53,
17910 -4.1067052335810212479752045004e+55,
17911 7.0798774408494580617452972433e+57,
17912 -1.2804546887939508790190849756e+60,
17913 2.4267340392333524078020892067e+62,
17914 -4.8143218874045769355129570066e+64,
17915 9.9875574175727530680652777408e+66,
17916 -2.1645634868435185631335136160e+69,
17917 4.8962327039620553206849224516e+71,
17918 -1.1549023923963519663954271692e+74,
17919 2.8382249570693706959264156336e+76
17926static double hzeta_c[15] = {
17927 1.00000000000000000000000000000,
17928 0.083333333333333333333333333333,
17929 -0.00138888888888888888888888888889,
17930 0.000033068783068783068783068783069,
17931 -8.2671957671957671957671957672e-07,
17932 2.0876756987868098979210090321e-08,
17933 -5.2841901386874931848476822022e-10,
17934 1.3382536530684678832826980975e-11,
17935 -3.3896802963225828668301953912e-13,
17936 8.5860620562778445641359054504e-15,
17937 -2.1748686985580618730415164239e-16,
17938 5.5090028283602295152026526089e-18,
17939 -1.3954464685812523340707686264e-19,
17940 3.5347070396294674716932299778e-21,
17941 -8.9535174270375468504026113181e-23
17944#define ETA_POS_TABLE_NMAX 100
17945static double eta_pos_int_table[ETA_POS_TABLE_NMAX+1] = {
179460.50000000000000000000000000000,
179480.82246703342411321823620758332,
179490.90154267736969571404980362113,
179500.94703282949724591757650323447,
179510.97211977044690930593565514355,
179520.98555109129743510409843924448,
179530.99259381992283028267042571313,
179540.99623300185264789922728926008,
179550.99809429754160533076778303185,
179560.99903950759827156563922184570,
179570.99951714349806075414409417483,
179580.99975768514385819085317967871,
179590.99987854276326511549217499282,
179600.99993917034597971817095419226,
179610.99996955121309923808263293263,
179620.99998476421490610644168277496,
179630.99999237829204101197693787224,
179640.99999618786961011347968922641,
179650.99999809350817167510685649297,
179660.99999904661158152211505084256,
179670.99999952325821554281631666433,
179680.99999976161323082254789720494,
179690.99999988080131843950322382485,
179700.99999994039889239462836140314,
179710.99999997019885696283441513311,
179720.99999998509923199656878766181,
179730.99999999254955048496351585274,
179740.99999999627475340010872752767,
179750.99999999813736941811218674656,
179760.99999999906868228145397862728,
179770.99999999953434033145421751469,
179780.99999999976716989595149082282,
179790.99999999988358485804603047265,
179800.99999999994179239904531592388,
179810.99999999997089618952980952258,
179820.99999999998544809143388476396,
179830.99999999999272404460658475006,
179840.99999999999636202193316875550,
179850.99999999999818101084320873555,
179860.99999999999909050538047887809,
179870.99999999999954525267653087357,
179880.99999999999977262633369589773,
179890.99999999999988631316532476488,
179900.99999999999994315658215465336,
179910.99999999999997157829090808339,
179920.99999999999998578914539762720,
179930.99999999999999289457268000875,
179940.99999999999999644728633373609,
179950.99999999999999822364316477861,
179960.99999999999999911182158169283,
179970.99999999999999955591079061426,
179980.99999999999999977795539522974,
179990.99999999999999988897769758908,
180000.99999999999999994448884878594,
180010.99999999999999997224442439010,
180020.99999999999999998612221219410,
180030.99999999999999999306110609673,
180040.99999999999999999653055304826,
180050.99999999999999999826527652409,
180060.99999999999999999913263826204,
180070.99999999999999999956631913101,
180080.99999999999999999978315956551,
180090.99999999999999999989157978275,
180100.99999999999999999994578989138,
180110.99999999999999999997289494569,
180120.99999999999999999998644747284,
180130.99999999999999999999322373642,
180140.99999999999999999999661186821,
180150.99999999999999999999830593411,
180160.99999999999999999999915296705,
180170.99999999999999999999957648353,
180180.99999999999999999999978824176,
180190.99999999999999999999989412088,
180200.99999999999999999999994706044,
180210.99999999999999999999997353022,
180220.99999999999999999999998676511,
180230.99999999999999999999999338256,
180240.99999999999999999999999669128,
180250.99999999999999999999999834564,
180260.99999999999999999999999917282,
180270.99999999999999999999999958641,
180280.99999999999999999999999979320,
180290.99999999999999999999999989660,
180300.99999999999999999999999994830,
180310.99999999999999999999999997415,
180320.99999999999999999999999998708,
180330.99999999999999999999999999354,
180340.99999999999999999999999999677,
180350.99999999999999999999999999838,
180360.99999999999999999999999999919,
180370.99999999999999999999999999960,
180380.99999999999999999999999999980,
180390.99999999999999999999999999990,
180400.99999999999999999999999999995,
180410.99999999999999999999999999997,
180420.99999999999999999999999999999,
180430.99999999999999999999999999999,
180441.00000000000000000000000000000,
180451.00000000000000000000000000000,
180461.00000000000000000000000000000,
18050#define ETA_NEG_TABLE_NMAX 99
18051#define ETA_NEG_TABLE_SIZE 50
18052static double eta_neg_int_table[ETA_NEG_TABLE_SIZE] = {
18053 0.25000000000000000000000000000,
18054-0.12500000000000000000000000000,
18055 0.25000000000000000000000000000,
18056-1.06250000000000000000000000000,
18057 7.75000000000000000000000000000,
18058-86.3750000000000000000000000000,
18059 1365.25000000000000000000000000,
18060-29049.0312500000000000000000000,
18061 800572.750000000000000000000000,
18062-2.7741322625000000000000000000e+7,
18063 1.1805291302500000000000000000e+9,
18064-6.0523980051687500000000000000e+10,
18065 3.6794167785377500000000000000e+12,
18066-2.6170760990658387500000000000e+14,
18067 2.1531418140800295250000000000e+16,
18068-2.0288775575173015930156250000e+18,
18069 2.1708009902623770590275000000e+20,
18070-2.6173826968455814932120125000e+22,
18071 3.5324148876863877826668602500e+24,
18072-5.3042033406864906641493838981e+26,
18073 8.8138218364311576767253114668e+28,
18074-1.6128065107490778547354654864e+31,
18075 3.2355470001722734208527794569e+33,
18076-7.0876727476537493198506645215e+35,
18077 1.6890450341293965779175629389e+38,
18078-4.3639690731216831157655651358e+40,
18079 1.2185998827061261322605065672e+43,
18080-3.6670584803153006180101262324e+45,
18081 1.1859898526302099104271449748e+48,
18082-4.1120769493584015047981746438e+50,
18083 1.5249042436787620309090168687e+53,
18084-6.0349693196941307074572991901e+55,
18085 2.5437161764210695823197691519e+58,
18086-1.1396923802632287851130360170e+61,
18087 5.4180861064753979196802726455e+63,
18088-2.7283654799994373847287197104e+66,
18089 1.4529750514918543238511171663e+69,
18090-8.1705519371067450079777183386e+71,
18091 4.8445781606678367790247757259e+74,
18092-3.0246694206649519336179448018e+77,
18093 1.9858807961690493054169047970e+80,
18094-1.3694474620720086994386818232e+83,
18095 9.9070382984295807826303785989e+85,
18096-7.5103780796592645925968460677e+88,
18097 5.9598418264260880840077992227e+91,
18098-4.9455988887500020399263196307e+94,
18099 4.2873596927020241277675775935e+97,
18100-3.8791952037716162900707994047e+100,
18101 3.6600317773156342245401829308e+103,
18102-3.5978775704117283875784869570e+106
18109int gsl_sf_hzeta_e(
const double s,
const double q, gsl_sf_result * result)
18113 if(s <= 1.0 || q <= 0.0) {
18114 DOMAIN_ERROR(result);
18117 const double max_bits = 54.0;
18118 const double ln_term0 = -s * log(q);
18120 if(ln_term0 < GSL_LOG_DBL_MIN + 1.0) {
18121 UNDERFLOW_ERROR(result);
18123 else if(ln_term0 > GSL_LOG_DBL_MAX - 1.0) {
18124 OVERFLOW_ERROR (result);
18126 else if((s > max_bits && q < 1.0) || (s > 0.5*max_bits && q < 0.25)) {
18127 result->val = pow(q, -s);
18128 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
18129 return GSL_SUCCESS;
18131 else if(s > 0.5*max_bits && q < 1.0) {
18132 const double p1 = pow(q, -s);
18133 const double p2 = pow(q/(1.0+q), s);
18134 const double p3 = pow(q/(2.0+q), s);
18135 result->val = p1 * (1.0 + p2 + p3);
18136 result->err = GSL_DBL_EPSILON * (0.5*s + 2.0) * fabs(result->val);
18137 return GSL_SUCCESS;
18143 const int jmax = 12;
18144 const int kmax = 10;
18146 const double pmax = pow(kmax + q, -s);
18148 double pcp = pmax / (kmax + q);
18149 double ans = pmax*((kmax+q)/(s-1.0) + 0.5);
18151 for(k=0; k<kmax; k++) {
18152 ans += pow(k + q, -s);
18155 for(j=0; j<=jmax; j++) {
18156 double delta = hzeta_c[j+1] * scp * pcp;
18158 if(fabs(delta/ans) < 0.5*GSL_DBL_EPSILON)
break;
18159 scp *= (s+2*j+1)*(s+2*j+2);
18160 pcp /= (kmax + q)*(kmax + q);
18164 result->err = 2.0 * (jmax + 1.0) * GSL_DBL_EPSILON * fabs(ans);
18165 return GSL_SUCCESS;
18171int gsl_sf_zeta_e(
const double s, gsl_sf_result * result)
18176 DOMAIN_ERROR(result);
18178 else if(s >= 0.0) {
18179 return riemann_zeta_sgt0(s, result);
18184 gsl_sf_result zeta_one_minus_s;
18185 const int stat_zoms = riemann_zeta1ms_slt0(s, &zeta_one_minus_s);
18186 const double sin_term = (fmod(s,2.0) == 0.0) ? 0.0 : sin(0.5*M_PI*fmod(s,4.0))/M_PI;
18188 if(sin_term == 0.0) {
18191 return GSL_SUCCESS;
18193 else if(s > -170) {
18200 const double twopi_pow[18] = { 1.0,
18201 9.589560061550901348e+007,
18202 9.195966217409212684e+015,
18203 8.818527036583869903e+023,
18204 8.456579467173150313e+031,
18205 8.109487671573504384e+039,
18206 7.776641909496069036e+047,
18207 7.457457466828644277e+055,
18208 7.151373628461452286e+063,
18209 6.857852693272229709e+071,
18210 6.576379029540265771e+079,
18211 6.306458169130020789e+087,
18212 6.047615938853066678e+095,
18213 5.799397627482402614e+103,
18214 5.561367186955830005e+111,
18215 5.333106466365131227e+119,
18216 5.114214477385391780e+127,
18217 4.904306689854036836e+135
18219 const int n = floor((-s)/10.0);
18220 const double fs = s + 10.0*n;
18221 const double p = pow(2.0*M_PI, fs) / twopi_pow[n];
18224 const int stat_g = gsl_sf_gamma_e(1.0-s, &g);
18225 result->val = p * g.val * sin_term * zeta_one_minus_s.val;
18226 result->err = fabs(p * g.val * sin_term) * zeta_one_minus_s.err;
18227 result->err += fabs(p * sin_term * zeta_one_minus_s.val) * g.err;
18228 result->err += GSL_DBL_EPSILON * (fabs(s)+2.0) * fabs(result->val);
18229 return GSL_ERROR_SELECT_2(stat_g, stat_zoms);
18242 OVERFLOW_ERROR(result);
18248int gsl_sf_zeta_int_e(
const int n, gsl_sf_result * result)
18253 if(!GSL_IS_ODD(n)) {
18256 return GSL_SUCCESS;
18258 else if(n > -ZETA_NEG_TABLE_NMAX) {
18259 result->val = zeta_neg_int_table[-(n+1)/2];
18260 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
18261 return GSL_SUCCESS;
18264 return gsl_sf_zeta_e((
double)n, result);
18268 DOMAIN_ERROR(result);
18270 else if(n <= ZETA_POS_TABLE_NMAX){
18271 result->val = 1.0 + zetam1_pos_int_table[n];
18272 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
18273 return GSL_SUCCESS;
18277 result->err = GSL_DBL_EPSILON;
18278 return GSL_SUCCESS;
18283int gsl_sf_zetam1_e(
const double s, gsl_sf_result * result)
18287 int stat = gsl_sf_zeta_e(s, result);
18288 result->val = result->val - 1.0;
18293 return riemann_zeta_minus_1_intermediate_s(s, result);
18297 return riemann_zeta_minus1_large_s(s, result);
18302int gsl_sf_zetam1_int_e(
const int n, gsl_sf_result * result)
18305 if(!GSL_IS_ODD(n)) {
18306 result->val = -1.0;
18308 return GSL_SUCCESS;
18310 else if(n > -ZETA_NEG_TABLE_NMAX) {
18311 result->val = zeta_neg_int_table[-(n+1)/2] - 1.0;
18312 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
18313 return GSL_SUCCESS;
18318 return gsl_sf_zeta_e((
double)n, result);
18322 DOMAIN_ERROR(result);
18324 else if(n <= ZETA_POS_TABLE_NMAX){
18325 result->val = zetam1_pos_int_table[n];
18326 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
18327 return GSL_SUCCESS;
18330 return gsl_sf_zetam1_e(n, result);
18335int gsl_sf_eta_int_e(
int n, gsl_sf_result * result)
18337 if(n > ETA_POS_TABLE_NMAX) {
18339 result->err = GSL_DBL_EPSILON;
18340 return GSL_SUCCESS;
18343 result->val = eta_pos_int_table[n];
18344 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
18345 return GSL_SUCCESS;
18350 if(!GSL_IS_ODD(n)) {
18354 return GSL_SUCCESS;
18356 else if(n > -ETA_NEG_TABLE_NMAX) {
18357 result->val = eta_neg_int_table[-(n+1)/2];
18358 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
18359 return GSL_SUCCESS;
18364 int stat_z = gsl_sf_zeta_int_e(n, &z);
18365 int stat_p = gsl_sf_exp_e((1.0-n)*M_LN2, &p);
18366 int stat_m = gsl_sf_multiply_e(-p.val, z.val, result);
18367 result->err = fabs(p.err * (M_LN2*(1.0-n)) * z.val) + z.err * fabs(p.val);
18368 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
18369 return GSL_ERROR_SELECT_3(stat_m, stat_p, stat_z);
18375int gsl_sf_eta_e(
const double s, gsl_sf_result * result)
18381 result->err = GSL_DBL_EPSILON;
18382 return GSL_SUCCESS;
18384 else if(fabs(s-1.0) < 10.0*GSL_ROOT5_DBL_EPSILON) {
18385 double del = s-1.0;
18387 double c1 = M_LN2 * (M_EULER - 0.5*M_LN2);
18388 double c2 = -0.0326862962794492996;
18389 double c3 = 0.0015689917054155150;
18390 double c4 = 0.00074987242112047532;
18391 result->val = c0 + del * (c1 + del * (c2 + del * (c3 + del * c4)));
18392 result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val);
18393 return GSL_SUCCESS;
18398 int stat_z = gsl_sf_zeta_e(s, &z);
18399 int stat_p = gsl_sf_exp_e((1.0-s)*M_LN2, &p);
18400 int stat_m = gsl_sf_multiply_e(1.0-p.val, z.val, result);
18401 result->err = fabs(p.err * (M_LN2*(1.0-s)) * z.val) + z.err * fabs(p.val);
18402 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
18403 return GSL_ERROR_SELECT_3(stat_m, stat_p, stat_z);
18412double gsl_sf_zeta(
const double s)
18414 EVAL_RESULT(gsl_sf_zeta_e(s, &result));
18417double gsl_sf_hzeta(
const double s,
const double a)
18419 EVAL_RESULT(gsl_sf_hzeta_e(s, a, &result));
18422double gsl_sf_zeta_int(
const int s)
18424 EVAL_RESULT(gsl_sf_zeta_int_e(s, &result));
18427double gsl_sf_zetam1(
const double s)
18429 EVAL_RESULT(gsl_sf_zetam1_e(s, &result));
18432double gsl_sf_zetam1_int(
const int s)
18434 EVAL_RESULT(gsl_sf_zetam1_int_e(s, &result));
18437double gsl_sf_eta_int(
const int s)
18439 EVAL_RESULT(gsl_sf_eta_int_e(s, &result));
18442double gsl_sf_eta(
const double s)
18444 EVAL_RESULT(gsl_sf_eta_e(s, &result));
18470#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
18471#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
18473#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
18474#define MARLEY_BUILTIN_GSL_CONFIG_H
18476#define HAVE_INLINE 1
18477#define HAVE_DECL_ISFINITE 1
18478#define HAVE_DECL_ISNAN 1
18479#define HAVE_DECL_ISINF 1
18480#define GSL_COERCE_DBL(x) (x)
18482#define GSL_DISABLE_DEPRECATED 0
18483#define PACKAGE_VERSION "2.8"
18484#define VERSION "2.8"
18512#ifndef __GSL_MATH_H__
18513#define __GSL_MATH_H__
18535#ifndef __GSL_SYS_H__
18536#define __GSL_SYS_H__
18542double gsl_log1p (
const double x);
18543double gsl_expm1 (
const double x);
18544double gsl_hypot (
const double x,
const double y);
18545double gsl_hypot3 (
const double x,
const double y,
const double z);
18546double gsl_acosh (
const double x);
18547double gsl_asinh (
const double x);
18548double gsl_atanh (
const double x);
18550int gsl_isnan (
const double x);
18551int gsl_isinf (
const double x);
18552int gsl_finite (
const double x);
18554double gsl_nan (
void);
18555double gsl_posinf (
void);
18556double gsl_neginf (
void);
18557double gsl_fdiv (
const double x,
const double y);
18559double gsl_coerce_double (
const double x);
18560float gsl_coerce_float (
const float x);
18561long double gsl_coerce_long_double (
const long double x);
18563double gsl_ldexp(
const double x,
const int e);
18564double gsl_frexp(
const double x,
int * e);
18566int gsl_fcmp (
const double x1,
const double x2,
const double epsilon);
18593#ifndef __GSL_INLINE_H__
18594#define __GSL_INLINE_H__
18623# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
18624# define INLINE_DECL inline
18625# define INLINE_FUN inline
18627# define INLINE_DECL
18628# define INLINE_FUN extern inline
18631# define INLINE_DECL
18638#define GSL_RANGE_COND(x) (x)
18645#ifndef __GSL_MACHINE_H__
18646#define __GSL_MACHINE_H__
18660#define GSL_DBL_EPSILON 2.2204460492503131e-16
18661#define GSL_SQRT_DBL_EPSILON 1.4901161193847656e-08
18662#define GSL_ROOT3_DBL_EPSILON 6.0554544523933429e-06
18663#define GSL_ROOT4_DBL_EPSILON 1.2207031250000000e-04
18664#define GSL_ROOT5_DBL_EPSILON 7.4009597974140505e-04
18665#define GSL_ROOT6_DBL_EPSILON 2.4607833005759251e-03
18666#define GSL_LOG_DBL_EPSILON (-3.6043653389117154e+01)
18668#define GSL_DBL_MIN 2.2250738585072014e-308
18669#define GSL_SQRT_DBL_MIN 1.4916681462400413e-154
18670#define GSL_ROOT3_DBL_MIN 2.8126442852362996e-103
18671#define GSL_ROOT4_DBL_MIN 1.2213386697554620e-77
18672#define GSL_ROOT5_DBL_MIN 2.9476022969691763e-62
18673#define GSL_ROOT6_DBL_MIN 5.3034368905798218e-52
18674#define GSL_LOG_DBL_MIN (-7.0839641853226408e+02)
18676#define GSL_DBL_MAX 1.7976931348623157e+308
18677#define GSL_SQRT_DBL_MAX 1.3407807929942596e+154
18678#define GSL_ROOT3_DBL_MAX 5.6438030941222897e+102
18679#define GSL_ROOT4_DBL_MAX 1.1579208923731620e+77
18680#define GSL_ROOT5_DBL_MAX 4.4765466227572707e+61
18681#define GSL_ROOT6_DBL_MAX 2.3756689782295612e+51
18682#define GSL_LOG_DBL_MAX 7.0978271289338397e+02
18684#define GSL_FLT_EPSILON 1.1920928955078125e-07
18685#define GSL_SQRT_FLT_EPSILON 3.4526698300124393e-04
18686#define GSL_ROOT3_FLT_EPSILON 4.9215666011518501e-03
18687#define GSL_ROOT4_FLT_EPSILON 1.8581361171917516e-02
18688#define GSL_ROOT5_FLT_EPSILON 4.1234622211652937e-02
18689#define GSL_ROOT6_FLT_EPSILON 7.0153878019335827e-02
18690#define GSL_LOG_FLT_EPSILON (-1.5942385152878742e+01)
18692#define GSL_FLT_MIN 1.1754943508222875e-38
18693#define GSL_SQRT_FLT_MIN 1.0842021724855044e-19
18694#define GSL_ROOT3_FLT_MIN 2.2737367544323241e-13
18695#define GSL_ROOT4_FLT_MIN 3.2927225399135965e-10
18696#define GSL_ROOT5_FLT_MIN 2.5944428542140822e-08
18697#define GSL_ROOT6_FLT_MIN 4.7683715820312542e-07
18698#define GSL_LOG_FLT_MIN (-8.7336544750553102e+01)
18700#define GSL_FLT_MAX 3.4028234663852886e+38
18701#define GSL_SQRT_FLT_MAX 1.8446743523953730e+19
18702#define GSL_ROOT3_FLT_MAX 6.9814635196223242e+12
18703#define GSL_ROOT4_FLT_MAX 4.2949672319999986e+09
18704#define GSL_ROOT5_FLT_MAX 5.0859007855960041e+07
18705#define GSL_ROOT6_FLT_MAX 2.6422459233807749e+06
18706#define GSL_LOG_FLT_MAX 8.8722839052068352e+01
18708#define GSL_SFLT_EPSILON 4.8828125000000000e-04
18709#define GSL_SQRT_SFLT_EPSILON 2.2097086912079612e-02
18710#define GSL_ROOT3_SFLT_EPSILON 7.8745065618429588e-02
18711#define GSL_ROOT4_SFLT_EPSILON 1.4865088937534013e-01
18712#define GSL_ROOT5_SFLT_EPSILON 2.1763764082403100e-01
18713#define GSL_ROOT6_SFLT_EPSILON 2.8061551207734325e-01
18714#define GSL_LOG_SFLT_EPSILON (-7.6246189861593985e+00)
18720#define GSL_MACH_EPS GSL_DBL_EPSILON
18739#define GSL_SQRT_MACH_EPS 3.2e-08
18740#define GSL_ROOT3_MACH_EPS 1.0e-05
18741#define GSL_ROOT4_MACH_EPS 0.000178
18742#define GSL_ROOT5_MACH_EPS 0.00100
18743#define GSL_ROOT6_MACH_EPS 0.00316
18744#define GSL_LOG_MACH_EPS (-34.54)
18772#ifndef __GSL_PRECISION_H__
18773#define __GSL_PRECISION_H__
18794#ifndef __GSL_TYPES_H__
18795#define __GSL_TYPES_H__
18802# define GSL_VAR extern __declspec(dllexport)
18804# define GSL_VAR extern __declspec(dllimport)
18807# define GSL_VAR extern
18810# define GSL_VAR extern
18826typedef unsigned int gsl_prec_t;
18833#define _GSL_PREC_T_NUM 3
18840GSL_VAR
const double gsl_prec_eps[];
18841GSL_VAR
const double gsl_prec_sqrt_eps[];
18842GSL_VAR
const double gsl_prec_root3_eps[];
18843GSL_VAR
const double gsl_prec_root4_eps[];
18844GSL_VAR
const double gsl_prec_root5_eps[];
18845GSL_VAR
const double gsl_prec_root6_eps[];
18873#ifndef __GSL_NAN_H__
18874#define __GSL_NAN_H__
18877# define GSL_POSINF INFINITY
18878# define GSL_NEGINF (-INFINITY)
18879#elif defined(HUGE_VAL)
18880# define GSL_POSINF HUGE_VAL
18881# define GSL_NEGINF (-HUGE_VAL)
18883# define GSL_POSINF (gsl_posinf())
18884# define GSL_NEGINF (gsl_neginf())
18888# define GSL_NAN NAN
18889#elif defined(INFINITY)
18890# define GSL_NAN (INFINITY/INFINITY)
18892# define GSL_NAN (gsl_nan())
18895#define GSL_POSZERO (+0.0)
18896#define GSL_NEGZERO (-0.0)
18921#ifndef __GSL_POW_INT_H__
18922#define __GSL_POW_INT_H__
18943#ifndef __GSL_INLINE_H__
18944#define __GSL_INLINE_H__
18973# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
18974# define INLINE_DECL inline
18975# define INLINE_FUN inline
18977# define INLINE_DECL
18978# define INLINE_FUN extern inline
18981# define INLINE_DECL
18988#define GSL_RANGE_COND(x) (x)
18997INLINE_DECL
double gsl_pow_2(
const double x);
18998INLINE_DECL
double gsl_pow_3(
const double x);
18999INLINE_DECL
double gsl_pow_4(
const double x);
19000INLINE_DECL
double gsl_pow_5(
const double x);
19001INLINE_DECL
double gsl_pow_6(
const double x);
19002INLINE_DECL
double gsl_pow_7(
const double x);
19003INLINE_DECL
double gsl_pow_8(
const double x);
19004INLINE_DECL
double gsl_pow_9(
const double x);
19007INLINE_FUN
double gsl_pow_2(
const double x) {
return x*x; }
19008INLINE_FUN
double gsl_pow_3(
const double x) {
return x*x*x; }
19009INLINE_FUN
double gsl_pow_4(
const double x) {
double x2 = x*x;
return x2*x2; }
19010INLINE_FUN
double gsl_pow_5(
const double x) {
double x2 = x*x;
return x2*x2*x; }
19011INLINE_FUN
double gsl_pow_6(
const double x) {
double x2 = x*x;
return x2*x2*x2; }
19012INLINE_FUN
double gsl_pow_7(
const double x) {
double x3 = x*x*x;
return x3*x3*x; }
19013INLINE_FUN
double gsl_pow_8(
const double x) {
double x2 = x*x;
double x4 = x2*x2;
return x4*x4; }
19014INLINE_FUN
double gsl_pow_9(
const double x) {
double x3 = x*x*x;
return x3*x3*x3; }
19017double gsl_pow_int(
double x,
int n);
19018double gsl_pow_uint(
double x,
unsigned int n);
19045#ifndef __GSL_MINMAX_H__
19046#define __GSL_MINMAX_H__
19067#ifndef __GSL_INLINE_H__
19068#define __GSL_INLINE_H__
19097# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
19098# define INLINE_DECL inline
19099# define INLINE_FUN inline
19101# define INLINE_DECL
19102# define INLINE_FUN extern inline
19105# define INLINE_DECL
19112#define GSL_RANGE_COND(x) (x)
19124#define GSL_MAX(a,b) ((a) > (b) ? (a) : (b))
19125#define GSL_MIN(a,b) ((a) < (b) ? (a) : (b))
19128double gsl_max (
double a,
double b);
19129double gsl_min (
double a,
double b);
19134INLINE_FUN
int GSL_MAX_INT (
int a,
int b);
19135INLINE_FUN
int GSL_MIN_INT (
int a,
int b);
19136INLINE_FUN
double GSL_MAX_DBL (
double a,
double b);
19137INLINE_FUN
double GSL_MIN_DBL (
double a,
double b);
19138INLINE_FUN
long double GSL_MAX_LDBL (
long double a,
long double b);
19139INLINE_FUN
long double GSL_MIN_LDBL (
long double a,
long double b);
19142GSL_MAX_INT (
int a,
int b)
19144 return GSL_MAX (a, b);
19148GSL_MIN_INT (
int a,
int b)
19150 return GSL_MIN (a, b);
19154GSL_MAX_DBL (
double a,
double b)
19156 return GSL_MAX (a, b);
19160GSL_MIN_DBL (
double a,
double b)
19162 return GSL_MIN (a, b);
19165INLINE_FUN
long double
19166GSL_MAX_LDBL (
long double a,
long double b)
19168 return GSL_MAX (a, b);
19171INLINE_FUN
long double
19172GSL_MIN_LDBL (
long double a,
long double b)
19174 return GSL_MIN (a, b);
19177#define GSL_MAX_INT(a,b) GSL_MAX(a,b)
19178#define GSL_MIN_INT(a,b) GSL_MIN(a,b)
19179#define GSL_MAX_DBL(a,b) GSL_MAX(a,b)
19180#define GSL_MIN_DBL(a,b) GSL_MIN(a,b)
19181#define GSL_MAX_LDBL(a,b) GSL_MAX(a,b)
19182#define GSL_MIN_LDBL(a,b) GSL_MIN(a,b)
19191#define M_E 2.71828182845904523536028747135
19195#define M_LOG2E 1.44269504088896340735992468100
19199#define M_LOG10E 0.43429448190325182765112891892
19203#define M_SQRT2 1.41421356237309504880168872421
19207#define M_SQRT1_2 0.70710678118654752440084436210
19212#define M_SQRT3 1.73205080756887729352744634151
19216#define M_PI 3.14159265358979323846264338328
19220#define M_PI_2 1.57079632679489661923132169164
19224#define M_PI_4 0.78539816339744830961566084582
19228#define M_SQRTPI 1.77245385090551602729816748334
19232#define M_2_SQRTPI 1.12837916709551257389615890312
19236#define M_1_PI 0.31830988618379067153776752675
19240#define M_2_PI 0.63661977236758134307553505349
19244#define M_LN10 2.30258509299404568401799145468
19248#define M_LN2 0.69314718055994530941723212146
19252#define M_LNPI 1.14472988584940017414342735135
19256#define M_EULER 0.57721566490153286060651209008
19265#define GSL_IS_ODD(n) ((n) & 1)
19266#define GSL_IS_EVEN(n) (!(GSL_IS_ODD(n)))
19267#define GSL_SIGN(x) ((x) >= 0.0 ? 1 : -1)
19270#define GSL_IS_REAL(x) (gsl_finite(x))
19276 double (* function) (
double x,
void * params);
19282#define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params)
19288 double (* f) (
double x,
void * params);
19289 double (* df) (
double x,
void * params);
19290 void (* fdf) (
double x,
void * params,
double * f,
double * df);
19296#define GSL_FN_FDF_EVAL_F(FDF,x) (*((FDF)->f))(x,(FDF)->params)
19297#define GSL_FN_FDF_EVAL_DF(FDF,x) (*((FDF)->df))(x,(FDF)->params)
19298#define GSL_FN_FDF_EVAL_F_DF(FDF,x,y,dy) (*((FDF)->fdf))(x,(FDF)->params,(y),(dy))
19305 int (* function) (
double x,
double y[],
void * params);
19311#define GSL_FN_VEC_EVAL(F,x,y) (*((F)->function))(x,y,(F)->params)
19338#ifndef __GSL_ERRNO_H__
19339#define __GSL_ERRNO_H__
19363#ifndef __GSL_TYPES_H__
19364#define __GSL_TYPES_H__
19371# define GSL_VAR extern __declspec(dllexport)
19373# define GSL_VAR extern __declspec(dllimport)
19376# define GSL_VAR extern
19379# define GSL_VAR extern
19429void gsl_error (
const char * reason,
const char * file,
int line,
19432void gsl_stream_printf (
const char *label,
const char *file,
19433 int line,
const char *reason);
19435typedef void gsl_error_handler_t (
const char * reason,
const char * file,
19436 int line,
int gsl_errno);
19438gsl_error_handler_t *
19439gsl_set_error_handler (gsl_error_handler_t * new_handler);
19443#define GSL_ERROR(reason, gsl_errno) \
19445 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
19446 return gsl_errno ; \
19451#define GSL_ERROR_VAL(reason, gsl_errno, value) \
19453 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
19460#define GSL_ERROR_VOID(reason, gsl_errno) \
19462 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
19468#define GSL_ERROR_NULL(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, 0)
19484#define GSL_ERROR_SELECT_2(a,b) ((a) != GSL_SUCCESS ? (a) : ((b) != GSL_SUCCESS ? (b) : GSL_SUCCESS))
19485#define GSL_ERROR_SELECT_3(a,b,c) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_2(b,c))
19486#define GSL_ERROR_SELECT_4(a,b,c,d) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_3(b,c,d))
19487#define GSL_ERROR_SELECT_5(a,b,c,d,e) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_4(b,c,d,e))
19489#define GSL_STATUS_UPDATE(sp, s) do { if ((s) != GSL_SUCCESS) *(sp) = (s);} while(0)
19518#ifndef __GSL_SF_EXP_H__
19519#define __GSL_SF_EXP_H__
19542#ifndef __GSL_SF_RESULT_H__
19543#define __GSL_SF_RESULT_H__
19555#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
19566int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
19596#ifndef __GSL_PRECISION_H__
19597#define __GSL_PRECISION_H__
19618#ifndef __GSL_TYPES_H__
19619#define __GSL_TYPES_H__
19626# define GSL_VAR extern __declspec(dllexport)
19628# define GSL_VAR extern __declspec(dllimport)
19631# define GSL_VAR extern
19634# define GSL_VAR extern
19650typedef unsigned int gsl_prec_t;
19657#define _GSL_PREC_T_NUM 3
19664GSL_VAR
const double gsl_prec_eps[];
19665GSL_VAR
const double gsl_prec_sqrt_eps[];
19666GSL_VAR
const double gsl_prec_root3_eps[];
19667GSL_VAR
const double gsl_prec_root4_eps[];
19668GSL_VAR
const double gsl_prec_root5_eps[];
19669GSL_VAR
const double gsl_prec_root6_eps[];
19686int gsl_sf_exp_e(
const double x, gsl_sf_result * result);
19687double gsl_sf_exp(
const double x);
19694int gsl_sf_exp_e10_e(
const double x, gsl_sf_result_e10 * result);
19701int gsl_sf_exp_mult_e(
const double x,
const double y, gsl_sf_result * result);
19702double gsl_sf_exp_mult(
const double x,
const double y);
19709int gsl_sf_exp_mult_e10_e(
const double x,
const double y, gsl_sf_result_e10 * result);
19716int gsl_sf_expm1_e(
const double x, gsl_sf_result * result);
19717double gsl_sf_expm1(
const double x);
19724int gsl_sf_exprel_e(
const double x, gsl_sf_result * result);
19725double gsl_sf_exprel(
const double x);
19732int gsl_sf_exprel_2_e(
double x, gsl_sf_result * result);
19733double gsl_sf_exprel_2(
const double x);
19743int gsl_sf_exprel_n_e(
const int n,
const double x, gsl_sf_result * result);
19744double gsl_sf_exprel_n(
const int n,
const double x);
19746int gsl_sf_exprel_n_CF_e(
const double n,
const double x, gsl_sf_result * result);
19751int gsl_sf_exp_err_e(
const double x,
const double dx, gsl_sf_result * result);
19755int gsl_sf_exp_err_e10_e(
const double x,
const double dx, gsl_sf_result_e10 * result);
19763int gsl_sf_exp_mult_err_e(
const double x,
const double dx,
const double y,
const double dy, gsl_sf_result * result);
19771int gsl_sf_exp_mult_err_e10_e(
const double x,
const double dx,
const double y,
const double dy, gsl_sf_result_e10 * result);
19800#ifndef __GSL_SF_GAMMA_H__
19801#define __GSL_SF_GAMMA_H__
19824#ifndef __GSL_SF_RESULT_H__
19825#define __GSL_SF_RESULT_H__
19837#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
19848int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
19868int gsl_sf_lngamma_e(
double x, gsl_sf_result * result);
19869double gsl_sf_lngamma(
const double x);
19879int gsl_sf_lngamma_sgn_e(
double x, gsl_sf_result * result_lg,
double *sgn);
19887int gsl_sf_gamma_e(
const double x, gsl_sf_result * result);
19888double gsl_sf_gamma(
const double x);
19898int gsl_sf_gammastar_e(
const double x, gsl_sf_result * result);
19899double gsl_sf_gammastar(
const double x);
19907int gsl_sf_gammainv_e(
const double x, gsl_sf_result * result);
19908double gsl_sf_gammainv(
const double x);
19924int gsl_sf_lngamma_complex_e(
double zr,
double zi, gsl_sf_result * lnr, gsl_sf_result * arg);
19932int gsl_sf_taylorcoeff_e(
const int n,
const double x, gsl_sf_result * result);
19933double gsl_sf_taylorcoeff(
const int n,
const double x);
19940int gsl_sf_fact_e(
const unsigned int n, gsl_sf_result * result);
19941double gsl_sf_fact(
const unsigned int n);
19948int gsl_sf_doublefact_e(
const unsigned int n, gsl_sf_result * result);
19949double gsl_sf_doublefact(
const unsigned int n);
19957int gsl_sf_lnfact_e(
const unsigned int n, gsl_sf_result * result);
19958double gsl_sf_lnfact(
const unsigned int n);
19965int gsl_sf_lndoublefact_e(
const unsigned int n, gsl_sf_result * result);
19966double gsl_sf_lndoublefact(
const unsigned int n);
19973int gsl_sf_lnchoose_e(
unsigned int n,
unsigned int m, gsl_sf_result * result);
19974double gsl_sf_lnchoose(
unsigned int n,
unsigned int m);
19981int gsl_sf_choose_e(
unsigned int n,
unsigned int m, gsl_sf_result * result);
19982double gsl_sf_choose(
unsigned int n,
unsigned int m);
19993int gsl_sf_lnpoch_e(
const double a,
const double x, gsl_sf_result * result);
19994double gsl_sf_lnpoch(
const double a,
const double x);
20006int gsl_sf_lnpoch_sgn_e(
const double a,
const double x, gsl_sf_result * result,
double * sgn);
20016int gsl_sf_poch_e(
const double a,
const double x, gsl_sf_result * result);
20017double gsl_sf_poch(
const double a,
const double x);
20026int gsl_sf_pochrel_e(
const double a,
const double x, gsl_sf_result * result);
20027double gsl_sf_pochrel(
const double a,
const double x);
20040int gsl_sf_gamma_inc_Q_e(
const double a,
const double x, gsl_sf_result * result);
20041double gsl_sf_gamma_inc_Q(
const double a,
const double x);
20052int gsl_sf_gamma_inc_P_e(
const double a,
const double x, gsl_sf_result * result);
20053double gsl_sf_gamma_inc_P(
const double a,
const double x);
20065int gsl_sf_gamma_inc_e(
const double a,
const double x, gsl_sf_result * result);
20066double gsl_sf_gamma_inc(
const double a,
const double x);
20075int gsl_sf_lnbeta_e(
const double a,
const double b, gsl_sf_result * result);
20076double gsl_sf_lnbeta(
const double a,
const double b);
20078int gsl_sf_lnbeta_sgn_e(
const double x,
const double y, gsl_sf_result * result,
double * sgn);
20087int gsl_sf_beta_e(
const double a,
const double b, gsl_sf_result * result);
20088double gsl_sf_beta(
const double a,
const double b);
20097int gsl_sf_beta_inc_e(
const double a,
const double b,
const double x, gsl_sf_result * result);
20098double gsl_sf_beta_inc(
const double a,
const double b,
const double x);
20104#define GSL_SF_GAMMA_XMAX 171.0
20107#define GSL_SF_FACT_NMAX 170
20110#define GSL_SF_DOUBLEFACT_NMAX 297
20139#ifndef __GSL_SF_ZETA_H__
20140#define __GSL_SF_ZETA_H__
20163#ifndef __GSL_SF_RESULT_H__
20164#define __GSL_SF_RESULT_H__
20176#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
20187int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
20206int gsl_sf_zeta_int_e(
const int n, gsl_sf_result * result);
20207double gsl_sf_zeta_int(
const int n);
20216int gsl_sf_zeta_e(
const double s, gsl_sf_result * result);
20217double gsl_sf_zeta(
const double s);
20227int gsl_sf_zetam1_e(
const double s, gsl_sf_result * result);
20228double gsl_sf_zetam1(
const double s);
20238int gsl_sf_zetam1_int_e(
const int s, gsl_sf_result * result);
20239double gsl_sf_zetam1_int(
const int s);
20248int gsl_sf_hzeta_e(
const double s,
const double q, gsl_sf_result * result);
20249double gsl_sf_hzeta(
const double s,
const double q);
20257int gsl_sf_eta_int_e(
int n, gsl_sf_result * result);
20258double gsl_sf_eta_int(
const int n);
20266int gsl_sf_eta_e(
const double s, gsl_sf_result * result);
20267double gsl_sf_eta(
const double s);
20297#ifndef __GSL_SF_PSI_H__
20298#define __GSL_SF_PSI_H__
20321#ifndef __GSL_SF_RESULT_H__
20322#define __GSL_SF_RESULT_H__
20334#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
20345int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
20369int gsl_sf_psi_int_e(
const int n, gsl_sf_result * result);
20370double gsl_sf_psi_int(
const int n);
20378int gsl_sf_psi_e(
const double x, gsl_sf_result * result);
20379double gsl_sf_psi(
const double x);
20386int gsl_sf_psi_1piy_e(
const double y, gsl_sf_result * result);
20387double gsl_sf_psi_1piy(
const double y);
20394int gsl_sf_complex_psi_e(
20397 gsl_sf_result * result_re,
20398 gsl_sf_result * result_im
20407int gsl_sf_psi_1_int_e(
const int n, gsl_sf_result * result);
20408double gsl_sf_psi_1_int(
const int n);
20416int gsl_sf_psi_1_e(
const double x, gsl_sf_result * result);
20417double gsl_sf_psi_1(
const double x);
20425int gsl_sf_psi_n_e(
const int n,
const double x, gsl_sf_result * result);
20426double gsl_sf_psi_n(
const int n,
const double x);
20454#ifndef __GSL_COMPLEX_MATH_H__
20455#define __GSL_COMPLEX_MATH_H__
20476#ifndef __GSL_INLINE_H__
20477#define __GSL_INLINE_H__
20506# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
20507# define INLINE_DECL inline
20508# define INLINE_FUN inline
20510# define INLINE_DECL
20511# define INLINE_FUN extern inline
20514# define INLINE_DECL
20521#define GSL_RANGE_COND(x) (x)
20547#ifndef __GSL_COMPLEX_H__
20548#define __GSL_COMPLEX_H__
20556typedef double * gsl_complex_packed ;
20557typedef float * gsl_complex_packed_float ;
20558typedef long double * gsl_complex_packed_long_double ;
20560typedef const double * gsl_const_complex_packed ;
20561typedef const float * gsl_const_complex_packed_float ;
20562typedef const long double * gsl_const_complex_packed_long_double ;
20566typedef double * gsl_complex_packed_array ;
20567typedef float * gsl_complex_packed_array_float ;
20568typedef long double * gsl_complex_packed_array_long_double ;
20570typedef const double * gsl_const_complex_packed_array ;
20571typedef const float * gsl_const_complex_packed_array_float ;
20572typedef const long double * gsl_const_complex_packed_array_long_double ;
20580typedef double * gsl_complex_packed_ptr ;
20581typedef float * gsl_complex_packed_float_ptr ;
20582typedef long double * gsl_complex_packed_long_double_ptr ;
20584typedef const double * gsl_const_complex_packed_ptr ;
20585typedef const float * gsl_const_complex_packed_float_ptr ;
20586typedef const long double * gsl_const_complex_packed_long_double_ptr ;
20595#if defined(__GNUC__) && (__GNUC__ < 7)
20596# define GSL_COMPLEX_LEGACY 1
20599#if !defined(GSL_COMPLEX_LEGACY) && \
20600 defined(_Complex_I) && \
20601 defined(complex) && \
20603 defined(__STDC__) && (__STDC__ == 1) && \
20604 defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
20606# define GSL_COMPLEX_DEFINE(R, C) typedef R _Complex C ;
20608# define GSL_COMPLEX_P(zp) (&(zp))
20609# define GSL_COMPLEX_EQ(z1,z2) ((z1) == (z2))
20610# define GSL_SET_COMPLEX(zp,x,y) (*(zp) = (x) + I * (y))
20612# define GSL_REAL(z) (_Generic((z), \
20613 complex float : ((float *) &(z)), \
20614 complex double : ((double *) &(z)), \
20615 complex long double : ((long double *) &(z)))[0])
20617# define GSL_IMAG(z) (_Generic((z), \
20618 complex float : ((float *) &(z)), \
20619 complex double : ((double *) &(z)), \
20620 complex long double : ((long double *) &(z)))[1])
20622# define GSL_COMPLEX_P_REAL(zp) GSL_REAL(*(zp))
20623# define GSL_COMPLEX_P_IMAG(zp) GSL_IMAG(*(zp))
20624# define GSL_SET_REAL(zp,x) do { GSL_REAL(*(zp)) = (x); } while(0)
20625# define GSL_SET_IMAG(zp,x) do { GSL_IMAG(*(zp)) = (x); } while(0)
20639# define GSL_COMPLEX_DEFINE(R, C) typedef struct { R dat[2]; } C ;
20641# define GSL_REAL(z) ((z).dat[0])
20642# define GSL_IMAG(z) ((z).dat[1])
20643# define GSL_COMPLEX_P(zp) ((zp)->dat)
20644# define GSL_COMPLEX_P_REAL(zp) ((zp)->dat[0])
20645# define GSL_COMPLEX_P_IMAG(zp) ((zp)->dat[1])
20646# define GSL_COMPLEX_EQ(z1,z2) (((z1).dat[0] == (z2).dat[0]) && ((z1).dat[1] == (z2).dat[1]))
20648# define GSL_SET_COMPLEX(zp,x,y) do {(zp)->dat[0]=(x); (zp)->dat[1]=(y);} while(0)
20649# define GSL_SET_REAL(zp,x) do {(zp)->dat[0]=(x);} while(0)
20650# define GSL_SET_IMAG(zp,y) do {(zp)->dat[1]=(y);} while(0)
20654GSL_COMPLEX_DEFINE(
double, gsl_complex)
20655GSL_COMPLEX_DEFINE(
long double, gsl_complex_long_double)
20656GSL_COMPLEX_DEFINE(
float, gsl_complex_float)
20658#define GSL_SET_COMPLEX_PACKED(zp,n,x,y) do {*((zp)+2*(n))=(x); *((zp)+(2*(n)+1))=(y);} while(0)
20665#undef __BEGIN_DECLS
20668#define __BEGIN_DECLS extern "C" {
20669#define __END_DECLS }
20671#define __BEGIN_DECLS
20679gsl_complex gsl_complex_polar (
double r,
double theta);
20681INLINE_DECL gsl_complex gsl_complex_rect (
double x,
double y);
20684INLINE_FUN gsl_complex
20685gsl_complex_rect (
double x,
double y)
20688 GSL_SET_COMPLEX (&z, x, y);
20693#define GSL_COMPLEX_ONE (gsl_complex_rect(1.0,0.0))
20694#define GSL_COMPLEX_ZERO (gsl_complex_rect(0.0,0.0))
20695#define GSL_COMPLEX_NEGONE (gsl_complex_rect(-1.0,0.0))
20699double gsl_complex_arg (gsl_complex z);
20700double gsl_complex_abs (gsl_complex z);
20701double gsl_complex_abs2 (gsl_complex z);
20702double gsl_complex_logabs (gsl_complex z);
20706gsl_complex gsl_complex_add (gsl_complex a, gsl_complex b);
20707gsl_complex gsl_complex_sub (gsl_complex a, gsl_complex b);
20708gsl_complex gsl_complex_mul (gsl_complex a, gsl_complex b);
20709gsl_complex gsl_complex_div (gsl_complex a, gsl_complex b);
20711gsl_complex gsl_complex_add_real (gsl_complex a,
double x);
20712gsl_complex gsl_complex_sub_real (gsl_complex a,
double x);
20713gsl_complex gsl_complex_mul_real (gsl_complex a,
double x);
20714gsl_complex gsl_complex_div_real (gsl_complex a,
double x);
20716gsl_complex gsl_complex_add_imag (gsl_complex a,
double y);
20717gsl_complex gsl_complex_sub_imag (gsl_complex a,
double y);
20718gsl_complex gsl_complex_mul_imag (gsl_complex a,
double y);
20719gsl_complex gsl_complex_div_imag (gsl_complex a,
double y);
20721gsl_complex gsl_complex_conjugate (gsl_complex z);
20722gsl_complex gsl_complex_inverse (gsl_complex a);
20723gsl_complex gsl_complex_negative (gsl_complex a);
20727gsl_complex gsl_complex_sqrt (gsl_complex z);
20728gsl_complex gsl_complex_sqrt_real (
double x);
20730gsl_complex gsl_complex_pow (gsl_complex a, gsl_complex b);
20731gsl_complex gsl_complex_pow_real (gsl_complex a,
double b);
20733gsl_complex gsl_complex_exp (gsl_complex a);
20734gsl_complex gsl_complex_log (gsl_complex a);
20735gsl_complex gsl_complex_log10 (gsl_complex a);
20736gsl_complex gsl_complex_log_b (gsl_complex a, gsl_complex b);
20740gsl_complex gsl_complex_sin (gsl_complex a);
20741gsl_complex gsl_complex_cos (gsl_complex a);
20742gsl_complex gsl_complex_sec (gsl_complex a);
20743gsl_complex gsl_complex_csc (gsl_complex a);
20744gsl_complex gsl_complex_tan (gsl_complex a);
20745gsl_complex gsl_complex_cot (gsl_complex a);
20749gsl_complex gsl_complex_arcsin (gsl_complex a);
20750gsl_complex gsl_complex_arcsin_real (
double a);
20751gsl_complex gsl_complex_arccos (gsl_complex a);
20752gsl_complex gsl_complex_arccos_real (
double a);
20753gsl_complex gsl_complex_arcsec (gsl_complex a);
20754gsl_complex gsl_complex_arcsec_real (
double a);
20755gsl_complex gsl_complex_arccsc (gsl_complex a);
20756gsl_complex gsl_complex_arccsc_real (
double a);
20757gsl_complex gsl_complex_arctan (gsl_complex a);
20758gsl_complex gsl_complex_arccot (gsl_complex a);
20762gsl_complex gsl_complex_sinh (gsl_complex a);
20763gsl_complex gsl_complex_cosh (gsl_complex a);
20764gsl_complex gsl_complex_sech (gsl_complex a);
20765gsl_complex gsl_complex_csch (gsl_complex a);
20766gsl_complex gsl_complex_tanh (gsl_complex a);
20767gsl_complex gsl_complex_coth (gsl_complex a);
20771gsl_complex gsl_complex_arcsinh (gsl_complex a);
20772gsl_complex gsl_complex_arccosh (gsl_complex a);
20773gsl_complex gsl_complex_arccosh_real (
double a);
20774gsl_complex gsl_complex_arcsech (gsl_complex a);
20775gsl_complex gsl_complex_arccsch (gsl_complex a);
20776gsl_complex gsl_complex_arctanh (gsl_complex a);
20777gsl_complex gsl_complex_arctanh_real (
double a);
20778gsl_complex gsl_complex_arccoth (gsl_complex a);
20803static double r1py_data[] = {
20804 1.59888328244976954803168395603,
20805 0.67905625353213463845115658455,
20806 -0.068485802980122530009506482524,
20807 -0.005788184183095866792008831182,
20808 0.008511258167108615980419855648,
20809 -0.004042656134699693434334556409,
20810 0.001352328406159402601778462956,
20811 -0.000311646563930660566674525382,
20812 0.000018507563785249135437219139,
20813 0.000028348705427529850296492146,
20814 -0.000019487536014574535567541960,
20815 8.0709788710834469408621587335e-06,
20816 -2.2983564321340518037060346561e-06,
20817 3.0506629599604749843855962658e-07,
20818 1.3042238632418364610774284846e-07,
20819 -1.2308657181048950589464690208e-07,
20820 5.7710855710682427240667414345e-08,
20821 -1.8275559342450963966092636354e-08,
20822 3.1020471300626589420759518930e-09,
20823 6.8989327480593812470039430640e-10,
20824 -8.7182290258923059852334818997e-10,
20825 4.4069147710243611798213548777e-10,
20826 -1.4727311099198535963467200277e-10,
20827 2.7589682523262644748825844248e-11,
20828 4.1871826756975856411554363568e-12,
20829 -6.5673460487260087541400767340e-12,
20830 3.4487900886723214020103638000e-12,
20831 -1.1807251417448690607973794078e-12,
20832 2.3798314343969589258709315574e-13,
20833 2.1663630410818831824259465821e-15
20835static cheb_series r1py_cs = {
20859static double psics_data[23] = {
20860 -.038057080835217922,
20861 .491415393029387130,
20862 -.056815747821244730,
20863 .008357821225914313,
20864 -.001333232857994342,
20865 .000220313287069308,
20866 -.000037040238178456,
20867 .000006283793654854,
20868 -.000001071263908506,
20869 .000000183128394654,
20870 -.000000031353509361,
20871 .000000005372808776,
20872 -.000000000921168141,
20873 .000000000157981265,
20874 -.000000000027098646,
20875 .000000000004648722,
20876 -.000000000000797527,
20877 .000000000000136827,
20878 -.000000000000023475,
20879 .000000000000004027,
20880 -.000000000000000691,
20881 .000000000000000118,
20882 -.000000000000000020
20884static cheb_series psi_cs = {
20891static double apsics_data[16] = {
20892 -.0204749044678185,
20893 -.0101801271534859,
20895 -.0000012917176570,
20897 -.0000000038213539,
20899 -.0000000000374838,
20901 -.0000000000007344,
20903 -.0000000000000228,
20905 -.0000000000000009,
20909static cheb_series apsi_cs = {
20916#define PSI_TABLE_NMAX 100
20917static double psi_table[PSI_TABLE_NMAX+1] = {
20920 0.42278433509846713939348790992,
20921 0.92278433509846713939348790992,
20922 1.25611766843180047272682124325,
20923 1.50611766843180047272682124325,
20924 1.70611766843180047272682124325,
20925 1.87278433509846713939348790992,
20926 2.01564147795560999653634505277,
20927 2.14064147795560999653634505277,
20928 2.25175258906672110764745616389,
20929 2.35175258906672110764745616389,
20930 2.44266167997581201673836525479,
20931 2.52599501330914535007169858813,
20932 2.60291809023222227314862166505,
20933 2.67434666166079370172005023648,
20934 2.74101332832746036838671690315,
20935 2.80351332832746036838671690315,
20936 2.86233685773922507426906984432,
20937 2.91789241329478062982462539988,
20938 2.97052399224214905087725697883,
20939 3.02052399224214905087725697883,
20940 3.06814303986119666992487602645,
20941 3.11359758531574212447033057190,
20942 3.15707584618530734186163491973,
20943 3.1987425128519740085283015864,
20944 3.2387425128519740085283015864,
20945 3.2772040513135124700667631249,
20946 3.3142410883505495071038001619,
20947 3.3499553740648352213895144476,
20948 3.3844381326855248765619282407,
20949 3.4177714660188582098952615740,
20950 3.4500295305349872421533260902,
20951 3.4812795305349872421533260902,
20952 3.5115825608380175451836291205,
20953 3.5409943255438998981248055911,
20954 3.5695657541153284695533770196,
20955 3.5973435318931062473311547974,
20956 3.6243705589201332743581818244,
20957 3.6506863483938174848844976139,
20958 3.6763273740348431259101386396,
20959 3.7013273740348431259101386396,
20960 3.7257176179372821503003825420,
20961 3.7495271417468059598241920658,
20962 3.7727829557002943319172153216,
20963 3.7955102284275670591899425943,
20964 3.8177324506497892814121648166,
20965 3.8394715810845718901078169905,
20966 3.8607481768292527411716467777,
20967 3.8815815101625860745049801110,
20968 3.9019896734278921969539597029,
20969 3.9219896734278921969539597029,
20970 3.9415975165651470989147440166,
20971 3.9608282857959163296839747858,
20972 3.9796962103242182164764276160,
20973 3.9982147288427367349949461345,
20974 4.0163965470245549168131279527,
20975 4.0342536898816977739559850956,
20976 4.0517975495308205809735289552,
20977 4.0690389288411654085597358518,
20978 4.0859880813835382899156680552,
20979 4.1026547480502049565823347218,
20980 4.1190481906731557762544658694,
20981 4.1351772229312202923834981274,
20982 4.1510502388042361653993711433,
20983 4.1666752388042361653993711433,
20984 4.1820598541888515500147557587,
20985 4.1972113693403667015299072739,
20986 4.2121367424746950597388624977,
20987 4.2268426248276362362094507330,
20988 4.2413353784508246420065521823,
20989 4.2556210927365389277208378966,
20990 4.2697055997787924488475984600,
20991 4.2835944886676813377364873489,
20992 4.2972931188046676391063503626,
20993 4.3108066323181811526198638761,
20994 4.3241399656515144859531972094,
20995 4.3372978603883565912163551041,
20996 4.3502848733753695782293421171,
20997 4.3631053861958823987421626300,
20998 4.3757636140439836645649474401,
20999 4.3882636140439836645649474401,
21000 4.4006092930563293435772931191,
21001 4.4128044150075488557724150703,
21002 4.4248526077786331931218126607,
21003 4.4367573696833950978837174226,
21004 4.4485220755657480390601880108,
21005 4.4601499825424922251066996387,
21006 4.4716442354160554434975042364,
21007 4.4830078717796918071338678728,
21008 4.4942438268358715824147667492,
21009 4.5053549379469826935258778603,
21010 4.5163439489359936825368668713,
21011 4.5272135141533849868846929582,
21012 4.5379662023254279976373811303,
21013 4.5486045001977684231692960239,
21014 4.5591308159872421073798223397,
21015 4.5695474826539087740464890064,
21016 4.5798567610044242379640147796,
21017 4.5900608426370772991885045755,
21018 4.6001618527380874001986055856
21022#define PSI_1_TABLE_NMAX 100
21023static double psi_1_table[PSI_1_TABLE_NMAX+1] = {
21026 0.644934066848226436472415,
21027 0.394934066848226436472415,
21028 0.2838229557371153253613041,
21029 0.2213229557371153253613041,
21030 0.1813229557371153253613041,
21031 0.1535451779593375475835263,
21032 0.1331370146940314251345467,
21033 0.1175120146940314251345467,
21034 0.1051663356816857461222010,
21035 0.0951663356816857461222010,
21036 0.0869018728717683907503002,
21037 0.0799574284273239463058557,
21038 0.0740402686640103368384001,
21039 0.0689382278476838062261552,
21040 0.0644937834032393617817108,
21041 0.0605875334032393617817108,
21042 0.0571273257907826143768665,
21043 0.0540409060376961946237801,
21044 0.0512708229352031198315363,
21045 0.0487708229352031198315363,
21046 0.0465032492390579951149830,
21047 0.0444371335365786562720078,
21048 0.0425467743683366902984728,
21049 0.0408106632572255791873617,
21050 0.0392106632572255791873617,
21051 0.0377313733163971768204978,
21052 0.0363596312039143235969038,
21053 0.0350841209998326909438426,
21054 0.0338950603577399442137594,
21055 0.0327839492466288331026483,
21056 0.0317433665203020901265817,
21057 0.03076680402030209012658168,
21058 0.02984853037475571730748159,
21059 0.02898347847164153045627052,
21060 0.02816715194102928555831133,
21061 0.02739554700275768062003973,
21062 0.02666508681283803124093089,
21063 0.02597256603721476254286995,
21064 0.02531510384129102815759710,
21065 0.02469010384129102815759710,
21066 0.02409521984367056414807896,
21067 0.02352832641963428296894063,
21068 0.02298749353699501850166102,
21069 0.02247096461137518379091722,
21070 0.02197713745088135663042339,
21071 0.02150454765882086513703965,
21072 0.02105185413233829383780923,
21073 0.02061782635456051606003145,
21074 0.02020133322669712580597065,
21075 0.01980133322669712580597065,
21076 0.01941686571420193164987683,
21077 0.01904704322899483105816086,
21078 0.01869104465298913508094477,
21079 0.01834810912486842177504628,
21080 0.01801753061247172756017024,
21081 0.01769865306145131939690494,
21082 0.01739086605006319997554452,
21083 0.01709360088954001329302371,
21084 0.01680632711763538818529605,
21085 0.01652854933985761040751827,
21086 0.01625980437882562975715546,
21087 0.01599965869724394401313881,
21088 0.01574770606433893015574400,
21089 0.01550356543933893015574400,
21090 0.01526687904880638577704578,
21091 0.01503731063741979257227076,
21092 0.01481454387422086185273411,
21093 0.01459828089844231513993134,
21094 0.01438824099085987447620523,
21095 0.01418415935820681325171544,
21096 0.01398578601958352422176106,
21097 0.01379288478501562298719316,
21098 0.01360523231738567365335942,
21099 0.01342261726990576130858221,
21100 0.01324483949212798353080444,
21101 0.01307170929822216635628920,
21102 0.01290304679189732236910755,
21103 0.01273868124291638877278934,
21104 0.01257845051066194236996928,
21105 0.01242220051066194236996928,
21106 0.01226978472038606978956995,
21107 0.01212106372098095378719041,
21108 0.01197590477193174490346273,
21109 0.01183418141592267460867815,
21110 0.01169577311142440471248438,
21111 0.01156056489076458859566448,
21112 0.01142844704164317229232189,
21113 0.01129931481023821361463594,
21114 0.01117306812421372175754719,
21115 0.01104961133409026496742374,
21116 0.01092885297157366069257770,
21117 0.01081070552355853781923177,
21118 0.01069508522063334415522437,
21119 0.01058191183901270133041676,
21120 0.01047110851491297833872701,
21121 0.01036260157046853389428257,
21122 0.01025632035036012704977199,
21123 0.01015219706839427948625679,
21124 0.01005016666333357139524567
21133psi_x(
const double x, gsl_sf_result * result)
21135 const double y = fabs(x);
21137 if(x == 0.0 || x == -1.0 || x == -2.0) {
21138 DOMAIN_ERROR(result);
21140 else if(y >= 2.0) {
21141 const double t = 8.0/(y*y)-1.0;
21142 gsl_sf_result result_c;
21143 cheb_eval_e(&apsi_cs, t, &result_c);
21145 const double s = sin(M_PI*x);
21146 const double c = cos(M_PI*x);
21147 if(fabs(s) < 2.0*GSL_SQRT_DBL_MIN) {
21148 DOMAIN_ERROR(result);
21151 result->val = log(y) - 0.5/x + result_c.val - M_PI * c/s;
21152 result->err = M_PI*fabs(x)*GSL_DBL_EPSILON/(s*s);
21153 result->err += result_c.err;
21154 result->err += GSL_DBL_EPSILON * fabs(result->val);
21155 return GSL_SUCCESS;
21159 result->val = log(y) - 0.5/x + result_c.val;
21160 result->err = result_c.err;
21161 result->err += GSL_DBL_EPSILON * fabs(result->val);
21162 return GSL_SUCCESS;
21166 gsl_sf_result result_c;
21169 const double v = x + 2.0;
21170 const double t1 = 1.0/x;
21171 const double t2 = 1.0/(x+1.0);
21172 const double t3 = 1.0/v;
21173 cheb_eval_e(&psi_cs, 2.0*v-1.0, &result_c);
21175 result->val = -(t1 + t2 + t3) + result_c.val;
21176 result->err = GSL_DBL_EPSILON * (fabs(t1) + fabs(x/(t2*t2)) + fabs(x/(t3*t3)));
21177 result->err += result_c.err;
21178 result->err += GSL_DBL_EPSILON * fabs(result->val);
21179 return GSL_SUCCESS;
21182 const double v = x + 1.0;
21183 const double t1 = 1.0/x;
21184 const double t2 = 1.0/v;
21185 cheb_eval_e(&psi_cs, 2.0*v-1.0, &result_c);
21187 result->val = -(t1 + t2) + result_c.val;
21188 result->err = GSL_DBL_EPSILON * (fabs(t1) + fabs(x/(t2*t2)));
21189 result->err += result_c.err;
21190 result->err += GSL_DBL_EPSILON * fabs(result->val);
21191 return GSL_SUCCESS;
21194 const double t1 = 1.0/x;
21195 cheb_eval_e(&psi_cs, 2.0*x-1.0, &result_c);
21197 result->val = -t1 + result_c.val;
21198 result->err = GSL_DBL_EPSILON * t1;
21199 result->err += result_c.err;
21200 result->err += GSL_DBL_EPSILON * fabs(result->val);
21201 return GSL_SUCCESS;
21204 const double v = x - 1.0;
21205 return cheb_eval_e(&psi_cs, 2.0*v-1.0, result);
21214psi_complex_asymp(gsl_complex z)
21221 static const double c1 = -0.1;
21222 static const double c2 = 1.0/21.0;
21223 static const double c3 = -0.05;
21225 gsl_complex zi = gsl_complex_inverse(z);
21226 gsl_complex w = gsl_complex_mul(zi, zi);
21231 sum = gsl_complex_mul_real(w, c3/c2);
21232 sum = gsl_complex_add_real(sum, 1.0);
21233 sum = gsl_complex_mul_real(sum, c2/c1);
21234 sum = gsl_complex_mul(sum, w);
21235 sum = gsl_complex_add_real(sum, 1.0);
21236 sum = gsl_complex_mul_real(sum, c1);
21237 sum = gsl_complex_mul(sum, w);
21238 sum = gsl_complex_add_real(sum, 1.0);
21241 cs = gsl_complex_mul(sum, w);
21242 cs = gsl_complex_mul_real(cs, -1.0/12.0);
21243 cs = gsl_complex_add(cs, gsl_complex_mul_real(zi, -0.5));
21245 return gsl_complex_add(gsl_complex_log(z), cs);
21254 gsl_sf_result * result_re,
21255 gsl_sf_result * result_im
21262 if(GSL_REAL(z) == 0.0 && GSL_IMAG(z) == 0.0)
21264 result_re->val = 0.0;
21265 result_im->val = 0.0;
21266 result_re->err = 0.0;
21267 result_im->err = 0.0;
21272 if(GSL_REAL(z) < 20.0 && fabs(GSL_IMAG(z)) < 20.0)
21274 const double sp = sqrt(20.0 + GSL_IMAG(z));
21275 const double sn = sqrt(20.0 - GSL_IMAG(z));
21276 const double rhs = sp*sn - GSL_REAL(z);
21277 if(rhs > 0.0) n_recurse = ceil(rhs);
21281 a = psi_complex_asymp(gsl_complex_add_real(z, n_recurse));
21283 result_re->err = 2.0 * GSL_DBL_EPSILON * fabs(GSL_REAL(a));
21284 result_im->err = 2.0 * GSL_DBL_EPSILON * fabs(GSL_IMAG(a));
21287 for(i = n_recurse; i >= 1; --i)
21289 gsl_complex zn = gsl_complex_add_real(z, i - 1.0);
21290 gsl_complex zn_inverse = gsl_complex_inverse(zn);
21291 a = gsl_complex_sub(a, zn_inverse);
21294 result_re->err += 2.0 * GSL_DBL_EPSILON * fabs(GSL_REAL(zn_inverse));
21295 result_im->err += 2.0 * GSL_DBL_EPSILON * fabs(GSL_IMAG(zn_inverse));
21298 result_re->val = GSL_REAL(a);
21299 result_im->val = GSL_IMAG(a);
21301 result_re->err += 2.0 * GSL_DBL_EPSILON * fabs(result_re->val);
21302 result_im->err += 2.0 * GSL_DBL_EPSILON * fabs(result_im->val);
21304 return GSL_SUCCESS;
21312psi_n_xg0(
const int n,
const double x, gsl_sf_result * result)
21315 return gsl_sf_psi_e(x, result);
21319 gsl_sf_result ln_nf;
21320 gsl_sf_result hzeta;
21321 int stat_hz = gsl_sf_hzeta_e(n+1.0, x, &hzeta);
21322 int stat_nf = gsl_sf_lnfact_e((
unsigned int) n, &ln_nf);
21323 int stat_e = gsl_sf_exp_mult_err_e(ln_nf.val, ln_nf.err,
21324 hzeta.val, hzeta.err,
21326 if(GSL_IS_EVEN(n)) result->val = -result->val;
21327 return GSL_ERROR_SELECT_3(stat_e, stat_nf, stat_hz);
21335int gsl_sf_psi_int_e(
const int n, gsl_sf_result * result)
21340 DOMAIN_ERROR(result);
21342 else if(n <= PSI_TABLE_NMAX) {
21343 result->val = psi_table[n];
21344 result->err = GSL_DBL_EPSILON * fabs(result->val);
21345 return GSL_SUCCESS;
21349 const double c2 = -1.0/12.0;
21350 const double c3 = 1.0/120.0;
21351 const double c4 = -1.0/252.0;
21352 const double c5 = 1.0/240.0;
21353 const double ni2 = (1.0/n)*(1.0/n);
21354 const double ser = ni2 * (c2 + ni2 * (c3 + ni2 * (c4 + ni2*c5)));
21355 result->val = log(n) - 0.5/n + ser;
21356 result->err = GSL_DBL_EPSILON * (fabs(log(n)) + fabs(0.5/n) + fabs(ser));
21357 result->err += GSL_DBL_EPSILON * fabs(result->val);
21358 return GSL_SUCCESS;
21363int gsl_sf_psi_e(
const double x, gsl_sf_result * result)
21366 return psi_x(x, result);
21371gsl_sf_psi_1piy_e(
const double y, gsl_sf_result * result)
21373 const double ay = fabs(y);
21379 const double yi2 = 1.0/(ay*ay);
21380 const double lny = log(ay);
21381 const double sum = yi2 * (1.0/12.0 + 1.0/120.0 * yi2 + 1.0/252.0 * yi2*yi2);
21382 result->val = lny + sum;
21383 result->err = 2.0 * GSL_DBL_EPSILON * (fabs(lny) + fabs(sum));
21384 return GSL_SUCCESS;
21386 else if(ay > 10.0) {
21388 const double yi2 = 1.0/(ay*ay);
21389 const double lny = log(ay);
21390 const double sum = yi2 * (1.0/12.0 +
21394 yi2 * (1.0/132.0 + 691.0/32760.0 * yi2)))));
21395 result->val = lny + sum;
21396 result->err = 2.0 * GSL_DBL_EPSILON * (fabs(lny) + fabs(sum));
21397 return GSL_SUCCESS;
21400 const double y2 = ay*ay;
21401 const double x = (2.0*ay - 11.0)/9.0;
21402 const double v = y2*(1.0/(1.0+y2) + 0.5/(4.0+y2));
21403 gsl_sf_result result_c;
21404 cheb_eval_e(&r1py_cs, x, &result_c);
21405 result->val = result_c.val - M_EULER + v;
21406 result->err = result_c.err;
21407 result->err += 2.0 * GSL_DBL_EPSILON * (fabs(v) + M_EULER + fabs(result_c.val));
21408 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
21409 result->err *= 5.0;
21410 return GSL_SUCCESS;
21425 const double y2 = y*y;
21426 const double c0 = 0.00019603999466879846570;
21427 const double c2 = 3.8426659205114376860e-08;
21428 const double c4 = 1.0041592839497643554e-11;
21429 const double c6 = 2.9516743763500191289e-15;
21430 const double p = c0 + y2 *(-c2 + y2*(c4 - y2*c6));
21435 for(n=1; n<=M; n++) {
21436 sum += 1.0/(n * (n*n + y*y));
21439 v = y2 * (sum + p);
21440 result->val = -M_EULER + v;
21441 result->err = GSL_DBL_EPSILON * (M_EULER + fabs(v));
21442 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
21443 return GSL_SUCCESS;
21448int gsl_sf_psi_1_int_e(
const int n, gsl_sf_result * result)
21452 DOMAIN_ERROR(result);
21454 else if(n <= PSI_1_TABLE_NMAX) {
21455 result->val = psi_1_table[n];
21456 result->err = GSL_DBL_EPSILON * result->val;
21457 return GSL_SUCCESS;
21463 const double c0 = -1.0/30.0;
21464 const double c1 = 1.0/42.0;
21465 const double c2 = -1.0/30.0;
21466 const double ni2 = (1.0/n)*(1.0/n);
21467 const double ser = ni2*ni2 * (c0 + ni2*(c1 + c2*ni2));
21468 result->val = (1.0 + 0.5/n + 1.0/(6.0*n*n) + ser) / n;
21469 result->err = GSL_DBL_EPSILON * result->val;
21470 return GSL_SUCCESS;
21475int gsl_sf_psi_1_e(
const double x, gsl_sf_result * result)
21479 if(x == 0.0 || x == -1.0 || x == -2.0) {
21480 DOMAIN_ERROR(result);
21484 return psi_n_xg0(1, x, result);
21495 DOMAIN_ERROR(result);
21497 for(m = 0; m < M; ++m)
21498 sum += 1.0/((x+m)*(x+m));
21501 int stat_psi = psi_n_xg0(1, fx, result);
21502 result->val += sum;
21503 result->err += M * GSL_DBL_EPSILON * sum;
21510 const double sin_px = sin(M_PI * x);
21511 const double d = M_PI*M_PI/(sin_px*sin_px);
21513 int stat_psi = psi_n_xg0(1, 1.0-x, &r);
21514 result->val = d - r.val;
21515 result->err = r.err + 2.0*GSL_DBL_EPSILON*d;
21521int gsl_sf_psi_n_e(
const int n,
const double x, gsl_sf_result * result)
21527 return gsl_sf_psi_e(x, result);
21531 return gsl_sf_psi_1_e(x, result);
21533 else if(n < 0 || x <= 0.0) {
21534 DOMAIN_ERROR(result);
21537 gsl_sf_result ln_nf;
21538 gsl_sf_result hzeta;
21539 int stat_hz = gsl_sf_hzeta_e(n+1.0, x, &hzeta);
21540 int stat_nf = gsl_sf_lnfact_e((
unsigned int) n, &ln_nf);
21541 int stat_e = gsl_sf_exp_mult_err_e(ln_nf.val, ln_nf.err,
21542 hzeta.val, hzeta.err,
21544 if(GSL_IS_EVEN(n)) result->val = -result->val;
21545 return GSL_ERROR_SELECT_3(stat_e, stat_nf, stat_hz);
21551gsl_sf_complex_psi_e(
21554 gsl_sf_result * result_re,
21555 gsl_sf_result * result_im
21560 gsl_complex z = gsl_complex_rect(x, y);
21561 return psi_complex_rhp(z, result_re, result_im);
21566 gsl_complex z = gsl_complex_rect(x, y);
21567 gsl_complex omz = gsl_complex_rect(1.0 - x, -y);
21568 gsl_complex zpi = gsl_complex_mul_real(z, M_PI);
21569 gsl_complex cotzpi = gsl_complex_cot(zpi);
21570 int ret_val = psi_complex_rhp(omz, result_re, result_im);
21572 if(GSL_IS_REAL(GSL_REAL(cotzpi)) && GSL_IS_REAL(GSL_IMAG(cotzpi)))
21574 result_re->val -= M_PI * GSL_REAL(cotzpi);
21575 result_im->val -= M_PI * GSL_IMAG(cotzpi);
21580 GSL_ERROR(
"singularity", GSL_EDOM);
21591double gsl_sf_psi_int(
const int n)
21593 EVAL_RESULT(gsl_sf_psi_int_e(n, &result));
21596double gsl_sf_psi(
const double x)
21598 EVAL_RESULT(gsl_sf_psi_e(x, &result));
21601double gsl_sf_psi_1piy(
const double x)
21603 EVAL_RESULT(gsl_sf_psi_1piy_e(x, &result));
21606double gsl_sf_psi_1_int(
const int n)
21608 EVAL_RESULT(gsl_sf_psi_1_int_e(n, &result));
21611double gsl_sf_psi_1(
const double x)
21613 EVAL_RESULT(gsl_sf_psi_1_e(x, &result));
21616double gsl_sf_psi_n(
const int n,
const double x)
21618 EVAL_RESULT(gsl_sf_psi_n_e(n, x, &result));
21643#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
21644#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
21646#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
21647#define MARLEY_BUILTIN_GSL_CONFIG_H
21649#define HAVE_INLINE 1
21650#define HAVE_DECL_ISFINITE 1
21651#define HAVE_DECL_ISNAN 1
21652#define HAVE_DECL_ISINF 1
21653#define GSL_COERCE_DBL(x) (x)
21655#define GSL_DISABLE_DEPRECATED 0
21656#define PACKAGE_VERSION "2.8"
21657#define VERSION "2.8"
21685#ifndef __GSL_MATH_H__
21686#define __GSL_MATH_H__
21708#ifndef __GSL_SYS_H__
21709#define __GSL_SYS_H__
21715double gsl_log1p (
const double x);
21716double gsl_expm1 (
const double x);
21717double gsl_hypot (
const double x,
const double y);
21718double gsl_hypot3 (
const double x,
const double y,
const double z);
21719double gsl_acosh (
const double x);
21720double gsl_asinh (
const double x);
21721double gsl_atanh (
const double x);
21723int gsl_isnan (
const double x);
21724int gsl_isinf (
const double x);
21725int gsl_finite (
const double x);
21727double gsl_nan (
void);
21728double gsl_posinf (
void);
21729double gsl_neginf (
void);
21730double gsl_fdiv (
const double x,
const double y);
21732double gsl_coerce_double (
const double x);
21733float gsl_coerce_float (
const float x);
21734long double gsl_coerce_long_double (
const long double x);
21736double gsl_ldexp(
const double x,
const int e);
21737double gsl_frexp(
const double x,
int * e);
21739int gsl_fcmp (
const double x1,
const double x2,
const double epsilon);
21766#ifndef __GSL_INLINE_H__
21767#define __GSL_INLINE_H__
21796# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
21797# define INLINE_DECL inline
21798# define INLINE_FUN inline
21800# define INLINE_DECL
21801# define INLINE_FUN extern inline
21804# define INLINE_DECL
21811#define GSL_RANGE_COND(x) (x)
21818#ifndef __GSL_MACHINE_H__
21819#define __GSL_MACHINE_H__
21833#define GSL_DBL_EPSILON 2.2204460492503131e-16
21834#define GSL_SQRT_DBL_EPSILON 1.4901161193847656e-08
21835#define GSL_ROOT3_DBL_EPSILON 6.0554544523933429e-06
21836#define GSL_ROOT4_DBL_EPSILON 1.2207031250000000e-04
21837#define GSL_ROOT5_DBL_EPSILON 7.4009597974140505e-04
21838#define GSL_ROOT6_DBL_EPSILON 2.4607833005759251e-03
21839#define GSL_LOG_DBL_EPSILON (-3.6043653389117154e+01)
21841#define GSL_DBL_MIN 2.2250738585072014e-308
21842#define GSL_SQRT_DBL_MIN 1.4916681462400413e-154
21843#define GSL_ROOT3_DBL_MIN 2.8126442852362996e-103
21844#define GSL_ROOT4_DBL_MIN 1.2213386697554620e-77
21845#define GSL_ROOT5_DBL_MIN 2.9476022969691763e-62
21846#define GSL_ROOT6_DBL_MIN 5.3034368905798218e-52
21847#define GSL_LOG_DBL_MIN (-7.0839641853226408e+02)
21849#define GSL_DBL_MAX 1.7976931348623157e+308
21850#define GSL_SQRT_DBL_MAX 1.3407807929942596e+154
21851#define GSL_ROOT3_DBL_MAX 5.6438030941222897e+102
21852#define GSL_ROOT4_DBL_MAX 1.1579208923731620e+77
21853#define GSL_ROOT5_DBL_MAX 4.4765466227572707e+61
21854#define GSL_ROOT6_DBL_MAX 2.3756689782295612e+51
21855#define GSL_LOG_DBL_MAX 7.0978271289338397e+02
21857#define GSL_FLT_EPSILON 1.1920928955078125e-07
21858#define GSL_SQRT_FLT_EPSILON 3.4526698300124393e-04
21859#define GSL_ROOT3_FLT_EPSILON 4.9215666011518501e-03
21860#define GSL_ROOT4_FLT_EPSILON 1.8581361171917516e-02
21861#define GSL_ROOT5_FLT_EPSILON 4.1234622211652937e-02
21862#define GSL_ROOT6_FLT_EPSILON 7.0153878019335827e-02
21863#define GSL_LOG_FLT_EPSILON (-1.5942385152878742e+01)
21865#define GSL_FLT_MIN 1.1754943508222875e-38
21866#define GSL_SQRT_FLT_MIN 1.0842021724855044e-19
21867#define GSL_ROOT3_FLT_MIN 2.2737367544323241e-13
21868#define GSL_ROOT4_FLT_MIN 3.2927225399135965e-10
21869#define GSL_ROOT5_FLT_MIN 2.5944428542140822e-08
21870#define GSL_ROOT6_FLT_MIN 4.7683715820312542e-07
21871#define GSL_LOG_FLT_MIN (-8.7336544750553102e+01)
21873#define GSL_FLT_MAX 3.4028234663852886e+38
21874#define GSL_SQRT_FLT_MAX 1.8446743523953730e+19
21875#define GSL_ROOT3_FLT_MAX 6.9814635196223242e+12
21876#define GSL_ROOT4_FLT_MAX 4.2949672319999986e+09
21877#define GSL_ROOT5_FLT_MAX 5.0859007855960041e+07
21878#define GSL_ROOT6_FLT_MAX 2.6422459233807749e+06
21879#define GSL_LOG_FLT_MAX 8.8722839052068352e+01
21881#define GSL_SFLT_EPSILON 4.8828125000000000e-04
21882#define GSL_SQRT_SFLT_EPSILON 2.2097086912079612e-02
21883#define GSL_ROOT3_SFLT_EPSILON 7.8745065618429588e-02
21884#define GSL_ROOT4_SFLT_EPSILON 1.4865088937534013e-01
21885#define GSL_ROOT5_SFLT_EPSILON 2.1763764082403100e-01
21886#define GSL_ROOT6_SFLT_EPSILON 2.8061551207734325e-01
21887#define GSL_LOG_SFLT_EPSILON (-7.6246189861593985e+00)
21893#define GSL_MACH_EPS GSL_DBL_EPSILON
21912#define GSL_SQRT_MACH_EPS 3.2e-08
21913#define GSL_ROOT3_MACH_EPS 1.0e-05
21914#define GSL_ROOT4_MACH_EPS 0.000178
21915#define GSL_ROOT5_MACH_EPS 0.00100
21916#define GSL_ROOT6_MACH_EPS 0.00316
21917#define GSL_LOG_MACH_EPS (-34.54)
21945#ifndef __GSL_PRECISION_H__
21946#define __GSL_PRECISION_H__
21967#ifndef __GSL_TYPES_H__
21968#define __GSL_TYPES_H__
21975# define GSL_VAR extern __declspec(dllexport)
21977# define GSL_VAR extern __declspec(dllimport)
21980# define GSL_VAR extern
21983# define GSL_VAR extern
21999typedef unsigned int gsl_prec_t;
22006#define _GSL_PREC_T_NUM 3
22013GSL_VAR
const double gsl_prec_eps[];
22014GSL_VAR
const double gsl_prec_sqrt_eps[];
22015GSL_VAR
const double gsl_prec_root3_eps[];
22016GSL_VAR
const double gsl_prec_root4_eps[];
22017GSL_VAR
const double gsl_prec_root5_eps[];
22018GSL_VAR
const double gsl_prec_root6_eps[];
22046#ifndef __GSL_NAN_H__
22047#define __GSL_NAN_H__
22050# define GSL_POSINF INFINITY
22051# define GSL_NEGINF (-INFINITY)
22052#elif defined(HUGE_VAL)
22053# define GSL_POSINF HUGE_VAL
22054# define GSL_NEGINF (-HUGE_VAL)
22056# define GSL_POSINF (gsl_posinf())
22057# define GSL_NEGINF (gsl_neginf())
22061# define GSL_NAN NAN
22062#elif defined(INFINITY)
22063# define GSL_NAN (INFINITY/INFINITY)
22065# define GSL_NAN (gsl_nan())
22068#define GSL_POSZERO (+0.0)
22069#define GSL_NEGZERO (-0.0)
22094#ifndef __GSL_POW_INT_H__
22095#define __GSL_POW_INT_H__
22116#ifndef __GSL_INLINE_H__
22117#define __GSL_INLINE_H__
22146# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
22147# define INLINE_DECL inline
22148# define INLINE_FUN inline
22150# define INLINE_DECL
22151# define INLINE_FUN extern inline
22154# define INLINE_DECL
22161#define GSL_RANGE_COND(x) (x)
22170INLINE_DECL
double gsl_pow_2(
const double x);
22171INLINE_DECL
double gsl_pow_3(
const double x);
22172INLINE_DECL
double gsl_pow_4(
const double x);
22173INLINE_DECL
double gsl_pow_5(
const double x);
22174INLINE_DECL
double gsl_pow_6(
const double x);
22175INLINE_DECL
double gsl_pow_7(
const double x);
22176INLINE_DECL
double gsl_pow_8(
const double x);
22177INLINE_DECL
double gsl_pow_9(
const double x);
22180INLINE_FUN
double gsl_pow_2(
const double x) {
return x*x; }
22181INLINE_FUN
double gsl_pow_3(
const double x) {
return x*x*x; }
22182INLINE_FUN
double gsl_pow_4(
const double x) {
double x2 = x*x;
return x2*x2; }
22183INLINE_FUN
double gsl_pow_5(
const double x) {
double x2 = x*x;
return x2*x2*x; }
22184INLINE_FUN
double gsl_pow_6(
const double x) {
double x2 = x*x;
return x2*x2*x2; }
22185INLINE_FUN
double gsl_pow_7(
const double x) {
double x3 = x*x*x;
return x3*x3*x; }
22186INLINE_FUN
double gsl_pow_8(
const double x) {
double x2 = x*x;
double x4 = x2*x2;
return x4*x4; }
22187INLINE_FUN
double gsl_pow_9(
const double x) {
double x3 = x*x*x;
return x3*x3*x3; }
22190double gsl_pow_int(
double x,
int n);
22191double gsl_pow_uint(
double x,
unsigned int n);
22218#ifndef __GSL_MINMAX_H__
22219#define __GSL_MINMAX_H__
22240#ifndef __GSL_INLINE_H__
22241#define __GSL_INLINE_H__
22270# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
22271# define INLINE_DECL inline
22272# define INLINE_FUN inline
22274# define INLINE_DECL
22275# define INLINE_FUN extern inline
22278# define INLINE_DECL
22285#define GSL_RANGE_COND(x) (x)
22297#define GSL_MAX(a,b) ((a) > (b) ? (a) : (b))
22298#define GSL_MIN(a,b) ((a) < (b) ? (a) : (b))
22301double gsl_max (
double a,
double b);
22302double gsl_min (
double a,
double b);
22307INLINE_FUN
int GSL_MAX_INT (
int a,
int b);
22308INLINE_FUN
int GSL_MIN_INT (
int a,
int b);
22309INLINE_FUN
double GSL_MAX_DBL (
double a,
double b);
22310INLINE_FUN
double GSL_MIN_DBL (
double a,
double b);
22311INLINE_FUN
long double GSL_MAX_LDBL (
long double a,
long double b);
22312INLINE_FUN
long double GSL_MIN_LDBL (
long double a,
long double b);
22315GSL_MAX_INT (
int a,
int b)
22317 return GSL_MAX (a, b);
22321GSL_MIN_INT (
int a,
int b)
22323 return GSL_MIN (a, b);
22327GSL_MAX_DBL (
double a,
double b)
22329 return GSL_MAX (a, b);
22333GSL_MIN_DBL (
double a,
double b)
22335 return GSL_MIN (a, b);
22338INLINE_FUN
long double
22339GSL_MAX_LDBL (
long double a,
long double b)
22341 return GSL_MAX (a, b);
22344INLINE_FUN
long double
22345GSL_MIN_LDBL (
long double a,
long double b)
22347 return GSL_MIN (a, b);
22350#define GSL_MAX_INT(a,b) GSL_MAX(a,b)
22351#define GSL_MIN_INT(a,b) GSL_MIN(a,b)
22352#define GSL_MAX_DBL(a,b) GSL_MAX(a,b)
22353#define GSL_MIN_DBL(a,b) GSL_MIN(a,b)
22354#define GSL_MAX_LDBL(a,b) GSL_MAX(a,b)
22355#define GSL_MIN_LDBL(a,b) GSL_MIN(a,b)
22364#define M_E 2.71828182845904523536028747135
22368#define M_LOG2E 1.44269504088896340735992468100
22372#define M_LOG10E 0.43429448190325182765112891892
22376#define M_SQRT2 1.41421356237309504880168872421
22380#define M_SQRT1_2 0.70710678118654752440084436210
22385#define M_SQRT3 1.73205080756887729352744634151
22389#define M_PI 3.14159265358979323846264338328
22393#define M_PI_2 1.57079632679489661923132169164
22397#define M_PI_4 0.78539816339744830961566084582
22401#define M_SQRTPI 1.77245385090551602729816748334
22405#define M_2_SQRTPI 1.12837916709551257389615890312
22409#define M_1_PI 0.31830988618379067153776752675
22413#define M_2_PI 0.63661977236758134307553505349
22417#define M_LN10 2.30258509299404568401799145468
22421#define M_LN2 0.69314718055994530941723212146
22425#define M_LNPI 1.14472988584940017414342735135
22429#define M_EULER 0.57721566490153286060651209008
22438#define GSL_IS_ODD(n) ((n) & 1)
22439#define GSL_IS_EVEN(n) (!(GSL_IS_ODD(n)))
22440#define GSL_SIGN(x) ((x) >= 0.0 ? 1 : -1)
22443#define GSL_IS_REAL(x) (gsl_finite(x))
22449 double (* function) (
double x,
void * params);
22455#define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params)
22461 double (* f) (
double x,
void * params);
22462 double (* df) (
double x,
void * params);
22463 void (* fdf) (
double x,
void * params,
double * f,
double * df);
22469#define GSL_FN_FDF_EVAL_F(FDF,x) (*((FDF)->f))(x,(FDF)->params)
22470#define GSL_FN_FDF_EVAL_DF(FDF,x) (*((FDF)->df))(x,(FDF)->params)
22471#define GSL_FN_FDF_EVAL_F_DF(FDF,x,y,dy) (*((FDF)->fdf))(x,(FDF)->params,(y),(dy))
22478 int (* function) (
double x,
double y[],
void * params);
22484#define GSL_FN_VEC_EVAL(F,x,y) (*((F)->function))(x,y,(F)->params)
22511#ifndef __GSL_ERRNO_H__
22512#define __GSL_ERRNO_H__
22536#ifndef __GSL_TYPES_H__
22537#define __GSL_TYPES_H__
22544# define GSL_VAR extern __declspec(dllexport)
22546# define GSL_VAR extern __declspec(dllimport)
22549# define GSL_VAR extern
22552# define GSL_VAR extern
22602void gsl_error (
const char * reason,
const char * file,
int line,
22605void gsl_stream_printf (
const char *label,
const char *file,
22606 int line,
const char *reason);
22608typedef void gsl_error_handler_t (
const char * reason,
const char * file,
22609 int line,
int gsl_errno);
22611gsl_error_handler_t *
22612gsl_set_error_handler (gsl_error_handler_t * new_handler);
22616#define GSL_ERROR(reason, gsl_errno) \
22618 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
22619 return gsl_errno ; \
22624#define GSL_ERROR_VAL(reason, gsl_errno, value) \
22626 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
22633#define GSL_ERROR_VOID(reason, gsl_errno) \
22635 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
22641#define GSL_ERROR_NULL(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, 0)
22657#define GSL_ERROR_SELECT_2(a,b) ((a) != GSL_SUCCESS ? (a) : ((b) != GSL_SUCCESS ? (b) : GSL_SUCCESS))
22658#define GSL_ERROR_SELECT_3(a,b,c) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_2(b,c))
22659#define GSL_ERROR_SELECT_4(a,b,c,d) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_3(b,c,d))
22660#define GSL_ERROR_SELECT_5(a,b,c,d,e) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_4(b,c,d,e))
22662#define GSL_STATUS_UPDATE(sp, s) do { if ((s) != GSL_SUCCESS) *(sp) = (s);} while(0)
22691#ifndef __GSL_SF_TRIG_H__
22692#define __GSL_SF_TRIG_H__
22715#ifndef __GSL_SF_RESULT_H__
22716#define __GSL_SF_RESULT_H__
22728#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
22739int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
22757int gsl_sf_sin_e(
double x, gsl_sf_result * result);
22758double gsl_sf_sin(
const double x);
22763int gsl_sf_cos_e(
double x, gsl_sf_result * result);
22764double gsl_sf_cos(
const double x);
22769int gsl_sf_hypot_e(
const double x,
const double y, gsl_sf_result * result);
22770double gsl_sf_hypot(
const double x,
const double y);
22777int gsl_sf_complex_sin_e(
const double zr,
const double zi, gsl_sf_result * szr, gsl_sf_result * szi);
22784int gsl_sf_complex_cos_e(
const double zr,
const double zi, gsl_sf_result * czr, gsl_sf_result * czi);
22791int gsl_sf_complex_logsin_e(
const double zr,
const double zi, gsl_sf_result * lszr, gsl_sf_result * lszi);
22798int gsl_sf_sinc_e(
double x, gsl_sf_result * result);
22799double gsl_sf_sinc(
const double x);
22806int gsl_sf_lnsinh_e(
const double x, gsl_sf_result * result);
22807double gsl_sf_lnsinh(
const double x);
22814int gsl_sf_lncosh_e(
const double x, gsl_sf_result * result);
22815double gsl_sf_lncosh(
const double x);
22822int gsl_sf_polar_to_rect(
const double r,
const double theta, gsl_sf_result * x, gsl_sf_result * y);
22829int gsl_sf_rect_to_polar(
const double x,
const double y, gsl_sf_result * r, gsl_sf_result * theta);
22833int gsl_sf_sin_err_e(
const double x,
const double dx, gsl_sf_result * result);
22838int gsl_sf_cos_err_e(
const double x,
const double dx, gsl_sf_result * result);
22845int gsl_sf_angle_restrict_symm_e(
double * theta);
22846double gsl_sf_angle_restrict_symm(
const double theta);
22853int gsl_sf_angle_restrict_pos_e(
double * theta);
22854double gsl_sf_angle_restrict_pos(
const double theta);
22857int gsl_sf_angle_restrict_symm_err_e(
const double theta, gsl_sf_result * result);
22859int gsl_sf_angle_restrict_pos_err_e(
const double theta, gsl_sf_result * result);
22889#ifndef __GSL_SF_AIRY_H__
22890#define __GSL_SF_AIRY_H__
22913#ifndef __GSL_MODE_H__
22914#define __GSL_MODE_H__
22935#ifndef __GSL_INLINE_H__
22936#define __GSL_INLINE_H__
22965# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
22966# define INLINE_DECL inline
22967# define INLINE_FUN inline
22969# define INLINE_DECL
22970# define INLINE_FUN extern inline
22973# define INLINE_DECL
22980#define GSL_RANGE_COND(x) (x)
23001typedef unsigned int gsl_mode_t;
23017#define GSL_PREC_DOUBLE 0
23018#define GSL_PREC_SINGLE 1
23019#define GSL_PREC_APPROX 2
23022INLINE_FUN
unsigned int GSL_MODE_PREC(gsl_mode_t mt);
23024INLINE_FUN
unsigned int
23025GSL_MODE_PREC(gsl_mode_t mt)
23026{
return (mt & (
unsigned int)7); }
23028#define GSL_MODE_PREC(mt) ((mt) & (unsigned int)7)
23034#define GSL_MODE_DEFAULT 0
23064#ifndef __GSL_SF_RESULT_H__
23065#define __GSL_SF_RESULT_H__
23077#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
23088int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
23105int gsl_sf_airy_Ai_e(
const double x,
const gsl_mode_t mode, gsl_sf_result * result);
23106double gsl_sf_airy_Ai(
const double x, gsl_mode_t mode);
23113int gsl_sf_airy_Bi_e(
const double x, gsl_mode_t mode, gsl_sf_result * result);
23114double gsl_sf_airy_Bi(
const double x, gsl_mode_t mode);
23123int gsl_sf_airy_Ai_scaled_e(
const double x, gsl_mode_t mode, gsl_sf_result * result);
23124double gsl_sf_airy_Ai_scaled(
const double x, gsl_mode_t mode);
23133int gsl_sf_airy_Bi_scaled_e(
const double x, gsl_mode_t mode, gsl_sf_result * result);
23134double gsl_sf_airy_Bi_scaled(
const double x, gsl_mode_t mode);
23141int gsl_sf_airy_Ai_deriv_e(
const double x, gsl_mode_t mode, gsl_sf_result * result);
23142double gsl_sf_airy_Ai_deriv(
const double x, gsl_mode_t mode);
23149int gsl_sf_airy_Bi_deriv_e(
const double x, gsl_mode_t mode, gsl_sf_result * result);
23150double gsl_sf_airy_Bi_deriv(
const double x, gsl_mode_t mode);
23159int gsl_sf_airy_Ai_deriv_scaled_e(
const double x, gsl_mode_t mode, gsl_sf_result * result);
23160double gsl_sf_airy_Ai_deriv_scaled(
const double x, gsl_mode_t mode);
23169int gsl_sf_airy_Bi_deriv_scaled_e(
const double x, gsl_mode_t mode, gsl_sf_result * result);
23170double gsl_sf_airy_Bi_deriv_scaled(
const double x, gsl_mode_t mode);
23175int gsl_sf_airy_zero_Ai_e(
unsigned int s, gsl_sf_result * result);
23176double gsl_sf_airy_zero_Ai(
unsigned int s);
23181int gsl_sf_airy_zero_Bi_e(
unsigned int s, gsl_sf_result * result);
23182double gsl_sf_airy_zero_Bi(
unsigned int s);
23187int gsl_sf_airy_zero_Ai_deriv_e(
unsigned int s, gsl_sf_result * result);
23188double gsl_sf_airy_zero_Ai_deriv(
unsigned int s);
23193int gsl_sf_airy_zero_Bi_deriv_e(
unsigned int s, gsl_sf_result * result);
23194double gsl_sf_airy_zero_Bi_deriv(
unsigned int s);
23207#ifndef MARLEY_BUILTIN_GSL_CHEB_EVAL_MODE_C
23208#define MARLEY_BUILTIN_GSL_CHEB_EVAL_MODE_C
23211cheb_eval_mode_e(
const cheb_series * cs,
23214 gsl_sf_result * result)
23220 double y = (2.*x - cs->a - cs->b) / (cs->b - cs->a);
23221 double y2 = 2.0 * y;
23225 if(GSL_MODE_PREC(mode) == GSL_PREC_DOUBLE)
23226 eval_order = cs->order;
23228 eval_order = cs->order_sp;
23230 for(j = eval_order; j>=1; j--) {
23232 d = y2*d - dd + cs->c[j];
23236 result->val = y*d - dd + 0.5 * cs->c[0];
23237 result->err = GSL_DBL_EPSILON * fabs(result->val) + fabs(cs->c[eval_order]);
23238 return GSL_SUCCESS;
23275static double am21_data[37] = {
23276 0.0065809191761485,
23277 0.0023675984685722,
23278 0.0001324741670371,
23279 0.0000157600904043,
23280 0.0000027529702663,
23281 0.0000006102679017,
23282 0.0000001595088468,
23283 0.0000000471033947,
23284 0.0000000152933871,
23285 0.0000000053590722,
23286 0.0000000020000910,
23287 0.0000000007872292,
23288 0.0000000003243103,
23289 0.0000000001390106,
23290 0.0000000000617011,
23291 0.0000000000282491,
23292 0.0000000000132979,
23293 0.0000000000064188,
23294 0.0000000000031697,
23295 0.0000000000015981,
23296 0.0000000000008213,
23297 0.0000000000004296,
23298 0.0000000000002284,
23299 0.0000000000001232,
23300 0.0000000000000675,
23301 0.0000000000000374,
23302 0.0000000000000210,
23303 0.0000000000000119,
23304 0.0000000000000068,
23305 0.0000000000000039,
23306 0.0000000000000023,
23307 0.0000000000000013,
23308 0.0000000000000008,
23309 0.0000000000000005,
23310 0.0000000000000003,
23311 0.0000000000000001,
23314static cheb_series am21_cs = {
23321static double ath1_data[36] = {
23322 -0.07125837815669365,
23323 -0.00590471979831451,
23324 -0.00012114544069499,
23325 -0.00000988608542270,
23326 -0.00000138084097352,
23327 -0.00000026142640172,
23328 -0.00000006050432589,
23329 -0.00000001618436223,
23330 -0.00000000483464911,
23331 -0.00000000157655272,
23332 -0.00000000055231518,
23333 -0.00000000020545441,
23334 -0.00000000008043412,
23335 -0.00000000003291252,
23336 -0.00000000001399875,
23337 -0.00000000000616151,
23338 -0.00000000000279614,
23339 -0.00000000000130428,
23340 -0.00000000000062373,
23341 -0.00000000000030512,
23342 -0.00000000000015239,
23343 -0.00000000000007758,
23344 -0.00000000000004020,
23345 -0.00000000000002117,
23346 -0.00000000000001132,
23347 -0.00000000000000614,
23348 -0.00000000000000337,
23349 -0.00000000000000188,
23350 -0.00000000000000105,
23351 -0.00000000000000060,
23352 -0.00000000000000034,
23353 -0.00000000000000020,
23354 -0.00000000000000011,
23355 -0.00000000000000007,
23356 -0.00000000000000004,
23357 -0.00000000000000002
23359static cheb_series ath1_cs = {
23366static double am22_data[33] = {
23367 -0.01562844480625341,
23368 0.00778336445239681,
23369 0.00086705777047718,
23370 0.00015696627315611,
23371 0.00003563962571432,
23372 0.00000924598335425,
23373 0.00000262110161850,
23374 0.00000079188221651,
23375 0.00000025104152792,
23376 0.00000008265223206,
23377 0.00000002805711662,
23378 0.00000000976821090,
23379 0.00000000347407923,
23380 0.00000000125828132,
23381 0.00000000046298826,
23382 0.00000000017272825,
23383 0.00000000006523192,
23384 0.00000000002490471,
23385 0.00000000000960156,
23386 0.00000000000373448,
23387 0.00000000000146417,
23388 0.00000000000057826,
23389 0.00000000000022991,
23390 0.00000000000009197,
23391 0.00000000000003700,
23392 0.00000000000001496,
23393 0.00000000000000608,
23394 0.00000000000000248,
23395 0.00000000000000101,
23396 0.00000000000000041,
23397 0.00000000000000017,
23398 0.00000000000000007,
23399 0.00000000000000002
23401static cheb_series am22_cs = {
23408static double ath2_data[32] = {
23409 0.00440527345871877,
23410 -0.03042919452318455,
23411 -0.00138565328377179,
23412 -0.00018044439089549,
23413 -0.00003380847108327,
23414 -0.00000767818353522,
23415 -0.00000196783944371,
23416 -0.00000054837271158,
23417 -0.00000016254615505,
23418 -0.00000005053049981,
23419 -0.00000001631580701,
23420 -0.00000000543420411,
23421 -0.00000000185739855,
23422 -0.00000000064895120,
23423 -0.00000000023105948,
23424 -0.00000000008363282,
23425 -0.00000000003071196,
23426 -0.00000000001142367,
23427 -0.00000000000429811,
23428 -0.00000000000163389,
23429 -0.00000000000062693,
23430 -0.00000000000024260,
23431 -0.00000000000009461,
23432 -0.00000000000003716,
23433 -0.00000000000001469,
23434 -0.00000000000000584,
23435 -0.00000000000000233,
23436 -0.00000000000000093,
23437 -0.00000000000000037,
23438 -0.00000000000000015,
23439 -0.00000000000000006,
23440 -0.00000000000000002
23442static cheb_series ath2_cs = {
23453airy_mod_phase(
const double x, gsl_mode_t mode, gsl_sf_result * mod, gsl_sf_result * phase)
23455 gsl_sf_result result_m;
23456 gsl_sf_result result_p;
23461 double z = 16.0/(x*x*x) + 1.0;
23462 cheb_eval_mode_e(&am21_cs, z, mode, &result_m);
23463 cheb_eval_mode_e(&ath1_cs, z, mode, &result_p);
23465 else if(x <= -1.0) {
23466 double z = (16.0/(x*x*x) + 9.0)/7.0;
23467 cheb_eval_mode_e(&am22_cs, z, mode, &result_m);
23468 cheb_eval_mode_e(&ath2_cs, z, mode, &result_p);
23475 GSL_ERROR (
"x is greater than 1.0", GSL_EDOM);
23478 m = 0.3125 + result_m.val;
23479 p = -0.625 + result_p.val;
23483 mod->val = sqrt(m/sqx);
23484 mod->err = fabs(mod->val) * (GSL_DBL_EPSILON + fabs(result_m.err/result_m.val));
23485 phase->val = M_PI_4 - x*sqx * p;
23486 phase->err = fabs(phase->val) * (GSL_DBL_EPSILON + fabs(result_p.err/result_p.val));
23488 return GSL_SUCCESS;
23508static double ai_data_f[9] = {
23509 -0.03797135849666999750,
23510 0.05919188853726363857,
23511 0.00098629280577279975,
23512 0.00000684884381907656,
23513 0.00000002594202596219,
23514 0.00000000006176612774,
23515 0.00000000000010092454,
23516 0.00000000000000012014,
23517 0.00000000000000000010
23519static cheb_series aif_cs = {
23526static double ai_data_g[8] = {
23527 0.01815236558116127,
23528 0.02157256316601076,
23529 0.00025678356987483,
23530 0.00000142652141197,
23531 0.00000000457211492,
23532 0.00000000000952517,
23533 0.00000000000001392,
23534 0.00000000000000001
23536static cheb_series aig_cs = {
23559static double data_bif[9] = {
23560 -0.01673021647198664948,
23561 0.10252335834249445610,
23562 0.00170830925073815165,
23563 0.00001186254546774468,
23564 0.00000004493290701779,
23565 0.00000000010698207143,
23566 0.00000000000017480643,
23567 0.00000000000000020810,
23568 0.00000000000000000018
23570static cheb_series bif_cs = {
23577static double data_big[8] = {
23578 0.02246622324857452,
23579 0.03736477545301955,
23580 0.00044476218957212,
23581 0.00000247080756363,
23582 0.00000000791913533,
23583 0.00000000001649807,
23584 0.00000000000002411,
23585 0.00000000000000002
23587static cheb_series big_cs = {
23598static double data_bif2[10] = {
23599 0.0998457269381604100,
23600 0.4786249778630055380,
23601 0.0251552119604330118,
23602 0.0005820693885232645,
23603 0.0000074997659644377,
23604 0.0000000613460287034,
23605 0.0000000003462753885,
23606 0.0000000000014288910,
23607 0.0000000000000044962,
23608 0.0000000000000000111
23610static cheb_series bif2_cs = {
23617static double data_big2[10] = {
23618 0.033305662145514340,
23619 0.161309215123197068,
23620 0.0063190073096134286,
23621 0.0001187904568162517,
23622 0.0000013045345886200,
23623 0.0000000093741259955,
23624 0.0000000000474580188,
23625 0.0000000000001783107,
23626 0.0000000000000005167,
23627 0.0000000000000000011
23629static cheb_series big2_cs = {
23654static double data_aip[36] = {
23655 -0.0187519297793867540198,
23656 -0.0091443848250055004725,
23657 0.0009010457337825074652,
23658 -0.0001394184127221491507,
23659 0.0000273815815785209370,
23660 -0.0000062750421119959424,
23661 0.0000016064844184831521,
23662 -0.0000004476392158510354,
23663 0.0000001334635874651668,
23664 -0.0000000420735334263215,
23665 0.0000000139021990246364,
23666 -0.0000000047831848068048,
23667 0.0000000017047897907465,
23668 -0.0000000006268389576018,
23669 0.0000000002369824276612,
23670 -0.0000000000918641139267,
23671 0.0000000000364278543037,
23672 -0.0000000000147475551725,
23673 0.0000000000060851006556,
23674 -0.0000000000025552772234,
23675 0.0000000000010906187250,
23676 -0.0000000000004725870319,
23677 0.0000000000002076969064,
23678 -0.0000000000000924976214,
23679 0.0000000000000417096723,
23680 -0.0000000000000190299093,
23681 0.0000000000000087790676,
23682 -0.0000000000000040927557,
23683 0.0000000000000019271068,
23684 -0.0000000000000009160199,
23685 0.0000000000000004393567,
23686 -0.0000000000000002125503,
23687 0.0000000000000001036735,
23688 -0.0000000000000000509642,
23689 0.0000000000000000252377,
23690 -0.0000000000000000125793
23728static cheb_series aip_cs = {
23751static double data_bip[24] = {
23752 -0.08322047477943447,
23753 0.01146118927371174,
23754 0.00042896440718911,
23755 -0.00014906639379950,
23756 -0.00001307659726787,
23757 0.00000632759839610,
23758 -0.00000042226696982,
23759 -0.00000019147186298,
23760 0.00000006453106284,
23761 -0.00000000784485467,
23762 -0.00000000096077216,
23763 0.00000000070004713,
23764 -0.00000000017731789,
23765 0.00000000002272089,
23766 0.00000000000165404,
23767 -0.00000000000185171,
23768 0.00000000000059576,
23769 -0.00000000000012194,
23770 0.00000000000001334,
23771 0.00000000000000172,
23772 -0.00000000000000145,
23773 0.00000000000000049,
23774 -0.00000000000000011,
23775 0.00000000000000001
23777static cheb_series bip_cs = {
23784static double data_bip2[29] = {
23785 -0.113596737585988679,
23786 0.0041381473947881595,
23787 0.0001353470622119332,
23788 0.0000104273166530153,
23789 0.0000013474954767849,
23790 0.0000001696537405438,
23791 -0.0000000100965008656,
23792 -0.0000000167291194937,
23793 -0.0000000045815364485,
23794 0.0000000003736681366,
23795 0.0000000005766930320,
23796 0.0000000000621812650,
23797 -0.0000000000632941202,
23798 -0.0000000000149150479,
23799 0.0000000000078896213,
23800 0.0000000000024960513,
23801 -0.0000000000012130075,
23802 -0.0000000000003740493,
23803 0.0000000000002237727,
23804 0.0000000000000474902,
23805 -0.0000000000000452616,
23806 -0.0000000000000030172,
23807 0.0000000000000091058,
23808 -0.0000000000000009814,
23809 -0.0000000000000016429,
23810 0.0000000000000005533,
23811 0.0000000000000002175,
23812 -0.0000000000000001737,
23813 -0.0000000000000000010
23815static cheb_series bip2_cs = {
23825airy_aie(
const double x, gsl_mode_t mode, gsl_sf_result * result)
23827 double sqx = sqrt(x);
23828 double z = 2.0/(x*sqx) - 1.0;
23829 double y = sqrt(sqx);
23830 gsl_sf_result result_c;
23831 cheb_eval_mode_e(&aip_cs, z, mode, &result_c);
23832 result->val = (0.28125 + result_c.val)/y;
23833 result->err = result_c.err/y + GSL_DBL_EPSILON * fabs(result->val);
23834 return GSL_SUCCESS;
23838static int airy_bie(
const double x, gsl_mode_t mode, gsl_sf_result * result)
23840 const double ATR = 8.7506905708484345;
23841 const double BTR = -2.0938363213560543;
23844 double sqx = sqrt(x);
23845 double z = ATR/(x*sqx) + BTR;
23846 double y = sqrt(sqx);
23847 gsl_sf_result result_c;
23848 cheb_eval_mode_e(&bip_cs, z, mode, &result_c);
23849 result->val = (0.625 + result_c.val)/y;
23850 result->err = result_c.err/y + GSL_DBL_EPSILON * fabs(result->val);
23853 double sqx = sqrt(x);
23854 double z = 16.0/(x*sqx) - 1.0;
23855 double y = sqrt(sqx);
23856 gsl_sf_result result_c;
23857 cheb_eval_mode_e(&bip2_cs, z, mode, &result_c);
23858 result->val = (0.625 + result_c.val)/y;
23859 result->err = result_c.err/y + GSL_DBL_EPSILON * fabs(result->val);
23862 return GSL_SUCCESS;
23869gsl_sf_airy_Ai_e(
const double x,
const gsl_mode_t mode, gsl_sf_result * result)
23875 gsl_sf_result theta;
23876 gsl_sf_result cos_result;
23877 int stat_mp = airy_mod_phase(x, mode, &mod, &theta);
23878 int stat_cos = gsl_sf_cos_err_e(theta.val, theta.err, &cos_result);
23879 result->val = mod.val * cos_result.val;
23880 result->err = fabs(mod.val * cos_result.err) + fabs(cos_result.val * mod.err);
23881 result->err += GSL_DBL_EPSILON * fabs(result->val);
23882 return GSL_ERROR_SELECT_2(stat_mp, stat_cos);
23884 else if(x <= 1.0) {
23885 const double z = x*x*x;
23886 gsl_sf_result result_c0;
23887 gsl_sf_result result_c1;
23888 cheb_eval_mode_e(&aif_cs, z, mode, &result_c0);
23889 cheb_eval_mode_e(&aig_cs, z, mode, &result_c1);
23890 result->val = 0.375 + (result_c0.val - x*(0.25 + result_c1.val));
23891 result->err = result_c0.err + fabs(x*result_c1.err);
23892 result->err += GSL_DBL_EPSILON * fabs(result->val);
23893 return GSL_SUCCESS;
23896 double x32 = x * sqrt(x);
23897 double s = exp(-2.0*x32/3.0);
23898 gsl_sf_result result_aie;
23899 int stat_aie = airy_aie(x, mode, &result_aie);
23900 result->val = result_aie.val * s;
23901 result->err = result_aie.err * s + result->val * x32 * GSL_DBL_EPSILON;
23902 result->err += GSL_DBL_EPSILON * fabs(result->val);
23903 CHECK_UNDERFLOW(result);
23910gsl_sf_airy_Ai_scaled_e(
const double x, gsl_mode_t mode, gsl_sf_result * result)
23916 gsl_sf_result theta;
23917 gsl_sf_result cos_result;
23918 int stat_mp = airy_mod_phase(x, mode, &mod, &theta);
23919 int stat_cos = gsl_sf_cos_err_e(theta.val, theta.err, &cos_result);
23920 result->val = mod.val * cos_result.val;
23921 result->err = fabs(mod.val * cos_result.err) + fabs(cos_result.val * mod.err);
23922 result->err += GSL_DBL_EPSILON * fabs(result->val);
23923 return GSL_ERROR_SELECT_2(stat_mp, stat_cos);
23925 else if(x <= 1.0) {
23926 const double z = x*x*x;
23927 gsl_sf_result result_c0;
23928 gsl_sf_result result_c1;
23929 cheb_eval_mode_e(&aif_cs, z, mode, &result_c0);
23930 cheb_eval_mode_e(&aig_cs, z, mode, &result_c1);
23931 result->val = 0.375 + (result_c0.val - x*(0.25 + result_c1.val));
23932 result->err = result_c0.err + fabs(x*result_c1.err);
23933 result->err += GSL_DBL_EPSILON * fabs(result->val);
23936 const double scale = exp(2.0/3.0 * sqrt(z));
23937 result->val *= scale;
23938 result->err *= scale;
23941 return GSL_SUCCESS;
23944 return airy_aie(x, mode, result);
23949int gsl_sf_airy_Bi_e(
const double x, gsl_mode_t mode, gsl_sf_result * result)
23954 gsl_sf_result theta;
23955 gsl_sf_result sin_result;
23956 int stat_mp = airy_mod_phase(x, mode, &mod, &theta);
23957 int stat_sin = gsl_sf_sin_err_e(theta.val, theta.err, &sin_result);
23958 result->val = mod.val * sin_result.val;
23959 result->err = fabs(mod.val * sin_result.err) + fabs(sin_result.val * mod.err);
23960 result->err += GSL_DBL_EPSILON * fabs(result->val);
23961 return GSL_ERROR_SELECT_2(stat_mp, stat_sin);
23964 const double z = x*x*x;
23965 gsl_sf_result result_c0;
23966 gsl_sf_result result_c1;
23967 cheb_eval_mode_e(&bif_cs, z, mode, &result_c0);
23968 cheb_eval_mode_e(&big_cs, z, mode, &result_c1);
23969 result->val = 0.625 + result_c0.val + x*(0.4375 + result_c1.val);
23970 result->err = result_c0.err + fabs(x * result_c1.err);
23971 result->err += GSL_DBL_EPSILON * fabs(result->val);
23972 return GSL_SUCCESS;
23974 else if(x <= 2.0) {
23975 const double z = (2.0*x*x*x - 9.0)/7.0;
23976 gsl_sf_result result_c0;
23977 gsl_sf_result result_c1;
23978 cheb_eval_mode_e(&bif2_cs, z, mode, &result_c0);
23979 cheb_eval_mode_e(&big2_cs, z, mode, &result_c1);
23980 result->val = 1.125 + result_c0.val + x*(0.625 + result_c1.val);
23981 result->err = result_c0.err + fabs(x * result_c1.err);
23982 result->err += GSL_DBL_EPSILON * fabs(result->val);
23983 return GSL_SUCCESS;
23986 const double y = 2.0*x*sqrt(x)/3.0;
23987 const double s = exp(y);
23989 if(y > GSL_LOG_DBL_MAX - 1.0) {
23990 OVERFLOW_ERROR(result);
23993 gsl_sf_result result_bie;
23994 int stat_bie = airy_bie(x, mode, &result_bie);
23995 result->val = result_bie.val * s;
23996 result->err = result_bie.err * s + fabs(1.5*y * (GSL_DBL_EPSILON * result->val));
23997 result->err += GSL_DBL_EPSILON * fabs(result->val);
24005gsl_sf_airy_Bi_scaled_e(
const double x, gsl_mode_t mode, gsl_sf_result * result)
24011 gsl_sf_result theta;
24012 gsl_sf_result sin_result;
24013 int stat_mp = airy_mod_phase(x, mode, &mod, &theta);
24014 int stat_sin = gsl_sf_sin_err_e(theta.val, theta.err, &sin_result);
24015 result->val = mod.val * sin_result.val;
24016 result->err = fabs(mod.val * sin_result.err) + fabs(sin_result.val * mod.err);
24017 result->err += GSL_DBL_EPSILON * fabs(result->val);
24018 return GSL_ERROR_SELECT_2(stat_mp, stat_sin);
24021 const double z = x*x*x;
24022 gsl_sf_result result_c0;
24023 gsl_sf_result result_c1;
24024 cheb_eval_mode_e(&bif_cs, z, mode, &result_c0);
24025 cheb_eval_mode_e(&big_cs, z, mode, &result_c1);
24026 result->val = 0.625 + result_c0.val + x*(0.4375 + result_c1.val);
24027 result->err = result_c0.err + fabs(x * result_c1.err);
24028 result->err += GSL_DBL_EPSILON * fabs(result->val);
24030 const double scale = exp(-2.0/3.0 * sqrt(z));
24031 result->val *= scale;
24032 result->err *= scale;
24034 return GSL_SUCCESS;
24036 else if(x <= 2.0) {
24037 const double x3 = x*x*x;
24038 const double z = (2.0*x3 - 9.0)/7.0;
24039 const double s = exp(-2.0/3.0 * sqrt(x3));
24040 gsl_sf_result result_c0;
24041 gsl_sf_result result_c1;
24042 cheb_eval_mode_e(&bif2_cs, z, mode, &result_c0);
24043 cheb_eval_mode_e(&big2_cs, z, mode, &result_c1);
24044 result->val = s * (1.125 + result_c0.val + x*(0.625 + result_c1.val));
24045 result->err = s * (result_c0.err + fabs(x * result_c1.err));
24046 result->err += GSL_DBL_EPSILON * fabs(result->val);
24047 return GSL_SUCCESS;
24050 return airy_bie(x, mode, result);
24059double gsl_sf_airy_Ai(
const double x, gsl_mode_t mode)
24061 EVAL_RESULT(gsl_sf_airy_Ai_e(x, mode, &result));
24064double gsl_sf_airy_Ai_scaled(
const double x, gsl_mode_t mode)
24066 EVAL_RESULT(gsl_sf_airy_Ai_scaled_e(x, mode, &result));
24069double gsl_sf_airy_Bi(
const double x, gsl_mode_t mode)
24071 EVAL_RESULT(gsl_sf_airy_Bi_e(x, mode, &result));
24074double gsl_sf_airy_Bi_scaled(
const double x, gsl_mode_t mode)
24076 EVAL_RESULT(gsl_sf_airy_Bi_scaled_e(x, mode, &result));
24115#ifndef MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
24116#define MARLEY_BUILTIN_GSL_CONFIG_WRAPPER_H
24118#ifndef MARLEY_BUILTIN_GSL_CONFIG_H
24119#define MARLEY_BUILTIN_GSL_CONFIG_H
24121#define HAVE_INLINE 1
24122#define HAVE_DECL_ISFINITE 1
24123#define HAVE_DECL_ISNAN 1
24124#define HAVE_DECL_ISINF 1
24125#define GSL_COERCE_DBL(x) (x)
24127#define GSL_DISABLE_DEPRECATED 0
24128#define PACKAGE_VERSION "2.8"
24129#define VERSION "2.8"
24157#ifndef __GSL_MATH_H__
24158#define __GSL_MATH_H__
24180#ifndef __GSL_SYS_H__
24181#define __GSL_SYS_H__
24187double gsl_log1p (
const double x);
24188double gsl_expm1 (
const double x);
24189double gsl_hypot (
const double x,
const double y);
24190double gsl_hypot3 (
const double x,
const double y,
const double z);
24191double gsl_acosh (
const double x);
24192double gsl_asinh (
const double x);
24193double gsl_atanh (
const double x);
24195int gsl_isnan (
const double x);
24196int gsl_isinf (
const double x);
24197int gsl_finite (
const double x);
24199double gsl_nan (
void);
24200double gsl_posinf (
void);
24201double gsl_neginf (
void);
24202double gsl_fdiv (
const double x,
const double y);
24204double gsl_coerce_double (
const double x);
24205float gsl_coerce_float (
const float x);
24206long double gsl_coerce_long_double (
const long double x);
24208double gsl_ldexp(
const double x,
const int e);
24209double gsl_frexp(
const double x,
int * e);
24211int gsl_fcmp (
const double x1,
const double x2,
const double epsilon);
24238#ifndef __GSL_INLINE_H__
24239#define __GSL_INLINE_H__
24268# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
24269# define INLINE_DECL inline
24270# define INLINE_FUN inline
24272# define INLINE_DECL
24273# define INLINE_FUN extern inline
24276# define INLINE_DECL
24283#define GSL_RANGE_COND(x) (x)
24290#ifndef __GSL_MACHINE_H__
24291#define __GSL_MACHINE_H__
24305#define GSL_DBL_EPSILON 2.2204460492503131e-16
24306#define GSL_SQRT_DBL_EPSILON 1.4901161193847656e-08
24307#define GSL_ROOT3_DBL_EPSILON 6.0554544523933429e-06
24308#define GSL_ROOT4_DBL_EPSILON 1.2207031250000000e-04
24309#define GSL_ROOT5_DBL_EPSILON 7.4009597974140505e-04
24310#define GSL_ROOT6_DBL_EPSILON 2.4607833005759251e-03
24311#define GSL_LOG_DBL_EPSILON (-3.6043653389117154e+01)
24313#define GSL_DBL_MIN 2.2250738585072014e-308
24314#define GSL_SQRT_DBL_MIN 1.4916681462400413e-154
24315#define GSL_ROOT3_DBL_MIN 2.8126442852362996e-103
24316#define GSL_ROOT4_DBL_MIN 1.2213386697554620e-77
24317#define GSL_ROOT5_DBL_MIN 2.9476022969691763e-62
24318#define GSL_ROOT6_DBL_MIN 5.3034368905798218e-52
24319#define GSL_LOG_DBL_MIN (-7.0839641853226408e+02)
24321#define GSL_DBL_MAX 1.7976931348623157e+308
24322#define GSL_SQRT_DBL_MAX 1.3407807929942596e+154
24323#define GSL_ROOT3_DBL_MAX 5.6438030941222897e+102
24324#define GSL_ROOT4_DBL_MAX 1.1579208923731620e+77
24325#define GSL_ROOT5_DBL_MAX 4.4765466227572707e+61
24326#define GSL_ROOT6_DBL_MAX 2.3756689782295612e+51
24327#define GSL_LOG_DBL_MAX 7.0978271289338397e+02
24329#define GSL_FLT_EPSILON 1.1920928955078125e-07
24330#define GSL_SQRT_FLT_EPSILON 3.4526698300124393e-04
24331#define GSL_ROOT3_FLT_EPSILON 4.9215666011518501e-03
24332#define GSL_ROOT4_FLT_EPSILON 1.8581361171917516e-02
24333#define GSL_ROOT5_FLT_EPSILON 4.1234622211652937e-02
24334#define GSL_ROOT6_FLT_EPSILON 7.0153878019335827e-02
24335#define GSL_LOG_FLT_EPSILON (-1.5942385152878742e+01)
24337#define GSL_FLT_MIN 1.1754943508222875e-38
24338#define GSL_SQRT_FLT_MIN 1.0842021724855044e-19
24339#define GSL_ROOT3_FLT_MIN 2.2737367544323241e-13
24340#define GSL_ROOT4_FLT_MIN 3.2927225399135965e-10
24341#define GSL_ROOT5_FLT_MIN 2.5944428542140822e-08
24342#define GSL_ROOT6_FLT_MIN 4.7683715820312542e-07
24343#define GSL_LOG_FLT_MIN (-8.7336544750553102e+01)
24345#define GSL_FLT_MAX 3.4028234663852886e+38
24346#define GSL_SQRT_FLT_MAX 1.8446743523953730e+19
24347#define GSL_ROOT3_FLT_MAX 6.9814635196223242e+12
24348#define GSL_ROOT4_FLT_MAX 4.2949672319999986e+09
24349#define GSL_ROOT5_FLT_MAX 5.0859007855960041e+07
24350#define GSL_ROOT6_FLT_MAX 2.6422459233807749e+06
24351#define GSL_LOG_FLT_MAX 8.8722839052068352e+01
24353#define GSL_SFLT_EPSILON 4.8828125000000000e-04
24354#define GSL_SQRT_SFLT_EPSILON 2.2097086912079612e-02
24355#define GSL_ROOT3_SFLT_EPSILON 7.8745065618429588e-02
24356#define GSL_ROOT4_SFLT_EPSILON 1.4865088937534013e-01
24357#define GSL_ROOT5_SFLT_EPSILON 2.1763764082403100e-01
24358#define GSL_ROOT6_SFLT_EPSILON 2.8061551207734325e-01
24359#define GSL_LOG_SFLT_EPSILON (-7.6246189861593985e+00)
24365#define GSL_MACH_EPS GSL_DBL_EPSILON
24384#define GSL_SQRT_MACH_EPS 3.2e-08
24385#define GSL_ROOT3_MACH_EPS 1.0e-05
24386#define GSL_ROOT4_MACH_EPS 0.000178
24387#define GSL_ROOT5_MACH_EPS 0.00100
24388#define GSL_ROOT6_MACH_EPS 0.00316
24389#define GSL_LOG_MACH_EPS (-34.54)
24417#ifndef __GSL_PRECISION_H__
24418#define __GSL_PRECISION_H__
24439#ifndef __GSL_TYPES_H__
24440#define __GSL_TYPES_H__
24447# define GSL_VAR extern __declspec(dllexport)
24449# define GSL_VAR extern __declspec(dllimport)
24452# define GSL_VAR extern
24455# define GSL_VAR extern
24471typedef unsigned int gsl_prec_t;
24478#define _GSL_PREC_T_NUM 3
24485GSL_VAR
const double gsl_prec_eps[];
24486GSL_VAR
const double gsl_prec_sqrt_eps[];
24487GSL_VAR
const double gsl_prec_root3_eps[];
24488GSL_VAR
const double gsl_prec_root4_eps[];
24489GSL_VAR
const double gsl_prec_root5_eps[];
24490GSL_VAR
const double gsl_prec_root6_eps[];
24518#ifndef __GSL_NAN_H__
24519#define __GSL_NAN_H__
24522# define GSL_POSINF INFINITY
24523# define GSL_NEGINF (-INFINITY)
24524#elif defined(HUGE_VAL)
24525# define GSL_POSINF HUGE_VAL
24526# define GSL_NEGINF (-HUGE_VAL)
24528# define GSL_POSINF (gsl_posinf())
24529# define GSL_NEGINF (gsl_neginf())
24533# define GSL_NAN NAN
24534#elif defined(INFINITY)
24535# define GSL_NAN (INFINITY/INFINITY)
24537# define GSL_NAN (gsl_nan())
24540#define GSL_POSZERO (+0.0)
24541#define GSL_NEGZERO (-0.0)
24566#ifndef __GSL_POW_INT_H__
24567#define __GSL_POW_INT_H__
24588#ifndef __GSL_INLINE_H__
24589#define __GSL_INLINE_H__
24618# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
24619# define INLINE_DECL inline
24620# define INLINE_FUN inline
24622# define INLINE_DECL
24623# define INLINE_FUN extern inline
24626# define INLINE_DECL
24633#define GSL_RANGE_COND(x) (x)
24642INLINE_DECL
double gsl_pow_2(
const double x);
24643INLINE_DECL
double gsl_pow_3(
const double x);
24644INLINE_DECL
double gsl_pow_4(
const double x);
24645INLINE_DECL
double gsl_pow_5(
const double x);
24646INLINE_DECL
double gsl_pow_6(
const double x);
24647INLINE_DECL
double gsl_pow_7(
const double x);
24648INLINE_DECL
double gsl_pow_8(
const double x);
24649INLINE_DECL
double gsl_pow_9(
const double x);
24652INLINE_FUN
double gsl_pow_2(
const double x) {
return x*x; }
24653INLINE_FUN
double gsl_pow_3(
const double x) {
return x*x*x; }
24654INLINE_FUN
double gsl_pow_4(
const double x) {
double x2 = x*x;
return x2*x2; }
24655INLINE_FUN
double gsl_pow_5(
const double x) {
double x2 = x*x;
return x2*x2*x; }
24656INLINE_FUN
double gsl_pow_6(
const double x) {
double x2 = x*x;
return x2*x2*x2; }
24657INLINE_FUN
double gsl_pow_7(
const double x) {
double x3 = x*x*x;
return x3*x3*x; }
24658INLINE_FUN
double gsl_pow_8(
const double x) {
double x2 = x*x;
double x4 = x2*x2;
return x4*x4; }
24659INLINE_FUN
double gsl_pow_9(
const double x) {
double x3 = x*x*x;
return x3*x3*x3; }
24662double gsl_pow_int(
double x,
int n);
24663double gsl_pow_uint(
double x,
unsigned int n);
24690#ifndef __GSL_MINMAX_H__
24691#define __GSL_MINMAX_H__
24712#ifndef __GSL_INLINE_H__
24713#define __GSL_INLINE_H__
24742# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
24743# define INLINE_DECL inline
24744# define INLINE_FUN inline
24746# define INLINE_DECL
24747# define INLINE_FUN extern inline
24750# define INLINE_DECL
24757#define GSL_RANGE_COND(x) (x)
24769#define GSL_MAX(a,b) ((a) > (b) ? (a) : (b))
24770#define GSL_MIN(a,b) ((a) < (b) ? (a) : (b))
24773double gsl_max (
double a,
double b);
24774double gsl_min (
double a,
double b);
24779INLINE_FUN
int GSL_MAX_INT (
int a,
int b);
24780INLINE_FUN
int GSL_MIN_INT (
int a,
int b);
24781INLINE_FUN
double GSL_MAX_DBL (
double a,
double b);
24782INLINE_FUN
double GSL_MIN_DBL (
double a,
double b);
24783INLINE_FUN
long double GSL_MAX_LDBL (
long double a,
long double b);
24784INLINE_FUN
long double GSL_MIN_LDBL (
long double a,
long double b);
24787GSL_MAX_INT (
int a,
int b)
24789 return GSL_MAX (a, b);
24793GSL_MIN_INT (
int a,
int b)
24795 return GSL_MIN (a, b);
24799GSL_MAX_DBL (
double a,
double b)
24801 return GSL_MAX (a, b);
24805GSL_MIN_DBL (
double a,
double b)
24807 return GSL_MIN (a, b);
24810INLINE_FUN
long double
24811GSL_MAX_LDBL (
long double a,
long double b)
24813 return GSL_MAX (a, b);
24816INLINE_FUN
long double
24817GSL_MIN_LDBL (
long double a,
long double b)
24819 return GSL_MIN (a, b);
24822#define GSL_MAX_INT(a,b) GSL_MAX(a,b)
24823#define GSL_MIN_INT(a,b) GSL_MIN(a,b)
24824#define GSL_MAX_DBL(a,b) GSL_MAX(a,b)
24825#define GSL_MIN_DBL(a,b) GSL_MIN(a,b)
24826#define GSL_MAX_LDBL(a,b) GSL_MAX(a,b)
24827#define GSL_MIN_LDBL(a,b) GSL_MIN(a,b)
24836#define M_E 2.71828182845904523536028747135
24840#define M_LOG2E 1.44269504088896340735992468100
24844#define M_LOG10E 0.43429448190325182765112891892
24848#define M_SQRT2 1.41421356237309504880168872421
24852#define M_SQRT1_2 0.70710678118654752440084436210
24857#define M_SQRT3 1.73205080756887729352744634151
24861#define M_PI 3.14159265358979323846264338328
24865#define M_PI_2 1.57079632679489661923132169164
24869#define M_PI_4 0.78539816339744830961566084582
24873#define M_SQRTPI 1.77245385090551602729816748334
24877#define M_2_SQRTPI 1.12837916709551257389615890312
24881#define M_1_PI 0.31830988618379067153776752675
24885#define M_2_PI 0.63661977236758134307553505349
24889#define M_LN10 2.30258509299404568401799145468
24893#define M_LN2 0.69314718055994530941723212146
24897#define M_LNPI 1.14472988584940017414342735135
24901#define M_EULER 0.57721566490153286060651209008
24910#define GSL_IS_ODD(n) ((n) & 1)
24911#define GSL_IS_EVEN(n) (!(GSL_IS_ODD(n)))
24912#define GSL_SIGN(x) ((x) >= 0.0 ? 1 : -1)
24915#define GSL_IS_REAL(x) (gsl_finite(x))
24921 double (* function) (
double x,
void * params);
24927#define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params)
24933 double (* f) (
double x,
void * params);
24934 double (* df) (
double x,
void * params);
24935 void (* fdf) (
double x,
void * params,
double * f,
double * df);
24941#define GSL_FN_FDF_EVAL_F(FDF,x) (*((FDF)->f))(x,(FDF)->params)
24942#define GSL_FN_FDF_EVAL_DF(FDF,x) (*((FDF)->df))(x,(FDF)->params)
24943#define GSL_FN_FDF_EVAL_F_DF(FDF,x,y,dy) (*((FDF)->fdf))(x,(FDF)->params,(y),(dy))
24950 int (* function) (
double x,
double y[],
void * params);
24956#define GSL_FN_VEC_EVAL(F,x,y) (*((F)->function))(x,y,(F)->params)
24983#ifndef __GSL_ERRNO_H__
24984#define __GSL_ERRNO_H__
25008#ifndef __GSL_TYPES_H__
25009#define __GSL_TYPES_H__
25016# define GSL_VAR extern __declspec(dllexport)
25018# define GSL_VAR extern __declspec(dllimport)
25021# define GSL_VAR extern
25024# define GSL_VAR extern
25074void gsl_error (
const char * reason,
const char * file,
int line,
25077void gsl_stream_printf (
const char *label,
const char *file,
25078 int line,
const char *reason);
25080typedef void gsl_error_handler_t (
const char * reason,
const char * file,
25081 int line,
int gsl_errno);
25083gsl_error_handler_t *
25084gsl_set_error_handler (gsl_error_handler_t * new_handler);
25088#define GSL_ERROR(reason, gsl_errno) \
25090 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
25091 return gsl_errno ; \
25096#define GSL_ERROR_VAL(reason, gsl_errno, value) \
25098 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
25105#define GSL_ERROR_VOID(reason, gsl_errno) \
25107 gsl_error (reason, __FILE__, __LINE__, gsl_errno) ; \
25113#define GSL_ERROR_NULL(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, 0)
25129#define GSL_ERROR_SELECT_2(a,b) ((a) != GSL_SUCCESS ? (a) : ((b) != GSL_SUCCESS ? (b) : GSL_SUCCESS))
25130#define GSL_ERROR_SELECT_3(a,b,c) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_2(b,c))
25131#define GSL_ERROR_SELECT_4(a,b,c,d) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_3(b,c,d))
25132#define GSL_ERROR_SELECT_5(a,b,c,d,e) ((a) != GSL_SUCCESS ? (a) : GSL_ERROR_SELECT_4(b,c,d,e))
25134#define GSL_STATUS_UPDATE(sp, s) do { if ((s) != GSL_SUCCESS) *(sp) = (s);} while(0)
25163#ifndef __GSL_SF_EXP_H__
25164#define __GSL_SF_EXP_H__
25187#ifndef __GSL_SF_RESULT_H__
25188#define __GSL_SF_RESULT_H__
25200#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
25211int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
25241#ifndef __GSL_PRECISION_H__
25242#define __GSL_PRECISION_H__
25263#ifndef __GSL_TYPES_H__
25264#define __GSL_TYPES_H__
25271# define GSL_VAR extern __declspec(dllexport)
25273# define GSL_VAR extern __declspec(dllimport)
25276# define GSL_VAR extern
25279# define GSL_VAR extern
25295typedef unsigned int gsl_prec_t;
25302#define _GSL_PREC_T_NUM 3
25309GSL_VAR
const double gsl_prec_eps[];
25310GSL_VAR
const double gsl_prec_sqrt_eps[];
25311GSL_VAR
const double gsl_prec_root3_eps[];
25312GSL_VAR
const double gsl_prec_root4_eps[];
25313GSL_VAR
const double gsl_prec_root5_eps[];
25314GSL_VAR
const double gsl_prec_root6_eps[];
25331int gsl_sf_exp_e(
const double x, gsl_sf_result * result);
25332double gsl_sf_exp(
const double x);
25339int gsl_sf_exp_e10_e(
const double x, gsl_sf_result_e10 * result);
25346int gsl_sf_exp_mult_e(
const double x,
const double y, gsl_sf_result * result);
25347double gsl_sf_exp_mult(
const double x,
const double y);
25354int gsl_sf_exp_mult_e10_e(
const double x,
const double y, gsl_sf_result_e10 * result);
25361int gsl_sf_expm1_e(
const double x, gsl_sf_result * result);
25362double gsl_sf_expm1(
const double x);
25369int gsl_sf_exprel_e(
const double x, gsl_sf_result * result);
25370double gsl_sf_exprel(
const double x);
25377int gsl_sf_exprel_2_e(
double x, gsl_sf_result * result);
25378double gsl_sf_exprel_2(
const double x);
25388int gsl_sf_exprel_n_e(
const int n,
const double x, gsl_sf_result * result);
25389double gsl_sf_exprel_n(
const int n,
const double x);
25391int gsl_sf_exprel_n_CF_e(
const double n,
const double x, gsl_sf_result * result);
25396int gsl_sf_exp_err_e(
const double x,
const double dx, gsl_sf_result * result);
25400int gsl_sf_exp_err_e10_e(
const double x,
const double dx, gsl_sf_result_e10 * result);
25408int gsl_sf_exp_mult_err_e(
const double x,
const double dx,
const double y,
const double dy, gsl_sf_result * result);
25416int gsl_sf_exp_mult_err_e10_e(
const double x,
const double dx,
const double y,
const double dy, gsl_sf_result_e10 * result);
25445#ifndef __GSL_SF_PSI_H__
25446#define __GSL_SF_PSI_H__
25469#ifndef __GSL_SF_RESULT_H__
25470#define __GSL_SF_RESULT_H__
25482#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
25493int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
25517int gsl_sf_psi_int_e(
const int n, gsl_sf_result * result);
25518double gsl_sf_psi_int(
const int n);
25526int gsl_sf_psi_e(
const double x, gsl_sf_result * result);
25527double gsl_sf_psi(
const double x);
25534int gsl_sf_psi_1piy_e(
const double y, gsl_sf_result * result);
25535double gsl_sf_psi_1piy(
const double y);
25542int gsl_sf_complex_psi_e(
25545 gsl_sf_result * result_re,
25546 gsl_sf_result * result_im
25555int gsl_sf_psi_1_int_e(
const int n, gsl_sf_result * result);
25556double gsl_sf_psi_1_int(
const int n);
25564int gsl_sf_psi_1_e(
const double x, gsl_sf_result * result);
25565double gsl_sf_psi_1(
const double x);
25573int gsl_sf_psi_n_e(
const int n,
const double x, gsl_sf_result * result);
25574double gsl_sf_psi_n(
const int n,
const double x);
25604#ifndef __GSL_SF_AIRY_H__
25605#define __GSL_SF_AIRY_H__
25628#ifndef __GSL_MODE_H__
25629#define __GSL_MODE_H__
25650#ifndef __GSL_INLINE_H__
25651#define __GSL_INLINE_H__
25680# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
25681# define INLINE_DECL inline
25682# define INLINE_FUN inline
25684# define INLINE_DECL
25685# define INLINE_FUN extern inline
25688# define INLINE_DECL
25695#define GSL_RANGE_COND(x) (x)
25716typedef unsigned int gsl_mode_t;
25732#define GSL_PREC_DOUBLE 0
25733#define GSL_PREC_SINGLE 1
25734#define GSL_PREC_APPROX 2
25737INLINE_FUN
unsigned int GSL_MODE_PREC(gsl_mode_t mt);
25739INLINE_FUN
unsigned int
25740GSL_MODE_PREC(gsl_mode_t mt)
25741{
return (mt & (
unsigned int)7); }
25743#define GSL_MODE_PREC(mt) ((mt) & (unsigned int)7)
25749#define GSL_MODE_DEFAULT 0
25779#ifndef __GSL_SF_RESULT_H__
25780#define __GSL_SF_RESULT_H__
25792#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
25803int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
25820int gsl_sf_airy_Ai_e(
const double x,
const gsl_mode_t mode, gsl_sf_result * result);
25821double gsl_sf_airy_Ai(
const double x, gsl_mode_t mode);
25828int gsl_sf_airy_Bi_e(
const double x, gsl_mode_t mode, gsl_sf_result * result);
25829double gsl_sf_airy_Bi(
const double x, gsl_mode_t mode);
25838int gsl_sf_airy_Ai_scaled_e(
const double x, gsl_mode_t mode, gsl_sf_result * result);
25839double gsl_sf_airy_Ai_scaled(
const double x, gsl_mode_t mode);
25848int gsl_sf_airy_Bi_scaled_e(
const double x, gsl_mode_t mode, gsl_sf_result * result);
25849double gsl_sf_airy_Bi_scaled(
const double x, gsl_mode_t mode);
25856int gsl_sf_airy_Ai_deriv_e(
const double x, gsl_mode_t mode, gsl_sf_result * result);
25857double gsl_sf_airy_Ai_deriv(
const double x, gsl_mode_t mode);
25864int gsl_sf_airy_Bi_deriv_e(
const double x, gsl_mode_t mode, gsl_sf_result * result);
25865double gsl_sf_airy_Bi_deriv(
const double x, gsl_mode_t mode);
25874int gsl_sf_airy_Ai_deriv_scaled_e(
const double x, gsl_mode_t mode, gsl_sf_result * result);
25875double gsl_sf_airy_Ai_deriv_scaled(
const double x, gsl_mode_t mode);
25884int gsl_sf_airy_Bi_deriv_scaled_e(
const double x, gsl_mode_t mode, gsl_sf_result * result);
25885double gsl_sf_airy_Bi_deriv_scaled(
const double x, gsl_mode_t mode);
25890int gsl_sf_airy_zero_Ai_e(
unsigned int s, gsl_sf_result * result);
25891double gsl_sf_airy_zero_Ai(
unsigned int s);
25896int gsl_sf_airy_zero_Bi_e(
unsigned int s, gsl_sf_result * result);
25897double gsl_sf_airy_zero_Bi(
unsigned int s);
25902int gsl_sf_airy_zero_Ai_deriv_e(
unsigned int s, gsl_sf_result * result);
25903double gsl_sf_airy_zero_Ai_deriv(
unsigned int s);
25908int gsl_sf_airy_zero_Bi_deriv_e(
unsigned int s, gsl_sf_result * result);
25909double gsl_sf_airy_zero_Bi_deriv(
unsigned int s);
25939#ifndef __GSL_SF_POW_INT_H__
25940#define __GSL_SF_POW_INT_H__
25963#ifndef __GSL_SF_RESULT_H__
25964#define __GSL_SF_RESULT_H__
25976#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
25987int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
26003int gsl_sf_pow_int_e(
double x,
int n, gsl_sf_result * result);
26004double gsl_sf_pow_int(
const double x,
const int n);
26034#ifndef __GSL_SF_GAMMA_H__
26035#define __GSL_SF_GAMMA_H__
26058#ifndef __GSL_SF_RESULT_H__
26059#define __GSL_SF_RESULT_H__
26071#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
26082int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
26102int gsl_sf_lngamma_e(
double x, gsl_sf_result * result);
26103double gsl_sf_lngamma(
const double x);
26113int gsl_sf_lngamma_sgn_e(
double x, gsl_sf_result * result_lg,
double *sgn);
26121int gsl_sf_gamma_e(
const double x, gsl_sf_result * result);
26122double gsl_sf_gamma(
const double x);
26132int gsl_sf_gammastar_e(
const double x, gsl_sf_result * result);
26133double gsl_sf_gammastar(
const double x);
26141int gsl_sf_gammainv_e(
const double x, gsl_sf_result * result);
26142double gsl_sf_gammainv(
const double x);
26158int gsl_sf_lngamma_complex_e(
double zr,
double zi, gsl_sf_result * lnr, gsl_sf_result * arg);
26166int gsl_sf_taylorcoeff_e(
const int n,
const double x, gsl_sf_result * result);
26167double gsl_sf_taylorcoeff(
const int n,
const double x);
26174int gsl_sf_fact_e(
const unsigned int n, gsl_sf_result * result);
26175double gsl_sf_fact(
const unsigned int n);
26182int gsl_sf_doublefact_e(
const unsigned int n, gsl_sf_result * result);
26183double gsl_sf_doublefact(
const unsigned int n);
26191int gsl_sf_lnfact_e(
const unsigned int n, gsl_sf_result * result);
26192double gsl_sf_lnfact(
const unsigned int n);
26199int gsl_sf_lndoublefact_e(
const unsigned int n, gsl_sf_result * result);
26200double gsl_sf_lndoublefact(
const unsigned int n);
26207int gsl_sf_lnchoose_e(
unsigned int n,
unsigned int m, gsl_sf_result * result);
26208double gsl_sf_lnchoose(
unsigned int n,
unsigned int m);
26215int gsl_sf_choose_e(
unsigned int n,
unsigned int m, gsl_sf_result * result);
26216double gsl_sf_choose(
unsigned int n,
unsigned int m);
26227int gsl_sf_lnpoch_e(
const double a,
const double x, gsl_sf_result * result);
26228double gsl_sf_lnpoch(
const double a,
const double x);
26240int gsl_sf_lnpoch_sgn_e(
const double a,
const double x, gsl_sf_result * result,
double * sgn);
26250int gsl_sf_poch_e(
const double a,
const double x, gsl_sf_result * result);
26251double gsl_sf_poch(
const double a,
const double x);
26260int gsl_sf_pochrel_e(
const double a,
const double x, gsl_sf_result * result);
26261double gsl_sf_pochrel(
const double a,
const double x);
26274int gsl_sf_gamma_inc_Q_e(
const double a,
const double x, gsl_sf_result * result);
26275double gsl_sf_gamma_inc_Q(
const double a,
const double x);
26286int gsl_sf_gamma_inc_P_e(
const double a,
const double x, gsl_sf_result * result);
26287double gsl_sf_gamma_inc_P(
const double a,
const double x);
26299int gsl_sf_gamma_inc_e(
const double a,
const double x, gsl_sf_result * result);
26300double gsl_sf_gamma_inc(
const double a,
const double x);
26309int gsl_sf_lnbeta_e(
const double a,
const double b, gsl_sf_result * result);
26310double gsl_sf_lnbeta(
const double a,
const double b);
26312int gsl_sf_lnbeta_sgn_e(
const double x,
const double y, gsl_sf_result * result,
double * sgn);
26321int gsl_sf_beta_e(
const double a,
const double b, gsl_sf_result * result);
26322double gsl_sf_beta(
const double a,
const double b);
26331int gsl_sf_beta_inc_e(
const double a,
const double b,
const double x, gsl_sf_result * result);
26332double gsl_sf_beta_inc(
const double a,
const double b,
const double x);
26338#define GSL_SF_GAMMA_XMAX 171.0
26341#define GSL_SF_FACT_NMAX 170
26344#define GSL_SF_DOUBLEFACT_NMAX 297
26373#ifndef __GSL_SF_COULOMB_H__
26374#define __GSL_SF_COULOMB_H__
26397#ifndef __GSL_MODE_H__
26398#define __GSL_MODE_H__
26419#ifndef __GSL_INLINE_H__
26420#define __GSL_INLINE_H__
26449# if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
26450# define INLINE_DECL inline
26451# define INLINE_FUN inline
26453# define INLINE_DECL
26454# define INLINE_FUN extern inline
26457# define INLINE_DECL
26464#define GSL_RANGE_COND(x) (x)
26485typedef unsigned int gsl_mode_t;
26501#define GSL_PREC_DOUBLE 0
26502#define GSL_PREC_SINGLE 1
26503#define GSL_PREC_APPROX 2
26506INLINE_FUN
unsigned int GSL_MODE_PREC(gsl_mode_t mt);
26508INLINE_FUN
unsigned int
26509GSL_MODE_PREC(gsl_mode_t mt)
26510{
return (mt & (
unsigned int)7); }
26512#define GSL_MODE_PREC(mt) ((mt) & (unsigned int)7)
26518#define GSL_MODE_DEFAULT 0
26548#ifndef __GSL_SF_RESULT_H__
26549#define __GSL_SF_RESULT_H__
26561#define GSL_SF_RESULT_SET(r,v,e) do { (r)->val=(v); (r)->err=(e); } while(0)
26572int gsl_sf_result_smash_e(
const gsl_sf_result_e10 * re, gsl_sf_result * r);
26589int gsl_sf_hydrogenicR_1_e(
const double Z,
const double r, gsl_sf_result * result);
26590double gsl_sf_hydrogenicR_1(
const double Z,
const double r);
26596int gsl_sf_hydrogenicR_e(
const int n,
const int l,
const double Z,
const double r, gsl_sf_result * result);
26597double gsl_sf_hydrogenicR(
const int n,
const int l,
const double Z,
const double r);
26619gsl_sf_coulomb_wave_FG_e(
const double eta,
const double x,
26620 const double lam_F,
26622 gsl_sf_result * F, gsl_sf_result * Fp,
26623 gsl_sf_result * G, gsl_sf_result * Gp,
26624 double * exp_F,
double * exp_G);
26628int gsl_sf_coulomb_wave_FG_array(
double lam_min,
int kmax,
26629 double eta,
double x,
26630 double * fc_array,
double * gc_array,
26631 double * F_exponent,
26632 double * G_exponent
26654CLeta(
double L,
double eta, gsl_sf_result * result)
26659 double arg_val, arg_err;
26661 if(fabs(eta/(L+1.0)) < GSL_DBL_EPSILON) {
26662 gsl_sf_lngamma_e(L+1.0, &ln1);
26666 gsl_sf_lngamma_complex_e(L+1.0, eta, &ln1, &p1);
26669 gsl_sf_lngamma_e(2.0*(L+1.0), &ln2);
26670 if(L < -1.0) sgn = -sgn;
26672 arg_val = L*M_LN2 - 0.5*eta*M_PI + ln1.val - ln2.val;
26673 arg_err = ln1.err + ln2.err;
26674 arg_err += GSL_DBL_EPSILON * (fabs(L*M_LN2) + fabs(0.5*eta*M_PI));
26675 return gsl_sf_exp_err_e(arg_val, arg_err, result);
26700coulomb_Phi_series(
const double lam,
const double eta,
const double x,
26701 double * result,
double * result_star)
26707 double Akm1 = eta/(lam+1.0);
26711 double sum = Akm2 + Akm1*x;
26712 double sump = (lam+1.0)*Akm2 + (lam+2.0)*Akm1*x;
26713 double prev_abs_del = fabs(Akm1*x);
26714 double prev_abs_del_p = (lam+2.0) * prev_abs_del;
26716 for(k=2; k<kmax; k++) {
26722 Ak = (2.0*eta*Akm1 - Akm2)/(k*(2.0*lam + 1.0 + k));
26726 del_p = (k+lam+1.0)*del;
26730 abs_del = fabs(del);
26731 abs_del_p = fabs(del_p);
26733 if( abs_del/(fabs(sum)+abs_del) < GSL_DBL_EPSILON
26734 && prev_abs_del/(fabs(sum)+prev_abs_del) < GSL_DBL_EPSILON
26735 && abs_del_p/(fabs(sump)+abs_del_p) < GSL_DBL_EPSILON
26736 && prev_abs_del_p/(fabs(sump)+prev_abs_del_p) < GSL_DBL_EPSILON
26744 prev_abs_del = abs_del;
26745 prev_abs_del_p = abs_del_p;
26752 *result_star = sump;
26755 GSL_ERROR (
"error", GSL_EMAXITER);
26758 return GSL_SUCCESS;
26772coulomb_connection(
const double lam,
const double eta,
26773 double * cos_phi,
double * sin_phi)
26775 if(eta > -GSL_LOG_DBL_MIN/2.0*M_PI-1.0) {
26778 GSL_ERROR (
"error", GSL_EUNDRFLW);
26780 else if(eta > -GSL_LOG_DBL_EPSILON/(4.0*M_PI)) {
26781 const double eps = 2.0 * exp(-2.0*M_PI*eta);
26782 const double tpl = tan(M_PI * lam);
26783 const double dth = eps * tpl / (tpl*tpl + 1.0);
26784 *cos_phi = -1.0 + 0.5 * dth*dth;
26786 return GSL_SUCCESS;
26789 double X = tanh(M_PI * eta) / tan(M_PI * lam);
26790 double phi = -atan(X) - (lam + 0.5) * M_PI;
26791 *cos_phi = cos(phi);
26792 *sin_phi = sin(phi);
26793 return GSL_SUCCESS;
26813coulomb_FG_series(
const double lam,
const double eta,
const double x,
26814 gsl_sf_result * F, gsl_sf_result * G)
26816 const int max_iter = 800;
26817 gsl_sf_result ClamA;
26818 gsl_sf_result ClamB;
26819 int stat_A = CLeta(lam, eta, &ClamA);
26820 int stat_B = CLeta(-lam-1.0, eta, &ClamB);
26821 const double tlp1 = 2.0*lam + 1.0;
26822 const double pow_x = pow(x, lam);
26823 double cos_phi_lam;
26824 double sin_phi_lam;
26826 double uA_mm2 = 1.0;
26827 double uA_mm1 = x*eta/(lam+1.0);
26829 double uB_mm2 = 1.0;
26830 double uB_mm1 = -x*eta/lam;
26832 double A_sum = uA_mm2 + uA_mm1;
26833 double B_sum = uB_mm2 + uB_mm1;
26834 double A_abs_del_prev = fabs(A_sum);
26835 double B_abs_del_prev = fabs(B_sum);
26836 gsl_sf_result FA, FB;
26839 int stat_conn = coulomb_connection(lam, eta, &cos_phi_lam, &sin_phi_lam);
26841 if(stat_conn == GSL_EUNDRFLW) {
26847 while(m < max_iter) {
26850 uA_m = x*(2.0*eta*uA_mm1 - x*uA_mm2)/(m*(m+tlp1));
26851 uB_m = x*(2.0*eta*uB_mm1 - x*uB_mm2)/(m*(m-tlp1));
26854 abs_dA = fabs(uA_m);
26855 abs_dB = fabs(uB_m);
26863 double max_abs_dA = GSL_MAX(abs_dA, A_abs_del_prev);
26864 double max_abs_dB = GSL_MAX(abs_dB, B_abs_del_prev);
26865 double abs_A = fabs(A_sum);
26866 double abs_B = fabs(B_sum);
26867 if( max_abs_dA/(max_abs_dA + abs_A) < 4.0*GSL_DBL_EPSILON
26868 && max_abs_dB/(max_abs_dB + abs_B) < 4.0*GSL_DBL_EPSILON
26871 A_abs_del_prev = abs_dA;
26872 B_abs_del_prev = abs_dB;
26880 FA.val = A_sum * ClamA.val * pow_x * x;
26881 FA.err = fabs(A_sum) * ClamA.err * pow_x * x + 2.0*GSL_DBL_EPSILON*fabs(FA.val);
26882 FB.val = B_sum * ClamB.val / pow_x;
26883 FB.err = fabs(B_sum) * ClamB.err / pow_x + 2.0*GSL_DBL_EPSILON*fabs(FB.val);
26888 G->val = (FA.val * cos_phi_lam - FB.val)/sin_phi_lam;
26889 G->err = (FA.err * fabs(cos_phi_lam) + FB.err)/fabs(sin_phi_lam);
26892 GSL_ERROR (
"error", GSL_EMAXITER);
26894 return GSL_ERROR_SELECT_2(stat_A, stat_B);
26904coulomb_FG0_series(
const double eta,
const double x,
26905 gsl_sf_result * F, gsl_sf_result * G)
26907 const int max_iter = 800;
26908 const double x2 = x*x;
26909 const double tex = 2.0*eta*x;
26911 int stat_CL = CLeta(0.0, eta, &C0);
26912 gsl_sf_result r1pie;
26913 int psi_stat = gsl_sf_psi_1piy_e(eta, &r1pie);
26914 double u_mm2 = 0.0;
26917 double v_mm2 = 1.0;
26918 double v_mm1 = tex*(2.0*M_EULER-1.0+r1pie.val);
26920 double u_sum = u_mm2 + u_mm1;
26921 double v_sum = v_mm2 + v_mm1;
26922 double u_abs_del_prev = fabs(u_sum);
26923 double v_abs_del_prev = fabs(v_sum);
26925 double u_sum_err = 2.0 * GSL_DBL_EPSILON * fabs(u_sum);
26926 double v_sum_err = 2.0 * GSL_DBL_EPSILON * fabs(v_sum);
26927 double ln2x = log(2.0*x);
26929 while(m < max_iter) {
26932 double m_mm1 = m*(m-1.0);
26933 u_m = (tex*u_mm1 - x2*u_mm2)/m_mm1;
26934 v_m = (tex*v_mm1 - x2*v_mm2 - 2.0*eta*(2*m-1)*u_m)/m_mm1;
26937 abs_du = fabs(u_m);
26938 abs_dv = fabs(v_m);
26939 u_sum_err += 2.0 * GSL_DBL_EPSILON * abs_du;
26940 v_sum_err += 2.0 * GSL_DBL_EPSILON * abs_dv;
26948 double max_abs_du = GSL_MAX(abs_du, u_abs_del_prev);
26949 double max_abs_dv = GSL_MAX(abs_dv, v_abs_del_prev);
26950 double abs_u = fabs(u_sum);
26951 double abs_v = fabs(v_sum);
26952 if( max_abs_du/(max_abs_du + abs_u) < 40.0*GSL_DBL_EPSILON
26953 && max_abs_dv/(max_abs_dv + abs_v) < 40.0*GSL_DBL_EPSILON
26956 u_abs_del_prev = abs_du;
26957 v_abs_del_prev = abs_dv;
26965 F->val = C0.val * u_sum;
26966 F->err = C0.err * fabs(u_sum);
26967 F->err += fabs(C0.val) * u_sum_err;
26968 F->err += 2.0 * GSL_DBL_EPSILON * fabs(F->val);
26970 G->val = (v_sum + 2.0*eta*u_sum * ln2x) / C0.val;
26971 G->err = (fabs(v_sum) + fabs(2.0*eta*u_sum * ln2x)) / fabs(C0.val) * fabs(C0.err/C0.val);
26972 G->err += (v_sum_err + fabs(2.0*eta*u_sum_err*ln2x)) / fabs(C0.val);
26973 G->err += 2.0 * GSL_DBL_EPSILON * fabs(G->val);
26976 GSL_ERROR (
"error", GSL_EMAXITER);
26978 return GSL_ERROR_SELECT_2(psi_stat, stat_CL);
26987coulomb_FGmhalf_series(
const double eta,
const double x,
26988 gsl_sf_result * F, gsl_sf_result * G)
26990 const int max_iter = 800;
26991 const double rx = sqrt(x);
26992 const double x2 = x*x;
26993 const double tex = 2.0*eta*x;
26994 gsl_sf_result Cmhalf;
26995 int stat_CL = CLeta(-0.5, eta, &Cmhalf);
26996 double u_mm2 = 1.0;
26997 double u_mm1 = tex * u_mm2;
26999 double v_mm2, v_mm1, v_m;
27000 double f_sum, g_sum;
27002 gsl_sf_result rpsi_1pe;
27003 gsl_sf_result rpsi_1p2e;
27006 gsl_sf_psi_1piy_e(eta, &rpsi_1pe);
27007 gsl_sf_psi_1piy_e(2.0*eta, &rpsi_1p2e);
27009 v_mm2 = 2.0*M_EULER - M_LN2 - rpsi_1pe.val + 2.0*rpsi_1p2e.val;
27010 v_mm1 = tex*(v_mm2 - 2.0*u_mm2);
27012 f_sum = u_mm2 + u_mm1;
27013 g_sum = v_mm2 + v_mm1;
27015 while(m < max_iter) {
27017 u_m = (tex*u_mm1 - x2*u_mm2)/m2;
27018 v_m = (tex*v_mm1 - x2*v_mm2 - 2.0*m*u_m)/m2;
27023 && (fabs(u_m/f_sum) + fabs(v_m/g_sum) < 10.0*GSL_DBL_EPSILON))
break;
27031 F->val = Cmhalf.val * rx * f_sum;
27032 F->err = Cmhalf.err * fabs(rx * f_sum) + 2.0*GSL_DBL_EPSILON*fabs(F->val);
27034 tmp1 = f_sum*log(x);
27035 G->val = -rx*(tmp1 + g_sum)/Cmhalf.val;
27036 G->err = fabs(rx)*(fabs(tmp1) + fabs(g_sum))/fabs(Cmhalf.val) * fabs(Cmhalf.err/Cmhalf.val);
27039 GSL_ERROR (
"error", GSL_EMAXITER);
27056coulomb_F_recur(
double lam_min,
int kmax,
27057 double eta,
double x,
27058 double F_lam_max,
double Fp_lam_max,
27059 double * F_lam_min,
double * Fp_lam_min
27062 double x_inv = 1.0/x;
27063 double fcl = F_lam_max;
27064 double fpl = Fp_lam_max;
27065 double lam_max = lam_min + kmax;
27066 double lam = lam_max;
27069 for(k=kmax-1; k>=0; k--) {
27070 double el = eta/lam;
27071 double rl = hypot(1.0, el);
27072 double sl = el + lam*x_inv;
27074 fc_lm1 = (fcl*sl + fpl)/rl;
27075 fpl = fc_lm1*sl - fcl*rl;
27082 return GSL_SUCCESS;
27095coulomb_G_recur(
const double lam_min,
const int kmax,
27096 const double eta,
const double x,
27097 const double G_lam_min,
const double Gp_lam_min,
27098 double * G_lam_max,
double * Gp_lam_max
27101 double x_inv = 1.0/x;
27102 double gcl = G_lam_min;
27103 double gpl = Gp_lam_min;
27104 double lam = lam_min + 1.0;
27107 for(k=1; k<=kmax; k++) {
27108 double el = eta/lam;
27109 double rl = hypot(1.0, el);
27110 double sl = el + lam*x_inv;
27111 double gcl1 = (sl*gcl - gpl)/rl;
27112 gpl = rl*gcl - sl*gcl1;
27119 return GSL_SUCCESS;
27131coulomb_CF1(
double lambda,
27132 double eta,
double x,
27138 const double CF1_small = 1.e-30;
27139 const double CF1_abort = 1.0e+05;
27140 const double CF1_acc = 2.0*GSL_DBL_EPSILON;
27141 const double x_inv = 1.0/x;
27142 const double px = lambda + 1.0 + CF1_abort;
27144 double pk = lambda + 1.0;
27145 double F = eta/pk + pk*x_inv;
27152 if(fabs(F) < CF1_small) F = CF1_small;
27157 double pk1 = pk + 1.0;
27158 double ek = eta / pk;
27159 double rk2 = 1.0 + ek*ek;
27160 double tk = (pk + pk1)*(x_inv + ek/pk1);
27163 if(fabs(C) < CF1_small) C = CF1_small;
27164 if(fabs(D) < CF1_small) D = CF1_small;
27170 *fcl_sign = - *fcl_sign;
27175 GSL_ERROR (
"error", GSL_ERUNAWAY);
27179 while(fabs(df-1.0) > CF1_acc);
27182 return GSL_SUCCESS;
27189old_coulomb_CF1(
const double lambda,
27190 double eta,
double x,
27195 const double CF1_abort = 1.e5;
27196 const double CF1_acc = 10.0*GSL_DBL_EPSILON;
27197 const double x_inv = 1.0/x;
27198 const double px = lambda + 1.0 + CF1_abort;
27200 double pk = lambda + 1.0;
27216 F = (ek + pk*x_inv)*fcl + (fcl - 1.0)*x_inv;
27218 if(fabs(eta*x + pk*pk1) > CF1_acc)
break;
27219 fcl = (1.0 + ek*ek)/(1.0 + eta*eta/(pk1*pk1));
27223 D = 1.0/((pk + pk1)*(x_inv + ek/pk1));
27224 df = -fcl*(1.0 + ek*ek)*D;
27226 if(fcl != 1.0) fcl = -1.0;
27227 if(D < 0.0) fcl = -fcl;
27236 tk = (pk + pk1)*(x_inv + ek/pk1);
27237 D = tk - D*(1.0+ek*ek);
27238 if(fabs(D) < sqrt(CF1_acc)) {
27241 printf(
"HELP............\n");
27249 df = df*(D*tk - 1.0);
27252 GSL_ERROR (
"error", GSL_ERUNAWAY);
27255 while(fabs(df) > fabs(F)*CF1_acc);
27259 return GSL_SUCCESS;
27271coulomb_CF2(
const double lambda,
const double eta,
const double x,
27272 double * result_P,
double * result_Q,
int * count
27275 int status = GSL_SUCCESS;
27277 const double CF2_acc = 4.0*GSL_DBL_EPSILON;
27278 const double CF2_abort = 2.0e+05;
27280 const double wi = 2.0*eta;
27281 const double x_inv = 1.0/x;
27282 const double e2mm1 = eta*eta + lambda*(lambda + 1.0);
27284 double ar = -e2mm1;
27287 double br = 2.0*(x - eta);
27290 double dr = br/(br*br + bi*bi);
27291 double di = -bi/(br*br + bi*bi);
27293 double dp = -x_inv*(ar*di + ai*dr);
27294 double dq = x_inv*(ar*dr - ai*di);
27300 double Q = 1.0 - eta*x_inv;
27311 D = ar*dr - ai*di + br;
27312 di = ai*dr + ar*di + bi;
27313 C = 1.0/(D*D + di*di);
27316 A = br*dr - bi*di - 1.;
27321 if(pk > CF2_abort) {
27322 status = GSL_ERUNAWAY;
27327 while(fabs(dp)+fabs(dq) > (fabs(P)+fabs(Q))*CF2_acc);
27329 if(Q < CF2_abort*GSL_DBL_EPSILON*fabs(P)) {
27330 status = GSL_ELOSS;
27358coulomb_jwkb(
const double lam,
const double eta,
const double x,
27359 gsl_sf_result * fjwkb, gsl_sf_result * gjwkb,
27362 const double llp1 = lam*(lam+1.0) + 6.0/35.0;
27363 const double llp1_eff = GSL_MAX(llp1, 0.0);
27364 const double rho_ghalf = sqrt(x*(2.0*eta - x) + llp1_eff);
27365 const double sinh_arg = sqrt(llp1_eff/(eta*eta+llp1_eff)) * rho_ghalf / x;
27366 const double sinh_inv = log(sinh_arg + hypot(1.0,sinh_arg));
27368 const double phi = fabs(rho_ghalf - eta*atan2(rho_ghalf,x-eta) - sqrt(llp1_eff) * sinh_inv);
27370 const double zeta_half = pow(3.0*phi/2.0, 1.0/3.0);
27371 const double prefactor = sqrt(M_PI*phi*x/(6.0 * rho_ghalf));
27373 double F = prefactor * 3.0/zeta_half;
27374 double G = prefactor * 3.0/zeta_half;
27378 const double airy_scale_exp = phi;
27381 gsl_sf_airy_Ai_scaled_e(zeta_half*zeta_half, GSL_MODE_DEFAULT, &ai);
27382 gsl_sf_airy_Bi_scaled_e(zeta_half*zeta_half, GSL_MODE_DEFAULT, &bi);
27385 F_exp = log(F) - airy_scale_exp;
27386 G_exp = log(G) + airy_scale_exp;
27388 if(G_exp >= GSL_LOG_DBL_MAX) {
27391 fjwkb->err = 1.0e-3 * fabs(F);
27392 gjwkb->err = 1.0e-3 * fabs(G);
27393 *exponent = airy_scale_exp;
27394 GSL_ERROR (
"error", GSL_EOVRFLW);
27397 fjwkb->val = exp(F_exp);
27398 gjwkb->val = exp(G_exp);
27399 fjwkb->err = 1.0e-3 * fabs(fjwkb->val);
27400 gjwkb->err = 1.0e-3 * fabs(gjwkb->val);
27402 return GSL_SUCCESS;
27419coulomb_AS_xlt2eta(
const double lam,
const double eta,
const double x,
27420 gsl_sf_result * f_AS, gsl_sf_result * g_AS,
27432gsl_sf_coulomb_wave_FG_e(
const double eta,
const double x,
27433 const double lam_F,
27435 gsl_sf_result * F, gsl_sf_result * Fp,
27436 gsl_sf_result * G, gsl_sf_result * Gp,
27437 double * exp_F,
double * exp_G)
27439 const double lam_G = lam_F - k_lam_G;
27441 if(x < 0.0 || lam_F <= -0.5 || lam_G <= -0.5) {
27442 GSL_SF_RESULT_SET(F, 0.0, 0.0);
27443 GSL_SF_RESULT_SET(Fp, 0.0, 0.0);
27444 GSL_SF_RESULT_SET(G, 0.0, 0.0);
27445 GSL_SF_RESULT_SET(Gp, 0.0, 0.0);
27448 GSL_ERROR (
"domain error", GSL_EDOM);
27450 else if(x == 0.0) {
27452 CLeta(0.0, eta, &C0);
27453 GSL_SF_RESULT_SET(F, 0.0, 0.0);
27454 GSL_SF_RESULT_SET(Fp, 0.0, 0.0);
27455 GSL_SF_RESULT_SET(G, 0.0, 0.0);
27456 GSL_SF_RESULT_SET(Gp, 0.0, 0.0);
27460 GSL_SF_RESULT_SET(Fp, C0.val, C0.err);
27463 GSL_SF_RESULT_SET(Gp, 1.0/C0.val, fabs(C0.err/C0.val)/fabs(C0.val));
27465 GSL_ERROR (
"domain error", GSL_EDOM);
27468 else if(x < 1.2 && 2.0*M_PI*eta < 0.9*(-GSL_LOG_DBL_MIN) && fabs(eta*x) < 10.0) {
27476 const double SMALL = GSL_SQRT_DBL_EPSILON;
27477 const int N = (int)(lam_F + 0.5);
27478 const int span = GSL_MAX(k_lam_G, N);
27479 const double lam_min = lam_F - N;
27480 double F_lam_F, Fp_lam_F;
27481 double G_lam_G = 0.0, Gp_lam_G = 0.0;
27482 double F_lam_F_err, Fp_lam_F_err;
27483 double Fp_over_F_lam_F;
27484 double F_sign_lam_F;
27485 double F_lam_min_unnorm, Fp_lam_min_unnorm;
27486 double Fp_over_F_lam_min;
27487 gsl_sf_result F_lam_min;
27488 gsl_sf_result G_lam_min, Gp_lam_min;
27491 double F_scale_frac_err;
27492 double F_unnorm_frac_err;
27496 int stat_CF1 = coulomb_CF1(lam_F, eta, x, &F_sign_lam_F, &Fp_over_F_lam_F, &CF1_count);
27504 Fp_lam_F = Fp_over_F_lam_F * F_lam_F;
27506 stat_Fr = coulomb_F_recur(lam_min, span, eta, x,
27508 &F_lam_min_unnorm, &Fp_lam_min_unnorm
27512 F_lam_min_unnorm = F_lam_F;
27513 Fp_lam_min_unnorm = Fp_lam_F;
27514 stat_Fr = GSL_SUCCESS;
27518 if(lam_min == -0.5) {
27519 stat_ser = coulomb_FGmhalf_series(eta, x, &F_lam_min, &G_lam_min);
27521 else if(lam_min == 0.0) {
27522 stat_ser = coulomb_FG0_series(eta, x, &F_lam_min, &G_lam_min);
27524 else if(lam_min == 0.5) {
27527 F->err = 2.0 * GSL_DBL_EPSILON * fabs(F->val);
27528 Fp->val = Fp_lam_F;
27529 Fp->err = 2.0 * GSL_DBL_EPSILON * fabs(Fp->val);
27531 G->err = 2.0 * GSL_DBL_EPSILON * fabs(G->val);
27532 Gp->val = Gp_lam_G;
27533 Gp->err = 2.0 * GSL_DBL_EPSILON * fabs(Gp->val);
27536 GSL_ERROR (
"error", GSL_ESANITY);
27539 stat_ser = coulomb_FG_series(lam_min, eta, x, &F_lam_min, &G_lam_min);
27543 Fp_over_F_lam_min = Fp_lam_min_unnorm / F_lam_min_unnorm;
27544 Gp_lam_min.val = Fp_over_F_lam_min*G_lam_min.val - 1.0/F_lam_min.val;
27545 Gp_lam_min.err = fabs(Fp_over_F_lam_min)*G_lam_min.err;
27546 Gp_lam_min.err += fabs(1.0/F_lam_min.val) * fabs(F_lam_min.err/F_lam_min.val);
27547 F_scale = F_lam_min.val / F_lam_min_unnorm;
27550 F_scale_frac_err = fabs(F_lam_min.err/F_lam_min.val);
27551 F_unnorm_frac_err = 2.0*GSL_DBL_EPSILON*(CF1_count+span+1);
27552 F_lam_F *= F_scale;
27553 F_lam_F_err = fabs(F_lam_F) * (F_unnorm_frac_err + F_scale_frac_err);
27554 Fp_lam_F *= F_scale;
27555 Fp_lam_F_err = fabs(Fp_lam_F) * (F_unnorm_frac_err + F_scale_frac_err);
27558 stat_Gr = coulomb_G_recur(lam_min, GSL_MAX(N-k_lam_G,0), eta, x,
27559 G_lam_min.val, Gp_lam_min.val,
27560 &G_lam_G, &Gp_lam_G
27564 F->err = F_lam_F_err;
27565 F->err += 2.0 * GSL_DBL_EPSILON * fabs(F_lam_F);
27567 Fp->val = Fp_lam_F;
27568 Fp->err = Fp_lam_F_err;
27569 Fp->err += 2.0 * GSL_DBL_EPSILON * fabs(Fp_lam_F);
27571 Gerr_frac = fabs(G_lam_min.err/G_lam_min.val) + fabs(Gp_lam_min.err/Gp_lam_min.val);
27574 G->err = Gerr_frac * fabs(G_lam_G);
27575 G->err += 2.0 * (CF1_count+1) * GSL_DBL_EPSILON * fabs(G->val);
27577 Gp->val = Gp_lam_G;
27578 Gp->err = Gerr_frac * fabs(Gp->val);
27579 Gp->err += 2.0 * (CF1_count+1) * GSL_DBL_EPSILON * fabs(Gp->val);
27584 return GSL_ERROR_SELECT_4(stat_ser, stat_CF1, stat_Fr, stat_Gr);
27586 else if(x < 2.0*eta) {
27591 gsl_sf_result F_lam_F, G_lam_F;
27592 gsl_sf_result F_lam_G, G_lam_G;
27593 double exp_lam_F, exp_lam_G;
27596 int stat_CF1_lam_F;
27597 [[maybe_unused]]
int stat_CF1_lam_G;
27599 double Fp_over_F_lam_F;
27600 double Fp_over_F_lam_G;
27601 double F_sign_lam_F;
27602 double F_sign_lam_G;
27604 stat_lam_F = coulomb_jwkb(lam_F, eta, x, &F_lam_F, &G_lam_F, &exp_lam_F);
27606 stat_lam_G = stat_lam_F;
27609 exp_lam_G = exp_lam_F;
27612 stat_lam_G = coulomb_jwkb(lam_G, eta, x, &F_lam_G, &G_lam_G, &exp_lam_G);
27615 stat_CF1_lam_F = coulomb_CF1(lam_F, eta, x, &F_sign_lam_F, &Fp_over_F_lam_F, &CF1_count);
27617 stat_CF1_lam_G = stat_CF1_lam_F;
27618 F_sign_lam_G = F_sign_lam_F;
27619 Fp_over_F_lam_G = Fp_over_F_lam_F;
27622 stat_CF1_lam_G = coulomb_CF1(lam_G, eta, x, &F_sign_lam_G, &Fp_over_F_lam_G, &CF1_count);
27625 F->val = F_lam_F.val;
27626 F->err = F_lam_F.err;
27628 G->val = G_lam_G.val;
27629 G->err = G_lam_G.err;
27631 Fp->val = Fp_over_F_lam_F * F_lam_F.val;
27632 Fp->err = fabs(Fp_over_F_lam_F) * F_lam_F.err;
27633 Fp->err += 2.0*GSL_DBL_EPSILON*fabs(Fp->val);
27635 Gp->val = Fp_over_F_lam_G * G_lam_G.val - 1.0/F_lam_G.val;
27636 Gp->err = fabs(Fp_over_F_lam_G) * G_lam_G.err;
27637 Gp->err += fabs(1.0/F_lam_G.val) * fabs(F_lam_G.err/F_lam_G.val);
27639 *exp_F = exp_lam_F;
27640 *exp_G = exp_lam_G;
27642 if(stat_lam_F == GSL_EOVRFLW || stat_lam_G == GSL_EOVRFLW) {
27643 GSL_ERROR (
"overflow", GSL_EOVRFLW);
27646 return GSL_ERROR_SELECT_2(stat_lam_F, stat_lam_G);
27659 const double SMALL = GSL_SQRT_DBL_EPSILON;
27660 const double C = sqrt(1.0 + 4.0*x*(x-2.0*eta));
27661 const int N = ceil(lam_F - C + 0.5);
27662 const double lam_0 = lam_F - GSL_MAX(N, 0);
27663 const double lam_min = GSL_MIN(lam_0, lam_G);
27664 double F_lam_F, Fp_lam_F;
27665 double G_lam_G, Gp_lam_G;
27666 double F_lam_min_unnorm, Fp_lam_min_unnorm;
27668 [[maybe_unused]]
double Fp_lam_min;
27669 double G_lam_min, Gp_lam_min;
27670 double Fp_over_F_lam_F;
27671 double Fp_over_F_lam_min;
27672 double F_sign_lam_F, F_sign_lam_min;
27673 double P_lam_min, Q_lam_min;
27680 int stat_CF1 = coulomb_CF1(lam_F, eta, x, &F_sign_lam_F, &Fp_over_F_lam_F, &CF1_count);
27688 double err_amplify;
27690 F_lam_F = F_sign_lam_F * SMALL;
27691 Fp_lam_F = Fp_over_F_lam_F * F_lam_F;
27694 F_recur_count = GSL_MAX(k_lam_G, N);
27695 stat_Fr = coulomb_F_recur(lam_min, F_recur_count, eta, x,
27697 &F_lam_min_unnorm, &Fp_lam_min_unnorm
27699 Fp_over_F_lam_min = Fp_lam_min_unnorm / F_lam_min_unnorm;
27702 stat_CF2 = coulomb_CF2(lam_min, eta, x, &P_lam_min, &Q_lam_min, &CF2_count);
27703 alpha = Fp_over_F_lam_min - P_lam_min;
27704 gamma = alpha/Q_lam_min;
27706 F_sign_lam_min = GSL_SIGN(F_lam_min_unnorm) ;
27708 F_lam_min = F_sign_lam_min / sqrt(alpha*alpha/Q_lam_min + Q_lam_min);
27709 Fp_lam_min = Fp_over_F_lam_min * F_lam_min;
27710 G_lam_min = gamma * F_lam_min;
27711 Gp_lam_min = (P_lam_min * gamma - Q_lam_min) * F_lam_min;
27714 F_scale = F_lam_min / F_lam_min_unnorm;
27715 F_lam_F *= F_scale;
27716 Fp_lam_F *= F_scale;
27719 G_recur_count = GSL_MAX(N-k_lam_G,0);
27720 stat_Gr = coulomb_G_recur(lam_min, G_recur_count, eta, x,
27721 G_lam_min, Gp_lam_min,
27722 &G_lam_G, &Gp_lam_G
27725 err_amplify = CF1_count + CF2_count + F_recur_count + G_recur_count + 1;
27728 F->err = 8.0*err_amplify*GSL_DBL_EPSILON * fabs(F->val);
27730 Fp->val = Fp_lam_F;
27731 Fp->err = 8.0*err_amplify*GSL_DBL_EPSILON * fabs(Fp->val);
27734 G->err = 8.0*err_amplify*GSL_DBL_EPSILON * fabs(G->val);
27736 Gp->val = Gp_lam_G;
27737 Gp->err = 8.0*err_amplify*GSL_DBL_EPSILON * fabs(Gp->val);
27742 return GSL_ERROR_SELECT_4(stat_CF1, stat_CF2, stat_Fr, stat_Gr);
27748gsl_sf_coulomb_wave_FG_array(
double lam_min,
int kmax,
27749 double eta,
double x,
27750 double * fc_array,
double * gc_array,
27751 double * F_exp,
double * G_exp)
27753 const double x_inv = 1.0/x;
27754 const double lam_max = lam_min + kmax;
27755 gsl_sf_result F, Fp;
27756 gsl_sf_result G, Gp;
27758 int stat_FG = gsl_sf_coulomb_wave_FG_e(eta, x, lam_max, kmax,
27759 &F, &Fp, &G, &Gp, F_exp, G_exp);
27761 double fcl = F.val;
27762 double fpl = Fp.val;
27763 double lam = lam_max;
27768 fc_array[kmax] = F.val;
27770 for(k=kmax-1; k>=0; k--) {
27771 double el = eta/lam;
27772 double rl = hypot(1.0, el);
27773 double sl = el + lam*x_inv;
27775 fc_lm1 = (fcl*sl + fpl)/rl;
27776 fc_array[k] = fc_lm1;
27777 fpl = fc_lm1*sl - fcl*rl;
27784 lam = lam_min + 1.0;
27786 gc_array[0] = G.val;
27788 for(k=1; k<=kmax; k++) {
27789 double el = eta/lam;
27790 double rl = hypot(1.0, el);
27791 double sl = el + lam*x_inv;
27792 double gcl1 = (sl*gcl - gpl)/rl;
27793 gc_array[k] = gcl1;
27794 gpl = rl*gcl - sl*gcl1;
27838#define LogRootPi_ 0.57236494292470008706
27841static double erfc8_sum(
double x)
27846 static double P[] = {
27847 2.97886562639399288862,
27848 7.409740605964741794425,
27849 6.1602098531096305440906,
27850 5.019049726784267463450058,
27851 1.275366644729965952479585264,
27852 0.5641895835477550741253201704
27854 static double Q[] = {
27855 3.3690752069827527677,
27856 9.608965327192787870698,
27857 17.08144074746600431571095,
27858 12.0489519278551290360340491,
27859 9.396034016235054150430579648,
27860 2.260528520767326969591866945,
27863 double num=0.0, den=0.0;
27867 for (i=4; i>=0; --i) {
27868 num = x*num + P[i];
27871 for (i=5; i>=0; --i) {
27872 den = x*den + Q[i];
27879static double erfc8(
double x)
27889static double erfcasympsum(
double x)
27894 for (i=1; i<5; ++i) {
27896 coef *= -(2*i+1)/(i*(4*x*x*x*x));
27913static double erfc_xlt1_data[20] = {
27914 1.06073416421769980345174155056,
27915 -0.42582445804381043569204735291,
27916 0.04955262679620434040357683080,
27917 0.00449293488768382749558001242,
27918 -0.00129194104658496953494224761,
27919 -0.00001836389292149396270416979,
27920 0.00002211114704099526291538556,
27921 -5.23337485234257134673693179020e-7,
27922 -2.78184788833537885382530989578e-7,
27923 1.41158092748813114560316684249e-8,
27924 2.72571296330561699984539141865e-9,
27925 -2.06343904872070629406401492476e-10,
27926 -2.14273991996785367924201401812e-11,
27927 2.22990255539358204580285098119e-12,
27928 1.36250074650698280575807934155e-13,
27929 -1.95144010922293091898995913038e-14,
27930 -6.85627169231704599442806370690e-16,
27931 1.44506492869699938239521607493e-16,
27932 2.45935306460536488037576200030e-18,
27933 -9.29599561220523396007359328540e-19
27935static cheb_series erfc_xlt1_cs = {
27944static double erfc_x15_data[25] = {
27945 0.44045832024338111077637466616,
27946 -0.143958836762168335790826895326,
27947 0.044786499817939267247056666937,
27948 -0.013343124200271211203618353102,
27949 0.003824682739750469767692372556,
27950 -0.001058699227195126547306482530,
27951 0.000283859419210073742736310108,
27952 -0.000073906170662206760483959432,
27953 0.000018725312521489179015872934,
27954 -4.62530981164919445131297264430e-6,
27955 1.11558657244432857487884006422e-6,
27956 -2.63098662650834130067808832725e-7,
27957 6.07462122724551777372119408710e-8,
27958 -1.37460865539865444777251011793e-8,
27959 3.05157051905475145520096717210e-9,
27960 -6.65174789720310713757307724790e-10,
27961 1.42483346273207784489792999706e-10,
27962 -3.00141127395323902092018744545e-11,
27963 6.22171792645348091472914001250e-12,
27964 -1.26994639225668496876152836555e-12,
27965 2.55385883033257575402681845385e-13,
27966 -5.06258237507038698392265499770e-14,
27967 9.89705409478327321641264227110e-15,
27968 -1.90685978789192181051961024995e-15,
27969 3.50826648032737849245113757340e-16
27971static cheb_series erfc_x15_cs = {
27980static double erfc_x510_data[20] = {
27981 1.11684990123545698684297865808,
27982 0.003736240359381998520654927536,
27983 -0.000916623948045470238763619870,
27984 0.000199094325044940833965078819,
27985 -0.000040276384918650072591781859,
27986 7.76515264697061049477127605790e-6,
27987 -1.44464794206689070402099225301e-6,
27988 2.61311930343463958393485241947e-7,
27989 -4.61833026634844152345304095560e-8,
27990 8.00253111512943601598732144340e-9,
27991 -1.36291114862793031395712122089e-9,
27992 2.28570483090160869607683087722e-10,
27993 -3.78022521563251805044056974560e-11,
27994 6.17253683874528285729910462130e-12,
27995 -9.96019290955316888445830597430e-13,
27996 1.58953143706980770269506726000e-13,
27997 -2.51045971047162509999527428316e-14,
27998 3.92607828989125810013581287560e-15,
27999 -6.07970619384160374392535453420e-16,
28000 9.12600607264794717315507477670e-17
28002static cheb_series erfc_x510_cs = {
28012erfc_asymptotic(
double x)
28014 return exp(-x*x)/x * erfcasympsum(x) / M_SQRTPI;
28018log_erfc_asymptotic(
double x)
28020 return log(erfcasympsum(x)/x) - x*x - LogRootPi_;
28027int gsl_sf_erfc_e(
double x, gsl_sf_result * result)
28029 const double ax = fabs(x);
28030 double e_val, e_err;
28035 double t = 2.0*ax - 1.0;
28037 cheb_eval_e(&erfc_xlt1_cs, t, &c);
28041 else if(ax <= 5.0) {
28042 double ex2 = exp(-x*x);
28043 double t = 0.5*(ax-3.0);
28045 cheb_eval_e(&erfc_x15_cs, t, &c);
28046 e_val = ex2 * c.val;
28047 e_err = ex2 * (c.err + 2.0*fabs(x)*GSL_DBL_EPSILON);
28049 else if(ax < 10.0) {
28050 double exterm = exp(-x*x) / ax;
28051 double t = (2.0*ax - 15.0)/5.0;
28053 cheb_eval_e(&erfc_x510_cs, t, &c);
28054 e_val = exterm * c.val;
28055 e_err = exterm * (c.err + 2.0*fabs(x)*GSL_DBL_EPSILON + GSL_DBL_EPSILON);
28059 e_err = (x*x + 1.0) * GSL_DBL_EPSILON * fabs(e_val);
28063 result->val = 2.0 - e_val;
28064 result->err = e_err;
28065 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
28068 result->val = e_val;
28069 result->err = e_err;
28070 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
28073 return GSL_SUCCESS;
28111gamma_inc_D(
const double a,
const double x, gsl_sf_result * result)
28116 gsl_sf_lngamma_e(a+1.0, &lg);
28117 lnr = a * log(x) - x - lg.val;
28118 result->val = exp(lnr);
28119 result->err = 2.0 * GSL_DBL_EPSILON * (fabs(lnr) + 1.0) * fabs(result->val);
28120 return GSL_SUCCESS;
28123 gsl_sf_result gstar;
28124 gsl_sf_result ln_term;
28128 double ln_u = log(u);
28129 ln_term.val = ln_u - u + 1.0;
28130 ln_term.err = (fabs(ln_u) + fabs(u) + 1.0) * GSL_DBL_EPSILON;
28132 double mu = (x-a)/a;
28133 gsl_sf_log_1plusx_mx_e(mu, &ln_term);
28136 ln_term.err += GSL_DBL_EPSILON * fabs(mu);
28138 gsl_sf_gammastar_e(a, &gstar);
28139 term1 = exp(a*ln_term.val)/sqrt(2.0*M_PI*a);
28140 result->val = term1/gstar.val;
28141 result->err = 2.0 * GSL_DBL_EPSILON * (fabs(a*ln_term.val) + 1.0) * fabs(result->val);
28143 result->err += fabs(a) * ln_term.err * fabs(result->val);
28144 result->err += gstar.err/fabs(gstar.val) * fabs(result->val);
28145 return GSL_SUCCESS;
28155gamma_inc_P_series(
const double a,
const double x, gsl_sf_result * result)
28157 const int nmax = 10000;
28160 int stat_D = gamma_inc_D(a, x, &D);
28168 if (x > 0.995 * a && a > 1e5) {
28169 gsl_sf_result cf_res;
28170 int status = gsl_sf_exprel_n_CF_e(a, x, &cf_res);
28171 result->val = D.val * cf_res.val;
28172 result->err = fabs(D.val * cf_res.err) + fabs(D.err * cf_res.val);
28178 if (x > (a + nmax)) {
28179 GSL_ERROR (
"gamma_inc_P_series x>>a exceeds range", GSL_EMAXITER);
28192 int nlow = (x > a) ? (x - a): 0;
28194 for(n=1; n < nlow; n++) {
28201 for ( ; n<nmax; n++) {
28204 if(fabs(term/sum) < GSL_DBL_EPSILON)
break;
28209 double tnp1 = (x/(a+n)) * term;
28210 remainder = tnp1 / (1.0 - x/(a + n + 1.0));
28213 result->val = D.val * sum;
28214 result->err = D.err * fabs(sum) + fabs(D.val * remainder);
28215 result->err += (1.0 + n) * GSL_DBL_EPSILON * fabs(result->val);
28217 if(n == nmax && fabs(remainder/sum) > GSL_SQRT_DBL_EPSILON)
28218 GSL_ERROR (
"gamma_inc_P_series failed to converge", GSL_EMAXITER);
28229gamma_inc_Q_large_x(
const double a,
const double x, gsl_sf_result * result)
28231 const int nmax = 5000;
28234 const int stat_D = gamma_inc_D(a, x, &D);
28240 for(n=1; n<nmax; n++) {
28242 if(fabs(term/last) > 1.0)
break;
28243 if(fabs(term/sum) < GSL_DBL_EPSILON)
break;
28248 result->val = D.val * (a/x) * sum;
28249 result->err = D.err * fabs((a/x) * sum);
28250 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
28253 GSL_ERROR (
"error in large x asymptotic", GSL_EMAXITER);
28264gamma_inc_Q_asymp_unif(
const double a,
const double x, gsl_sf_result * result)
28266 const double rta = sqrt(a);
28267 const double eps = (x-a)/a;
28269 gsl_sf_result ln_term;
28270 const int stat_ln = gsl_sf_log_1plusx_mx_e(eps, &ln_term);
28271 const double eta = GSL_SIGN(eps) * sqrt(-2.0*ln_term.val);
28273 gsl_sf_result erfc;
28282 gsl_sf_erfc_e(eta*rta/M_SQRT2, &erfc);
28284 if(fabs(eps) < GSL_ROOT5_DBL_EPSILON) {
28285 c0 = -1.0/3.0 + eps*(1.0/12.0 - eps*(23.0/540.0 - eps*(353.0/12960.0 - eps*589.0/30240.0)));
28286 c1 = -1.0/540.0 - eps/288.0;
28289 const double rt_term = sqrt(-2.0 * ln_term.val/(eps*eps));
28290 const double lam = x/a;
28291 c0 = (1.0 - 1.0/rt_term)/eps;
28292 c1 = -(eta*eta*eta * (lam*lam + 10.0*lam + 1.0) - 12.0 * eps*eps*eps) / (12.0 * eta*eta*eta*eps*eps*eps);
28295 R = exp(-0.5*a*eta*eta)/(M_SQRT2*M_SQRTPI*rta) * (c0 + c1/a);
28297 result->val = 0.5 * erfc.val + R;
28298 result->err = GSL_DBL_EPSILON * fabs(R * 0.5 * a*eta*eta) + 0.5 * erfc.err;
28299 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
28319gamma_inc_F_CF(
const double a,
const double x, gsl_sf_result * result)
28321 const int nmax = 5000;
28322 const double small = gsl_pow_3 (GSL_DBL_EPSILON);
28325 double Cn = 1.0 / small;
28331 for ( n = 2 ; n < nmax ; n++ )
28341 Dn = 1.0 + an * Dn;
28342 if ( fabs(Dn) < small )
28345 if ( fabs(Cn) < small )
28350 if(fabs(delta-1.0) < GSL_DBL_EPSILON)
break;
28354 result->err = 2.0*GSL_DBL_EPSILON * fabs(hn);
28355 result->err += GSL_DBL_EPSILON * (2.0 + 0.5*n) * fabs(result->val);
28358 GSL_ERROR (
"error in CF for F(a,x)", GSL_EMAXITER);
28360 return GSL_SUCCESS;
28393gamma_inc_Q_CF(
const double a,
const double x, gsl_sf_result * result)
28397 const int stat_D = gamma_inc_D(a, x, &D);
28398 const int stat_F = gamma_inc_F_CF(a, x, &F);
28400 result->val = D.val * (a/x) * F.val;
28401 result->err = D.err * fabs((a/x) * F.val) + fabs(D.val * a/x * F.err);
28403 return GSL_ERROR_SELECT_2(stat_F, stat_D);
28411gamma_inc_Q_series(
const double a,
const double x, gsl_sf_result * result)
28421 const double pg21 = -2.404113806319188570799476;
28422 const double lnx = log(x);
28423 const double el = M_EULER+lnx;
28424 const double c1 = -el;
28425 const double c2 = M_PI*M_PI/12.0 - 0.5*el*el;
28426 const double c3 = el*(M_PI*M_PI/12.0 - el*el/6.0) + pg21/6.0;
28427 const double c4 = -0.04166666666666666667
28428 * (-1.758243446661483480 + lnx)
28429 * (-0.764428657272716373 + lnx)
28430 * ( 0.723980571623507657 + lnx)
28431 * ( 4.107554191916823640 + lnx);
28432 const double c5 = -0.0083333333333333333
28433 * (-2.06563396085715900 + lnx)
28434 * (-1.28459889470864700 + lnx)
28435 * (-0.27583535756454143 + lnx)
28436 * ( 1.33677371336239618 + lnx)
28437 * ( 5.17537282427561550 + lnx);
28438 const double c6 = -0.0013888888888888889
28439 * (-2.30814336454783200 + lnx)
28440 * (-1.65846557706987300 + lnx)
28441 * (-0.88768082560020400 + lnx)
28442 * ( 0.17043847751371778 + lnx)
28443 * ( 1.92135970115863890 + lnx)
28444 * ( 6.22578557795474900 + lnx);
28445 const double c7 = -0.00019841269841269841
28446 * (-2.5078657901291800 + lnx)
28447 * (-1.9478900888958200 + lnx)
28448 * (-1.3194837322612730 + lnx)
28449 * (-0.5281322700249279 + lnx)
28450 * ( 0.5913834939078759 + lnx)
28451 * ( 2.4876819633378140 + lnx)
28452 * ( 7.2648160783762400 + lnx);
28453 const double c8 = -0.00002480158730158730
28454 * (-2.677341544966400 + lnx)
28455 * (-2.182810448271700 + lnx)
28456 * (-1.649350342277400 + lnx)
28457 * (-1.014099048290790 + lnx)
28458 * (-0.191366955370652 + lnx)
28459 * ( 0.995403817918724 + lnx)
28460 * ( 3.041323283529310 + lnx)
28461 * ( 8.295966556941250 + lnx);
28462 const double c9 = -2.75573192239859e-6
28463 * (-2.8243487670469080 + lnx)
28464 * (-2.3798494322701120 + lnx)
28465 * (-1.9143674728689960 + lnx)
28466 * (-1.3814529102920370 + lnx)
28467 * (-0.7294312810261694 + lnx)
28468 * ( 0.1299079285269565 + lnx)
28469 * ( 1.3873333251885240 + lnx)
28470 * ( 3.5857258865210760 + lnx)
28471 * ( 9.3214237073814600 + lnx);
28472 const double c10 = -2.75573192239859e-7
28473 * (-2.9540329644556910 + lnx)
28474 * (-2.5491366926991850 + lnx)
28475 * (-2.1348279229279880 + lnx)
28476 * (-1.6741881076349450 + lnx)
28477 * (-1.1325949616098420 + lnx)
28478 * (-0.4590034650618494 + lnx)
28479 * ( 0.4399352987435699 + lnx)
28480 * ( 1.7702236517651670 + lnx)
28481 * ( 4.1231539047474080 + lnx)
28482 * ( 10.342627908148680 + lnx);
28484 term1 = a*(c1+a*(c2+a*(c3+a*(c4+a*(c5+a*(c6+a*(c7+a*(c8+a*(c9+a*c10)))))))));
28490 const int nmax = 5000;
28495 for(n=1; n<nmax; n++) {
28497 sum += (a+1.0)/(a+n+1.0)*t;
28498 if(fabs(t/sum) < GSL_DBL_EPSILON)
break;
28502 stat_sum = GSL_EMAXITER;
28504 stat_sum = GSL_SUCCESS;
28507 term2 = (1.0 - term1) * a/(a+1.0) * x * sum;
28508 result->val = term1 + term2;
28509 result->err = GSL_DBL_EPSILON * (fabs(term1) + 2.0*fabs(term2));
28510 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
28518gsl_sf_gamma_inc_Q_e(
const double a,
const double x, gsl_sf_result * result)
28520 if(a < 0.0 || x < 0.0) {
28521 DOMAIN_ERROR(result);
28523 else if(x == 0.0) {
28526 return GSL_SUCCESS;
28532 return GSL_SUCCESS;
28534 else if(x <= 0.5*a) {
28539 int stat_P = gamma_inc_P_series(a, x, &P);
28540 result->val = 1.0 - P.val;
28541 result->err = P.err;
28542 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
28545 else if(a >= 1.0e+06 && (x-a)*(x-a) < a) {
28549 return gamma_inc_Q_asymp_unif(a, x, result);
28551 else if(a < 0.2 && x < 5.0) {
28557 return gamma_inc_Q_series(a, x, result);
28570 return gamma_inc_Q_CF(a, x, result);
28573 return gamma_inc_Q_large_x(a, x, result);
28577 if(x > a - sqrt(a)) {
28584 return gamma_inc_Q_CF(a, x, result);
28588 int stat_P = gamma_inc_P_series(a, x, &P);
28589 result->val = 1.0 - P.val;
28590 result->err = P.err;
28591 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
28599gsl_sf_gamma_inc_P_e(
const double a,
const double x, gsl_sf_result * result)
28601 if(a <= 0.0 || x < 0.0) {
28602 DOMAIN_ERROR(result);
28604 else if(x == 0.0) {
28607 return GSL_SUCCESS;
28609 else if(x < 20.0 || x < 0.5*a) {
28612 return gamma_inc_P_series(a, x, result);
28614 else if(a > 1.0e+06 && (x-a)*(x-a) < a) {
28620 int stat_Q = gamma_inc_Q_asymp_unif(a, x, &Q);
28621 result->val = 1.0 - Q.val;
28622 result->err = Q.err;
28623 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
28633 stat_Q = gamma_inc_Q_CF(a, x, &Q);
28636 stat_Q = gamma_inc_Q_large_x(a, x, &Q);
28638 result->val = 1.0 - Q.val;
28639 result->err = Q.err;
28640 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
28644 if((x-a)*(x-a) < a) {
28650 int stat_Q = gamma_inc_Q_CF(a, x, &Q);
28651 result->val = 1.0 - Q.val;
28652 result->err = Q.err;
28653 result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val);
28657 return gamma_inc_P_series(a, x, result);
28666double gsl_sf_gamma_inc_P(
const double a,
const double x)
28668 EVAL_RESULT(gsl_sf_gamma_inc_P_e(a, x, &result));
28671double gsl_sf_gamma_inc_Q(
const double a,
const double x)
28673 EVAL_RESULT(gsl_sf_gamma_inc_Q_e(a, x, &result));
28704gsl_cdf_gamma_Q (
const double x,
const double a,
const double b)
28714 if (a <= 0.0 || b <= 0.0)
28716 GSL_ERROR_VAL (
"unsupported parameter domain in built-in gsl_cdf_gamma_Q"
28717 " (require a > 0 and b > 0)", GSL_EDOM, GSL_NAN);
28729 Q = 1 - gsl_sf_gamma_inc_P (a, y);
28733 Q = gsl_sf_gamma_inc_Q (a, y);
28768gsl_cdf_chisq_Q (
const double x,
const double nu)
28775 GSL_ERROR_VAL (
"unsupported parameter domain in built-in gsl_cdf_chisq_Q"
28776 " (require nu > 0)", GSL_EDOM, GSL_NAN);
28779 return gsl_cdf_gamma_Q (x, nu / 2, 2.0);