Extended maintenance of Ruby versions 1.8.7 and 1.9.2 ended on July 31, 2014. Read more
The Math
module contains module functions for basic
trigonometric and transcendental functions. See class Float
for a list of constants that define Ruby's floating point accuracy.
Computes the arc cosine of x. Returns 0..PI.
static VALUE math_acos(obj, x) VALUE obj, x; { double d; Need_Float(x); errno = 0; d = acos(RFLOAT(x)->value); domain_check(d, "acos"); return rb_float_new(d); }
Computes the inverse hyperbolic cosine of x.
static VALUE math_acosh(obj, x) VALUE obj, x; { double d; Need_Float(x); errno = 0; d = acosh(RFLOAT(x)->value); domain_check(d, "acosh"); return rb_float_new(d); }
Computes the arc sine of x. Returns -{PI/2} .. {PI/2}.
static VALUE math_asin(obj, x) VALUE obj, x; { double d; Need_Float(x); errno = 0; d = asin(RFLOAT(x)->value); domain_check(d, "asin"); return rb_float_new(d); }
Computes the inverse hyperbolic sine of x.
static VALUE math_asinh(obj, x) VALUE obj, x; { Need_Float(x); return rb_float_new(asinh(RFLOAT(x)->value)); }
Computes the arc tangent of x. Returns -{PI/2} .. {PI/2}.
static VALUE math_atan(obj, x) VALUE obj, x; { Need_Float(x); return rb_float_new(atan(RFLOAT(x)->value)); }
Computes the arc tangent given y and x. Returns -PI..PI.
static VALUE math_atan2(obj, y, x) VALUE obj, x, y; { Need_Float2(y, x); return rb_float_new(atan2(RFLOAT(y)->value, RFLOAT(x)->value)); }
Computes the inverse hyperbolic tangent of x.
static VALUE math_atanh(obj, x) VALUE obj, x; { double d; Need_Float(x); errno = 0; d = atanh(RFLOAT(x)->value); domain_check(d, "atanh"); return rb_float_new(d); }
Computes the cosine of x (expressed in radians). Returns -1..1.
static VALUE math_cos(obj, x) VALUE obj, x; { Need_Float(x); return rb_float_new(cos(RFLOAT(x)->value)); }
Computes the hyperbolic cosine of x (expressed in radians).
static VALUE math_cosh(obj, x) VALUE obj, x; { Need_Float(x); return rb_float_new(cosh(RFLOAT(x)->value)); }
Calculates the error function of x.
static VALUE math_erf(obj, x) VALUE obj, x; { Need_Float(x); return rb_float_new(erf(RFLOAT(x)->value)); }
Calculates the complementary error function of x.
static VALUE math_erfc(obj, x) VALUE obj, x; { Need_Float(x); return rb_float_new(erfc(RFLOAT(x)->value)); }
Returns e**x.
static VALUE math_exp(obj, x) VALUE obj, x; { Need_Float(x); return rb_float_new(exp(RFLOAT(x)->value)); }
Returns a two-element array containing the normalized fraction (a
Float
) and exponent (a Fixnum
) of
numeric.
fraction, exponent = Math.frexp(1234) #=> [0.6025390625, 11] fraction * 2**exponent #=> 1234.0
static VALUE math_frexp(obj, x) VALUE obj, x; { double d; int exp; Need_Float(x); d = frexp(RFLOAT(x)->value, &exp); return rb_assoc_new(rb_float_new(d), INT2NUM(exp)); }
Returns sqrt(x**2 + y**2), the hypotenuse of a right-angled triangle with sides x and y.
Math.hypot(3, 4) #=> 5.0
static VALUE math_hypot(obj, x, y) VALUE obj, x, y; { Need_Float2(x, y); return rb_float_new(hypot(RFLOAT(x)->value, RFLOAT(y)->value)); }
Returns the value of flt*(2**int).
fraction, exponent = Math.frexp(1234) Math.ldexp(fraction, exponent) #=> 1234.0
static VALUE math_ldexp(obj, x, n) VALUE obj, x, n; { Need_Float(x); return rb_float_new(ldexp(RFLOAT(x)->value, NUM2INT(n))); }
Returns the natural logarithm of numeric.
static VALUE math_log(obj, x) VALUE obj, x; { double d; Need_Float(x); errno = 0; d = log(RFLOAT(x)->value); domain_check(d, "log"); return rb_float_new(d); }
Returns the base 10 logarithm of numeric.
static VALUE math_log10(obj, x) VALUE obj, x; { double d; Need_Float(x); errno = 0; d = log10(RFLOAT(x)->value); domain_check(d, "log10"); return rb_float_new(d); }
Computes the sine of x (expressed in radians). Returns -1..1.
static VALUE math_sin(obj, x) VALUE obj, x; { Need_Float(x); return rb_float_new(sin(RFLOAT(x)->value)); }
Computes the hyperbolic sine of x (expressed in radians).
static VALUE math_sinh(obj, x) VALUE obj, x; { Need_Float(x); return rb_float_new(sinh(RFLOAT(x)->value)); }
Returns the non-negative square root of numeric.
static VALUE math_sqrt(obj, x) VALUE obj, x; { double d; Need_Float(x); errno = 0; d = sqrt(RFLOAT(x)->value); domain_check(d, "sqrt"); return rb_float_new(d); }