The Math module adds many useful functions that extend Elixir's standard library.
General Functions
a <~> b
Comparison of floats, to check if they are effectively equal (if their absolute difference is less than @epsilon
).Math.pow(x, n)
Arithmetic exponentiation. Works both with integer powers and floats.Math.sqrt(x)
The square root of x.Math.nth_root(x, n)
The n-th root of x.Math.isqrt(x)
The integer square root of x.Math.gcd(a, b)
The greatest common divisor of a and b.Math.egcd(a, b)
Calculates integers gcd, s, and t in as + bt = gcd(a,b)
. See also Math.gcd(a, b)
Math.lcm(a, b)
The least common multiple of a and b.Math.factorial(n)
The n-th factorial number.Math.k_permutations(n, k)
The number of distinct ways to create groups of size k from n distinct elements.Math.k_combinations(n, k)
The number of distinct ways to create groups of size k from n distinct elements where order does not matter.Math.mod_inv(a, m)
An integer b that fufills ab = 1 (mod m)
. Returns an ok/error tuple.Math.mod_inv!(a, m)
See Math.mod_inv(a, m)
, but returns the value or raises an error.Logarithms
Math.exp(x)
Calculates ℯ to the xth power.Math.log(x)
Calculates the natural logarithm (base ℯ
) of x.Math.log(x, b)
Calculates the base-b logarithm of x
Math.log2(x)
Calculates the binary logarithm (base 2
) of x.Math.log10(x)
Calculates the common logarithm (base 10
) of x.Math.e
Returns a floating-point approximation of the number ℯ.Trigonometry
Math.pi
Returns a floating-point approximation of the number π.Math.deg2rad(x)
converts from degrees to radians.Math.rad2deg(x)
converts from radians to degrees.Math.sin(x)
The sine of x.Math.cos(x)
The cosine of x.Math.tan(x)
The tangent of x.Math.asin(x)
The inverse sine of x.Math.acos(x)
The inverse cosine of x.Math.atan(x)
The inverse tangent of x.Math.atan2(x, y)
The inverse tangent of x and y. This variant returns the inverse tangent in the correct quadrant, as the signs of both x and y are known.Math.sinh(x)
The hyperbolic sine of x.Math.cosh(x)
The hyperbolic cosine of x.Math.tanh(x)
The hyperbolic tangent of x.Math.asinh(x)
The inverse hyperbolic sine of x.Math.acosh(x)
The inverse hyperbolic cosine of x.Math.atanh(x)
The inverse hyperbolic tangent of x.Interpolation
Math.linear_interpolation(t,p0,p1)
Returns {x,y} of t in a linear interpolationMath.interpolation(fn t,x,y end, t,[p0,p1 ...])
Returns {x,y} of t in a given function of interpolationMath.bezier_curve(t,[p0,p1 ...])
Returns {x,y} of t in a bezier_curveWorking with Collections
Math.Enum.product(collection)
The result of multiplying all elements in the passed collection.Math.Enum.mean(collection)
the mean of the numbers in the collection.Math.Enum.median(collection)
the median of the numbers in the collection.Math.Enum.mode(collection)
the mode of the numbers in the collection.Math.Enum.variance(collection)
variance of the numbers in the collection.Math.Enum.stdev(collection)
the standard deviation of the numbers in the collection.Math is available in Hex. The package can be installed by:
math
to your list of dependencies in mix.exs
:def deps do
[
{:math, "~> 0.6.0"}
]
end
require Math
# or
import Math
(Importing allows usage of the <~>
operator)
Math.linear_interpolation/3
and Math.bezier_curve/2
. Thank you, @pcarvsilva !Math.Enum.variance/1
and Math.Enum.stdev/1
. Thank you, @TenTakano !Math.mod_inv
, Math.mod_inv!
and Math.egcd
Math.Enum.mode/1
.factorial/1
, nth_sqrt/2
, k_permutations/2
, k_combinations/2
, gcd/2
, lcm/2
and Math.Enum
functions. Improved documentation.pow/1
, isqrt/2
, deg2rad/1
, rad2deg/1
. Improved documentation.:math
library.