18 #if defined(HAVE_SIGNBIT) && defined(__GNUC__) && defined(__sun) && \ 23 #define RB_BIGNUM_TYPE_P(x) RB_TYPE_P((x), T_BIGNUM) 28 #define Need_Float(x) do {if (!RB_TYPE_P(x, T_FLOAT)) {(x) = rb_to_float(x);}} while(0) 29 #define Need_Float2(x,y) do {\ 34 #define domain_error(msg) \ 35 rb_raise(rb_eMathDomainError, "Numerical argument is out of domain - " #msg) 65 # define M_PI 3.14159265358979323846 71 if (dx == 0.0 && dy == 0.0) {
226 return (exp(x) + exp(-x)) / 2;
255 return (exp(x) - exp(-x)) / 2;
410 #if defined __CYGWIN__ 411 # include <cygwin/version.h> 412 # if CYGWIN_VERSION_DLL_MAJOR < 1005 413 # define nan(x) nan() 415 # define log(x) ((x) < 0.0 ? nan("") : log(x)) 416 # define log10(x) ((x) < 0.0 ? nan("") : log10(x)) 466 d += numbits * log(2);
479 return log10(x)/log10(2.0);
482 extern double log2(
double);
568 d += numbits * log10(2);
796 static const double fact_table[] = {
816 121645100408832000.0,
817 2432902008176640000.0,
818 51090942171709440000.0,
819 1124000727777607680000.0,
825 double intpart, fracpart;
830 fracpart = modf(
d0, &intpart);
831 if (fracpart == 0.0) {
834 intpart - 1 < (
double)
numberof(fact_table)) {
835 return DBL2NUM(fact_table[(
int)intpart - 1]);
877 rb_math_##n(VALUE x)\ 879 return math_##n(rb_mMath, x);\ 884 rb_math_##n(VALUE x, VALUE y)\ 886 return math_##n(rb_mMath, x, y);\
static VALUE math_asinh(VALUE obj, VALUE x)
RUBY_EXTERN double cbrt(double)
RUBY_EXTERN int signbit(double x)
static VALUE math_atan2(VALUE obj, VALUE y, VALUE x)
static VALUE math_atanh(VALUE obj, VALUE x)
VALUE rb_eMathDomainError
VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super)
Defines a class under the namespace of outer.
RUBY_EXTERN double tgamma(double)
#define RB_BIGNUM_TYPE_P(x)
static VALUE math_ldexp(VALUE obj, VALUE x, VALUE n)
RUBY_EXTERN double lgamma_r(double, int *)
static VALUE math_exp(VALUE obj, VALUE x)
VALUE rb_math_log(int argc, VALUE *argv)
#define RBIGNUM_POSITIVE_P(b)
static VALUE math_log10(VALUE obj, VALUE x)
void rb_define_const(VALUE, const char *, VALUE)
RUBY_SYMBOL_EXPORT_BEGIN RUBY_EXTERN double acosh(double)
RUBY_EXTERN double erfc(double)
static VALUE math_tanh(VALUE obj, VALUE x)
RUBY_EXTERN int isinf(double)
void rb_define_module_function(VALUE module, const char *name, VALUE(*func)(ANYARGS), int argc)
Defines a module function for module.
static VALUE math_sqrt(VALUE obj, VALUE x)
RUBY_EXTERN double atanh(double)
#define Need_Float2(x, y)
RUBY_EXTERN double hypot(double, double)
int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)
static VALUE math_erf(VALUE obj, VALUE x)
VALUE rb_assoc_new(VALUE car, VALUE cdr)
static VALUE math_log(int argc, VALUE *argv)
#define domain_error(msg)
RUBY_EXTERN double asinh(double)
static VALUE math_cos(VALUE obj, VALUE x)
static VALUE math_acos(VALUE obj, VALUE x)
static VALUE math_atan(VALUE obj, VALUE x)
static VALUE math_erfc(VALUE obj, VALUE x)
static VALUE math_acosh(VALUE obj, VALUE x)
static VALUE math_cbrt(VALUE obj, VALUE x)
static VALUE math_log2(VALUE obj, VALUE x)
static VALUE math_frexp(VALUE obj, VALUE x)
size_t rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret)
static VALUE math_sin(VALUE obj, VALUE x)
static VALUE math_asin(VALUE obj, VALUE x)
VALUE rb_big_rshift(VALUE x, VALUE y)
static VALUE math_tan(VALUE obj, VALUE x)
VALUE rb_define_module(const char *name)
static VALUE math_gamma(VALUE obj, VALUE x)
static VALUE math_hypot(VALUE obj, VALUE x, VALUE y)
RUBY_EXTERN double erf(double)
static VALUE math_cosh(VALUE obj, VALUE x)
static VALUE math_lgamma(VALUE obj, VALUE x)
static VALUE math_sinh(VALUE obj, VALUE x)