math v0.2.0 Math

Mathematical functions and constants.

Summary

Functions

Equality-test for whether x and y are nearly equal

Computes the arc cosine of x. (expressed in radians)

Computes the inverse hyperbolic cosine of x

Computes the arc sine of x. (expressed in radians)

Computes the inverse hyperbolic sine of x

Computes the arc tangent of x. (expressed in radians)

Computes the arc tangent given y and x. (expressed in radians)

Computes the inverse hyperbolic tangent of x

Computes the cosine of x

Computes the hyperbolic cosine of x (expressed in radians)

Converts degrees to radians

e()

The mathematical constant (e)

Calculates ℯ to the xth power

Calculates the factorial of n: 1 * 2 * 3 * ... * n

Calculates the Greatest Common divisor of two numbers

Calculates the non-negative integer square root of x (rounded towards zero)

Calculates the k-combinations of n

Calculates the k-permutations of n

Calculates the Least Common Multiple of two numbers

Calculates the natural logarithm (base ) of x

Calculates the base-b logarithm of x

Calculates the common logarithm (base 10) of x

Calculates the binary logarithm (base 2) of x

Calculates the non-negative nth-root of x

The mathematical constant π (pi)

Arithmetic exponentiation. Calculates x to the n -th power

Converts radians to degrees

Computes the sine of x

Computes the hyperbolic sine of x (expressed in radians)

Calculates the non-negative square root of x

Computes the tangent of x (expressed in radians)

Computes the hyperbolic tangent of x (expressed in radians)

The mathematical constant τ (tau)

Types

x :: number
y :: number

Functions

x <~> y

Specs

number <~> number :: boolean

Equality-test for whether x and y are nearly equal.

This is useful when working with floating-point numbers, as these introduce small rounding errors.

Examples

iex> 2.3 - 0.3 == 2.0
false
iex> 2.3 - 0.3 <~> 2.0
true 
acos(x)

Specs

acos(x) :: float

Computes the arc cosine of x. (expressed in radians)

acosh(x)

Specs

acosh(x) :: float

Computes the inverse hyperbolic cosine of x.

asin(x)

Specs

asin(x) :: float

Computes the arc sine of x. (expressed in radians)

asinh(x)

Specs

asinh(x) :: float

Computes the inverse hyperbolic sine of x.

atan(x)

Specs

atan(x) :: float

Computes the arc tangent of x. (expressed in radians)

atan2(y, x)

Specs

atan2(y, x) :: float

Computes the arc tangent given y and x. (expressed in radians)

This variant returns the inverse tangent in the correct quadrant, as the signs of both x and y are known.

atanh(x)

Specs

atanh(x) :: float

Computes the inverse hyperbolic tangent of x.

cos(x)

Specs

cos(x) :: float

Computes the cosine of x.

x is interpreted as a value in radians.

cosh(x)

Specs

cosh(x) :: float

Computes the hyperbolic cosine of x (expressed in radians).

deg2rad(x)

Specs

deg2rad(x) :: float

Converts degrees to radians

Examples

iex>Math.deg2rad(180)
3.141592653589793
e()

Specs

e :: float

The mathematical constant (e).

exp(x)

Specs

exp(x) :: float

Calculates ℯ to the xth power.

factorial(n)

Specs

factorial(non_neg_integer) :: pos_integer

Calculates the factorial of n: 1 * 2 * 3 * ... * n

To make this function faster, values of n up to 1000 are precomputed at compile time.

Examples

iex> Math.factorial(1)
1
iex> Math.factorial(5)
120
iex> Math.factorial(20)
2432902008176640000
gcd(a, b)

Specs

gcd(integer, integer) :: non_neg_integer

Calculates the Greatest Common divisor of two numbers.

This is the largest positive integer that divides both a and b without leaving a remainder.

Also see Math.lcm/2

Examples

iex> Math.gcd(2, 4)
2
iex> Math.gcd(2, 3)
1
iex> Math.gcd(12, 8)
4
iex> Math.gcd(54, 24)
6
iex> Math.gcd(-54, 24)
6
isqrt(x)

Specs

isqrt(integer) :: integer

Calculates the non-negative integer square root of x (rounded towards zero)

Does not accept negative numbers as input.

Examples

iex> Math.isqrt(100)
10
iex> Math.isqrt(16)
4
iex> Math.isqrt(65536)
256
iex> Math.isqrt(10)
3
k_combinations(n, k)

Specs

k_combinations(non_neg_integer, non_neg_integer) :: non_neg_integer

Calculates the k-combinations of n.

Examples

iex> Math.k_combinations(10, 2)
45
iex> Math.k_combinations(5, 5)
1
iex> Math.k_combinations(3, 4)
0
k_permutations(n, k)

Specs

k_permutations(non_neg_integer, non_neg_integer) :: non_neg_integer

Calculates the k-permutations of n.

This is the number of distinct ways to create groups of size k from n distinct elements.

Notice that n is the first parameter, for easier piping.

Examples

iex> Math.k_permutations(10, 2)
90
iex> Math.k_permutations(5, 5)
120
iex> Math.k_permutations(3, 4)
0
lcm(a, b)

Specs

lcm(integer, integer) :: non_neg_integer

Calculates the Least Common Multiple of two numbers.

This is the smallest positive integer that can be divided by both a by b without leaving a remainder.

Also see Math.gcd/2

Examples

iex> Math.lcm(4, 6)
12
iex> Math.lcm(3, 7)
21
iex> Math.lcm(21, 6)
42
log(x)

Specs

log(x) :: float

Calculates the natural logarithm (base ) of x.

See also Math.e/0.

log(x, x)

Specs

log(x, number) :: float

Calculates the base-b logarithm of x

Note that variants for the most common logarithms exist that are faster and more precise.

See also Math.log/1, Math.log2/1 and Math.log10/1.

Examples

iex> Math.log(5, 5)
1.0
iex> Math.log(20, 2) <~> Math.log2(20) 
true
iex> Math.log(20, 10) <~> Math.log10(20)
true
iex> Math.log(2, 4)
0.5
iex> Math.log(10, 4)
1.6609640474436813
log10(x)

Specs

log10(x) :: float

Calculates the common logarithm (base 10) of x.

See also Math.log/2.

log2(x)

Specs

log2(x) :: float

Calculates the binary logarithm (base 2) of x.

See also Math.log/2.

nth_root(x, n)

Specs

nth_root(x, number) :: float

Calculates the non-negative nth-root of x.

Examples

iex> Math.nth_root(27, 3)
3.0
iex> Math.nth_root(65536, 8)
4.0
pi()

Specs

pi :: float

The mathematical constant π (pi).

The ratio of a circle's circumference to its diameter. The returned number is a floating-point approximation (as π is irrational)

pow(x, n)

Specs

pow(number, number) :: number

Arithmetic exponentiation. Calculates x to the n -th power.

When both x and n are integers and n is positive, returns an integer. When n is a negative integer, returns a float. When working with integers, the Exponentiation by Squaring algorithm is used, to allow for a fast and precise result.

When one of the numbers is a float, returns a float by using erlang's :math.pow/2 function.

It is possible to calculate roots by choosing n between 0.0 and 1.0 (To calculate the p -th-root, pass 1/p to the function)

Examples

iex> Math.pow(2, 4)
16
iex> Math.pow(2.0, 4)
16.0
iex> Math.pow(2, 4.0)
16.0
iex> Math.pow(5, 100)
7888609052210118054117285652827862296732064351090230047702789306640625
iex> Math.pow(5.0, 100)
7.888609052210118e69
iex> Math.pow(2, (1 / 2))
1.4142135623730951
rad2deg(x)

Specs

rad2deg(x) :: float

Converts radians to degrees

Examples

iex>Math.rad2deg(Math.pi)
180.0
sin(x)

Specs

sin(x) :: float

Computes the sine of x.

x is interpreted as a value in radians.

sinh(x)

Specs

sinh(x) :: float

Computes the hyperbolic sine of x (expressed in radians).

sqrt(x)

Specs

sqrt(x) :: float

Calculates the non-negative square root of x.

tan(x)

Specs

tan(x) :: float

Computes the tangent of x (expressed in radians).

tanh(x)

Specs

tanh(x) :: float

Computes the hyperbolic tangent of x (expressed in radians).

tau()

Specs

tau :: float

The mathematical constant τ (tau).

The ratio of a circle's circumference to its radius. Defined as 2 * π, but preferred by some mathematicians. The returned number is a floating-point approximation (as τ is irrational)