module Math
Extended Modules
Defined in:
big/big_float.crbig/big_int.cr
big/big_rational.cr
complex.cr
math/math.cr
Constant Summary
-
E =
LibM.exp_f64(1.0) -
Euler's number (e).
-
LOG10 =
LibM.log_f64(10.0) -
LOG2 =
LibM.log_f64(2.0) -
PI =
3.14159265358979323846 -
Archimedes' constant (Ï€).
-
TAU =
6.283185307179586476925 -
The full circle constant (Ï„), equal to 2Ï€.
Instance Method Summary
-
#acos(value : Float32) : Float32
Calculates the arc cosine ofvalue.
-
#acos(value : Float64) : Float64
Calculates the arc cosine ofvalue.
-
#acos(value)
Calculates the arc cosine ofvalue.
-
#acosh(value : Float32) : Float32
Calculates the inverse hyperbolic cosine ofvalue.
-
#acosh(value : Float64) : Float64
Calculates the inverse hyperbolic cosine ofvalue.
-
#acosh(value)
Calculates the inverse hyperbolic cosine ofvalue.
-
#asin(value : Float32) : Float32
Calculates the arc sine ofvalue.
-
#asin(value : Float64) : Float64
Calculates the arc sine ofvalue.
-
#asin(value)
Calculates the arc sine ofvalue.
-
#asinh(value : Float32) : Float32
Calculates the inverse hyperbolic sine ofvalue.
-
#asinh(value : Float64) : Float64
Calculates the inverse hyperbolic sine ofvalue.
-
#asinh(value)
Calculates the inverse hyperbolic sine ofvalue.
-
#atan(value : Float32) : Float32
Calculates the arc tangent ofvalue.
-
#atan(value : Float64) : Float64
Calculates the arc tangent ofvalue.
-
#atan(value)
Calculates the arc tangent ofvalue.
-
#atan2(y : Float32, x : Float32) : Float32
Calculates the two-argument arc tangent of the ray from (0, 0) to (x,y).
-
#atan2(y : Float64, x : Float64) : Float64
Calculates the two-argument arc tangent of the ray from (0, 0) to (x,y).
-
#atan2(y, x) : Float64
Calculates the two-argument arc tangent of the ray from (0, 0) to (x,y).
-
#atanh(value : Float32) : Float32
Calculates the inverse hyperbolic tangent ofvalue.
-
#atanh(value : Float64) : Float64
Calculates the inverse hyperbolic tangent ofvalue.
-
#atanh(value)
Calculates the inverse hyperbolic tangent ofvalue.
-
#besselj(order : Int32, value : Float32)
Calculates the cylindrical Bessel function of the first kind ofvalue for the givenorder.
-
#besselj(order : Int32, value : Float64) : Float64
Calculates the cylindrical Bessel function of the first kind ofvalue for the givenorder.
-
#besselj(order, value)
Calculates the cylindrical Bessel function of the first kind ofvalue for the givenorder.
-
#besselj0(value : Float32)
Calculates the cylindrical Bessel function of the first kind ofvalue for order 0.
-
#besselj0(value : Float64) : Float64
Calculates the cylindrical Bessel function of the first kind ofvalue for order 0.
-
#besselj0(value)
Calculates the cylindrical Bessel function of the first kind ofvalue for order 0.
-
#besselj1(value : Float32)
Calculates the cylindrical Bessel function of the first kind ofvalue for order 1.
-
#besselj1(value : Float64) : Float64
Calculates the cylindrical Bessel function of the first kind ofvalue for order 1.
-
#besselj1(value)
Calculates the cylindrical Bessel function of the first kind ofvalue for order 1.
-
#bessely(order : Int32, value : Float32)
Calculates the cylindrical Bessel function of the second kind ofvalue for the givenorder.
-
#bessely(order : Int32, value : Float64) : Float64
Calculates the cylindrical Bessel function of the second kind ofvalue for the givenorder.
-
#bessely(order, value)
Calculates the cylindrical Bessel function of the second kind ofvalue for the givenorder.
-
#bessely0(value : Float32)
Calculates the cylindrical Bessel function of the second kind ofvalue for order 0.
-
#bessely0(value : Float64) : Float64
Calculates the cylindrical Bessel function of the second kind ofvalue for order 0.
-
#bessely0(value)
Calculates the cylindrical Bessel function of the second kind ofvalue for order 0.
-
#bessely1(value : Float32)
Calculates the cylindrical Bessel function of the second kind ofvalue for order 1.
-
#bessely1(value : Float64) : Float64
Calculates the cylindrical Bessel function of the second kind ofvalue for order 1.
-
#bessely1(value)
Calculates the cylindrical Bessel function of the second kind ofvalue for order 1.
-
#cbrt(value : Float32) : Float32
Calculates the cubic root ofvalue.
-
#cbrt(value : Float64) : Float64
Calculates the cubic root ofvalue.
-
#cbrt(value)
Calculates the cubic root ofvalue.
-
#copysign(value1 : Float32, value2 : Float32)
Returns the floating-point value with the magnitude ofvalue1 and the sign ofvalue2.
-
#copysign(value1 : Float64, value2 : Float64) : Float64
Returns the floating-point value with the magnitude ofvalue1 and the sign ofvalue2.
-
#copysign(value1 : BigFloat, value2 : BigFloat) : BigFloat
Returns the floating-point value with the magnitude ofvalue1 and the sign ofvalue2.
-
#copysign(value1, value2)
Returns the floating-point value with the magnitude ofvalue1 and the sign ofvalue2.
-
#cos(value : Float32) : Float32
Calculates the cosine ofvalue, measured in radians.
-
#cos(value : Float64) : Float64
Calculates the cosine ofvalue, measured in radians.
-
#cos(value)
Calculates the cosine ofvalue, measured in radians.
-
#cosh(value : Float32) : Float32
Calculates the hyperbolic cosine ofvalue.
-
#cosh(value : Float64) : Float64
Calculates the hyperbolic cosine ofvalue.
-
#cosh(value)
Calculates the hyperbolic cosine ofvalue.
-
#erf(value : Float32) : Float32
Calculates the error function ofvalue.
-
#erf(value : Float64) : Float64
Calculates the error function ofvalue.
-
#erf(value)
Calculates the error function ofvalue.
-
#erfc(value : Float32) : Float32
Calculates 1 minus the error function ofvalue.
-
#erfc(value : Float64) : Float64
Calculates 1 minus the error function ofvalue.
-
#erfc(value)
Calculates 1 minus the error function ofvalue.
-
#exp(value : Float32) : Float32
Calculates the exponential ofvalue.
-
#exp(value : Float64) : Float64
Calculates the exponential ofvalue.
-
#exp(value : Complex) : Complex
Calculates the exponential ofvalue.
-
#exp(value)
Calculates the exponential ofvalue.
-
#exp2(value : Float32) : Float32
Calculates 2 raised to the powervalue.
-
#exp2(value : Float64) : Float64
Calculates 2 raised to the powervalue.
-
#exp2(value)
Calculates 2 raised to the powervalue.
-
#expm1(value : Float32) : Float32
Calculates the exponential ofvalue, minus 1.
-
#expm1(value : Float64) : Float64
Calculates the exponential ofvalue, minus 1.
-
#expm1(value)
Calculates the exponential ofvalue, minus 1.
-
#fma(value1 : Float32, value2 : Float32, value3 : Float32) : Float32
Fused multiply-add; returns
value1 * value2 + value3, performing a single rounding instead of two. -
#fma(value1 : Float64, value2 : Float64, value3 : Float64) : Float64
Fused multiply-add; returns
value1 * value2 + value3, performing a single rounding instead of two. -
#fma(value1, value2, value3)
Fused multiply-add; returns
value1 * value2 + value3, performing a single rounding instead of two. -
#frexp(value : Float32) : Tuple(Float32, Int32)
Decomposes the given floating-pointvalue into a normalized fraction and an integral power of two.
-
#frexp(value : Float64) : Tuple(Float64, Int32)
Decomposes the given floating-pointvalue into a normalized fraction and an integral power of two.
-
#frexp(value : BigFloat) : Tuple(BigFloat, Int64)
Decomposes the given floating-pointvalue into a normalized fraction and an integral power of two.
-
#frexp(value)
Decomposes the given floating-pointvalue into a normalized fraction and an integral power of two.
-
#gamma(value : Float32) : Float32
Calculates the gamma function ofvalue.
-
#gamma(value : Float64) : Float64
Calculates the gamma function ofvalue.
-
#gamma(value) : Float64
Calculates the gamma function ofvalue.
-
#hypot(value1 : Float32, value2 : Float32) : Float32
Calculates the length of the hypotenuse from (0, 0) to (value1,value2).
-
#hypot(value1 : Float64, value2 : Float64) : Float64
Calculates the length of the hypotenuse from (0, 0) to (value1,value2).
-
#hypot(value1, value2)
Calculates the length of the hypotenuse from (0, 0) to (value1,value2).
-
#ilogb(value : Float32) : Int32
Returns the unbiased base 2 exponent of the given floating-pointvalue.
-
#ilogb(value : Float64) : Int32
Returns the unbiased base 2 exponent of the given floating-pointvalue.
-
#ilogb(value : BigFloat) : Int64
Returns the unbiased base 2 exponent of the given floating-pointvalue.
-
#ilogb(value)
Returns the unbiased base 2 exponent of the given floating-pointvalue.
-
#isqrt(value : Int::Primitive)
Calculates the integer square root ofvalue.
-
#isqrt(value : BigInt) : BigInt
Calculates the integer square root ofvalue.
-
#ldexp(value : Float32, exp : Int32) : Float32
Multiplies the given floating-pointvalue by 2 raised to the powerexp.
-
#ldexp(value : Float64, exp : Int32) : Float64
Multiplies the given floating-pointvalue by 2 raised to the powerexp.
-
#ldexp(value : BigFloat, exp : Int) : BigFloat
Multiplies the given floating-pointvalue by 2 raised to the powerexp.
-
#ldexp(value, exp)
Multiplies the given floating-pointvalue by 2 raised to the powerexp.
-
#lgamma(value : Float32)
Calculates the logarithmic gamma ofvalue.
-
#lgamma(value : Float64) : Float64
Calculates the logarithmic gamma ofvalue.
-
#lgamma(value) : Float64
Calculates the logarithmic gamma ofvalue.
-
#log(value, base)
Calculates the logarithm ofvalue to the givenbase.
-
#log(value : Float32) : Float32
Calculates the natural logarithm ofvalue.
-
#log(value : Float64) : Float64
Calculates the natural logarithm ofvalue.
-
#log(value : Complex) : Complex
Calculates the natural logarithm ofvalue.
-
#log(value) : Float64
Calculates the natural logarithm ofvalue.
-
#log10(value : Float32) : Float32
Calculates the logarithm ofvalue to base 10.
-
#log10(value : Float64) : Float64
Calculates the logarithm ofvalue to base 10.
-
#log10(value : Complex) : Complex
Calculates the logarithm ofvalue to base 10.
-
#log10(value)
Calculates the logarithm ofvalue to base 10.
-
#log1p(value : Float32) : Float32
Calculates the natural logarithm of 1 plusvalue.
-
#log1p(value : Float64) : Float64
Calculates the natural logarithm of 1 plusvalue.
-
#log1p(value)
Calculates the natural logarithm of 1 plusvalue.
-
#log2(value : Float32) : Float32
Calculates the logarithm ofvalue to base 2.
-
#log2(value : Float64) : Float64
Calculates the logarithm ofvalue to base 2.
-
#log2(value : Complex) : Complex
Calculates the logarithm ofvalue to base 2.
-
#log2(value) : Float64
Calculates the logarithm ofvalue to base 2.
-
#logb(value : Float32) : Float32
Returns the unbiased radix-independent exponent of the given floating-pointvalue.
-
#logb(value : Float64) : Float64
Returns the unbiased radix-independent exponent of the given floating-pointvalue.
-
#logb(value : BigFloat) : BigFloat
Returns the unbiased radix-independent exponent of the given floating-pointvalue.
-
#logb(value)
Returns the unbiased radix-independent exponent of the given floating-pointvalue.
-
#max(value1 : Float32, value2 : Float32)
Returns the greater ofvalue1 andvalue2.
-
#max(value1 : Float64, value2 : Float64) : Float64
Returns the greater ofvalue1 andvalue2.
-
#max(value1, value2)
Returns the greater ofvalue1 andvalue2.
-
#min(value1 : Float32, value2 : Float32)
Returns the smaller ofvalue1 andvalue2.
-
#min(value1 : Float64, value2 : Float64) : Float64
Returns the smaller ofvalue1 andvalue2.
-
#min(value1, value2)
Returns the smaller ofvalue1 andvalue2.
-
#pw2ceil(v : Int::Primitive)
Computes the smallest nonnegative power of 2 that is greater than or equal tov.
-
#pw2ceil(v : BigInt) : BigInt
Computes the smallest nonnegative power of 2 that is greater than or equal tov.
-
#scalbln(value : Float32, exp : Int64)
Returns the floating-pointvalue with its exponent raised byexp.
-
#scalbln(value : Float64, exp : Int64) : Float64
Returns the floating-pointvalue with its exponent raised byexp.
-
#scalbln(value : BigFloat, exp : Int) : BigFloat
Returns the floating-pointvalue with its exponent raised byexp.
-
#scalbln(value, exp) : Float64
Returns the floating-pointvalue with its exponent raised byexp.
-
#scalbn(value : Float32, exp : Int32) : Float32
Returns the floating-pointvalue with its exponent raised byexp.
-
#scalbn(value : Float64, exp : Int32) : Float64
Returns the floating-pointvalue with its exponent raised byexp.
-
#scalbn(value : BigFloat, exp : Int) : BigFloat
Returns the floating-pointvalue with its exponent raised byexp.
-
#scalbn(value, exp)
Returns the floating-pointvalue with its exponent raised byexp.
-
#sin(value : Float32) : Float32
Calculates the sine ofvalue, measured in radians.
-
#sin(value : Float64) : Float64
Calculates the sine ofvalue, measured in radians.
-
#sin(value)
Calculates the sine ofvalue, measured in radians.
-
#sinh(value : Float32) : Float32
Calculates the hyperbolic sine ofvalue.
-
#sinh(value : Float64) : Float64
Calculates the hyperbolic sine ofvalue.
-
#sinh(value)
Calculates the hyperbolic sine ofvalue.
-
#sqrt(value : Float32) : Float32
Calculates the square root ofvalue.
-
#sqrt(value : Float64) : Float64
Calculates the square root ofvalue.
-
#sqrt(value : BigInt) : BigFloat
Calculates the square root ofvalue.
-
#sqrt(value : BigFloat) : BigFloat
Calculates the square root ofvalue.
-
#sqrt(value : BigRational) : BigFloat
Calculates the square root ofvalue.
-
#sqrt(value : Complex) : Complex
Calculates the square root ofvalue.
-
#sqrt(value) : Float64
Calculates the square root ofvalue.
-
#tan(value : Float32) : Float32
Calculates the tangent ofvalue, measured in radians.
-
#tan(value : Float64) : Float64
Calculates the tangent ofvalue, measured in radians.
-
#tan(value)
Calculates the tangent ofvalue, measured in radians.
-
#tanh(value : Float32) : Float32
Calculates the hyperbolic tangent ofvalue.
-
#tanh(value : Float64) : Float64
Calculates the hyperbolic tangent ofvalue.
-
#tanh(value)
Calculates the hyperbolic tangent ofvalue.
Instance Method Detail
Calculates the two-argument arc tangent of the ray from (0, 0) to (x,y).
Calculates the two-argument arc tangent of the ray from (0, 0) to (x,y).
Calculates the two-argument arc tangent of the ray from (0, 0) to (x,y).
Calculates the cylindrical Bessel function of the first kind ofvalue for the givenorder.
Calculates the cylindrical Bessel function of the first kind ofvalue for the givenorder.
Calculates the cylindrical Bessel function of the first kind ofvalue for the givenorder.
Calculates the cylindrical Bessel function of the first kind ofvalue for order 0.
Calculates the cylindrical Bessel function of the first kind ofvalue for order 0.
Calculates the cylindrical Bessel function of the first kind ofvalue for order 0.
Calculates the cylindrical Bessel function of the first kind ofvalue for order 1.
Calculates the cylindrical Bessel function of the first kind ofvalue for order 1.
Calculates the cylindrical Bessel function of the first kind ofvalue for order 1.
Calculates the cylindrical Bessel function of the second kind ofvalue for the givenorder.
Calculates the cylindrical Bessel function of the second kind ofvalue for the givenorder.
Calculates the cylindrical Bessel function of the second kind ofvalue for the givenorder.
Calculates the cylindrical Bessel function of the second kind ofvalue for order 0.
Calculates the cylindrical Bessel function of the second kind ofvalue for order 0.
Calculates the cylindrical Bessel function of the second kind ofvalue for order 0.
Calculates the cylindrical Bessel function of the second kind ofvalue for order 1.
Calculates the cylindrical Bessel function of the second kind ofvalue for order 1.
Calculates the cylindrical Bessel function of the second kind ofvalue for order 1.
Returns the floating-point value with the magnitude ofvalue1 and the sign ofvalue2.
Returns the floating-point value with the magnitude ofvalue1 and the sign ofvalue2.
Returns the floating-point value with the magnitude ofvalue1 and the sign ofvalue2.
BigFloat does not support signed zeros; ifvalue2 == 0, the returned value is non-negative.
Returns the floating-point value with the magnitude ofvalue1 and the sign ofvalue2.
Calculates the exponential ofvalue.
require "complex"
Math.exp(4 + 2.i) # => -22.720847417619233 + 49.645957334580565.i
Fused multiply-add; returnsvalue1 * value2 + value3, performing a single
rounding instead of two.
Math.fma(0.1, 10.0, -1.0) # => 5.551115123125783e-17
1.0 * 10.0 - 1.0 # => 0.0
Fused multiply-add; returnsvalue1 * value2 + value3, performing a single
rounding instead of two.
Math.fma(0.1, 10.0, -1.0) # => 5.551115123125783e-17
1.0 * 10.0 - 1.0 # => 0.0
Fused multiply-add; returnsvalue1 * value2 + value3, performing a single
rounding instead of two.
Math.fma(0.1, 10.0, -1.0) # => 5.551115123125783e-17
1.0 * 10.0 - 1.0 # => 0.0
Decomposes the given floating-pointvalue into a normalized fraction and an integral power of two.
Decomposes the given floating-pointvalue into a normalized fraction and an integral power of two.
Decomposes the given floating-pointvalue into a normalized fraction and an integral power of two.
Decomposes the given floating-pointvalue into a normalized fraction and an integral power of two.
Calculates the gamma function ofvalue.
Note that#gamma(n) is same asfact(n - 1) for integern > 0.
However#gamma(n) returns float and can be an approximation.
Calculates the gamma function ofvalue.
Note that#gamma(n) is same asfact(n - 1) for integern > 0.
However#gamma(n) returns float and can be an approximation.
Calculates the gamma function ofvalue.
Note that#gamma(n) is same asfact(n - 1) for integern > 0.
However#gamma(n) returns float and can be an approximation.
Calculates the length of the hypotenuse from (0, 0) to (value1,value2).
Equivalent to
Math.sqrt(value1 ** 2 + value2 ** 2)
Calculates the length of the hypotenuse from (0, 0) to (value1,value2).
Equivalent to
Math.sqrt(value1 ** 2 + value2 ** 2)
Calculates the length of the hypotenuse from (0, 0) to (value1,value2).
Equivalent to
Math.sqrt(value1 ** 2 + value2 ** 2)
Returns the unbiased base 2 exponent of the given floating-pointvalue.
Returns the unbiased base 2 exponent of the given floating-pointvalue.
Returns the unbiased base 2 exponent of the given floating-pointvalue.
RaisesArgumentError ifvalue is zero.
Multiplies the given floating-pointvalue by 2 raised to the powerexp.
Multiplies the given floating-pointvalue by 2 raised to the powerexp.
Multiplies the given floating-pointvalue by 2 raised to the powerexp.
Calculates the logarithmic gamma ofvalue.
Math.lgamma(2.96)
is equivalent to
Math.log(Math.gamma(2.96).abs)
Calculates the logarithmic gamma ofvalue.
Math.lgamma(2.96)
is equivalent to
Math.log(Math.gamma(2.96).abs)
Calculates the logarithmic gamma ofvalue.
Math.lgamma(2.96)
is equivalent to
Math.log(Math.gamma(2.96).abs)
Calculates the natural logarithm ofvalue.
require "complex"
Math.log(4 + 2.i) # => 1.4978661367769956 + 0.4636476090008061.i
Calculates the logarithm ofvalue to base 10.
require "complex"
Math.log10(4 + 2.i) # => 0.6505149978319906 + 0.20135959813668655.i
Calculates the logarithm ofvalue to base 2.
require "complex"
Math.log2(4 + 2.i) # => 2.1609640474436813 + 0.6689021062254881.i
Returns the unbiased radix-independent exponent of the given floating-pointvalue.
Returns the unbiased radix-independent exponent of the given floating-pointvalue.
Returns the unbiased radix-independent exponent of the given floating-pointvalue.
ForBigFloat this is equivalent to#ilogb.
RaisesArgumentError isvalue is zero.
Computes the smallest nonnegative power of 2 that is greater than or equal tov.
The returned value has the same type as the argument. RaisesOverflowError
if the result does not fit into the argument's type.
Math.pw2ceil(33) # => 64
Math.pw2ceil(64) # => 64
Math.pw2ceil(-5) # => 1
Computes the smallest nonnegative power of 2 that is greater than or equal tov.
The returned value has the same type as the argument.
Math.pw2ceil(33) # => 64
Math.pw2ceil(64) # => 64
Math.pw2ceil(-5) # => 1
Returns the floating-pointvalue with its exponent raised byexp.
Returns the floating-pointvalue with its exponent raised byexp.
Returns the floating-pointvalue with its exponent raised byexp.
Returns the floating-pointvalue with its exponent raised byexp.
Returns the floating-pointvalue with its exponent raised byexp.
Returns the floating-pointvalue with its exponent raised byexp.
Returns the floating-pointvalue with its exponent raised byexp.
Calculates the square root ofvalue.
require "big"
Math.sqrt(1_000_000_000_000.to_big_i * 1_000_000_000_000.to_big_i) # => 1000000000000.0
Calculates the square root ofvalue.
require "big"
Math.sqrt(1_000_000_000_000.to_big_f * 1_000_000_000_000.to_big_f) # => 1000000000000.0
Calculates the square root ofvalue.
require "big"
Math.sqrt(1_000_000_000_000.to_big_r * 1_000_000_000_000.to_big_r) # => 1000000000000.0
Calculates the square root ofvalue. Inspired by thefollowing blog post of Pavel Panchekha on floating point precision.
require "complex"
Math.sqrt(4 + 2.i) # => 2.0581710272714924 + 0.48586827175664565.i
Although the imaginary number is defined as i = sqrt(-1),
callingMath.sqrt with a negative number will return-NaN.
To obtain the result in the complex plane,Math.sqrt must
be called with a complex number.
Math.sqrt(-1.0) # => -NaN
Math.sqrt(-1.0 + 0.0.i) # => 0.0 + 1.0.i