Roblox UtilitiesDevlHub Roblox Documentation

Library

math

A library of math functions.

This library is an interface to the standard C math library, providing all of its functions inside the math table.

Properties 7#

enumberThe value of Euler's number, e.
hugenumberReturns a value larger than or equal to any other numerical value (about 21024).
nannumberA NaN value, as defined by the IEEE 754 standard.
phinumberThe value of the golden ratio.
pinumberThe value of pi.
sqrt2numberThe value of the square root of 2.
taunumberThe value of tau, which is defined as 2 * math.pi.

e: number#

The value of Euler's number, e.

huge: number#

Returns a value larger than or equal to any other numerical value (about 21024). Dividing a positive number by zero yields this same value.

nan: number#

A NaN value, as defined by the IEEE 754 standard. Comparing directly to math.nan will always return false; use math.isnan() instead.

phi: number#

The value of the golden ratio.

pi: number#

The value of pi.

sqrt2: number#

The value of the square root of 2.

tau: number#

The value of tau, which is defined as 2 * math.pi.

Functions 37#

absReturns the absolute value of x.
acosReturns the arc cosine of x.
asinReturns the arc sine of x.
atanReturns the arc tangent of x in radians.
atan2Returns the arc tangent of y/x (in radians) while using the signs of both parameters to find the quadrant of the result.
ceilReturns the smallest integer larger than or equal to x.
clampReturns a number between min and max, inclusive.
cosReturns the cosine of x, assumed to be in radians.
coshReturns the hyperbolic cosine of x.
degReturns the angle x (given in radians) in degrees.
expReturns the value e^x.
floorReturns the largest integer smaller than or equal to x.
fmodReturns the remainder of the division of x by y that rounds the quotient towards zero.
frexpReturns m and e such that x = m*2^e.
isfiniteReturns true if x is a finite number.
isinfReturns true if x is positive or negative infinity and false otherwise.
isnanReturns true if x is not a number (NaN) and false otherwise.
ldexpReturns x*2^e (e should be an integer).
lerpReturns the linear interpolation between a and b.
logReturns the logarithm of x using the given base.
log10Returns the base-10 logarithm of x.
mapReturns the value of x mapped from one range to another.
maxReturns the maximum value among the numbers passed to the function.
minReturns the minimum value among the numbers passed to the function.
modfReturns two numbers: the integral part of x and the fractional part of x.
noiseReturns a Perlin noise value.
powReturns x^y.
radReturns the angle x (given in degrees) in radians.
randomReturns a random number within the range provided.
randomseedSets x as the seed for the pseudo-random generator.
roundReturns the integer with the smallest difference between it and the given number.
signReturns -1 if x is less than 0, 0 if x equals 0, or 1 if x is greater than 0.
sinReturns the sine of x, assumed to be in radians.
sinhReturns the hyperbolic sine of x.
sqrtReturns the square root of x.
tanReturns the tangent of x, assumed to be in radians.
tanhReturns the hyperbolic tangent of x.

abs(x: number): number#

Returns the absolute value of x.

NameTypeDefaultDescription
xnumberThe number to return the absolute value of.
Returns
  • number — The absolute value of x.

acos(x: number): number#

Returns the arc cosine of x.

NameTypeDefaultDescription
xnumberThe cosine value, between -1 and 1.
Returns
  • number — The angle in radians whose cosine is x, in the range [0, pi].

asin(x: number): number#

Returns the arc sine of x.

NameTypeDefaultDescription
xnumberThe sine value, between -1 and 1.
Returns
  • number — The angle in radians whose sine is x, in the range [-pi/2, pi/2].

atan(x: number): number#

Returns the arc tangent of x in radians.

NameTypeDefaultDescription
xnumberThe value to compute the arc tangent of.
Returns
  • number — The arc tangent of x in radians, in the range [-pi/2, pi/2].

atan2(y: number, x: number): number#

Returns the arc tangent of y/x (in radians) while using the signs of both parameters to find the quadrant of the result. It also handles correctly the case of x being zero.

NameTypeDefaultDescription
ynumberThe Y coordinate.
xnumberThe X coordinate.
Returns
  • number — The arc tangent of y/x in radians, in the range [-pi, pi].

ceil(x: number): int#

Returns the smallest integer larger than or equal to x.

NameTypeDefaultDescription
xnumberThe number to round up.
Returns
  • int — The smallest integer greater than or equal to x.

clamp(x: number, min: number, max: number): number#

Returns a number between min and max, inclusive.

NameTypeDefaultDescription
xnumberThe number to clamp.
minnumberThe minimum value of the range.
maxnumberThe maximum value of the range; must be greater than or equal to min.
Returns
  • number — x constrained to the range [min, max].

cos(x: number): number#

Returns the cosine of x, assumed to be in radians.

NameTypeDefaultDescription
xnumberThe angle in radians.
Returns
  • number — The cosine of x.

cosh(x: number): number#

Returns the hyperbolic cosine of x.

NameTypeDefaultDescription
xnumberThe number to compute the hyperbolic cosine of.
Returns
  • number — The hyperbolic cosine of x.

deg(x: number): number#

Returns the angle x (given in radians) in degrees.

NameTypeDefaultDescription
xnumberThe angle in radians to convert.
Returns
  • number — The angle x converted to degrees.

exp(x: number): number#

Returns the value e^x.

NameTypeDefaultDescription
xnumberThe exponent.
Returns
  • number — The value of e raised to the power x.

floor(x: number): int#

Returns the largest integer smaller than or equal to x.

NameTypeDefaultDescription
xnumberThe number to round down.
Returns
  • int — The largest integer less than or equal to x.

fmod(x: number, y: number): number#

Returns the remainder of the division of x by y that rounds the quotient towards zero.

NameTypeDefaultDescription
xnumberThe dividend.
ynumberThe divisor.
Returns
  • number — The remainder of the division of x by y.

frexp(x: number): number, int#

Returns m and e such that x = m*2^e. e is an integer and the absolute value of m is in the range of 0.5 to 1 (inclusive of 0.5 but exclusive of 1), or zero when x is zero.

NameTypeDefaultDescription
xnumberThe number to decompose into mantissa and exponent.
Returns
  • number — The mantissa m, a value whose absolute value is in [0.5, 1) or zero.
  • int — The exponent e such that x = m * 2^e.

isfinite(x: number): boolean#

Returns true if x is a finite number, meaning it is neither NaN nor positive or negative infinity (±math.huge).

NameTypeDefaultDescription
xnumberThe number to test.
Returns
  • boolean — True if x is neither NaN nor infinity, false otherwise.

isinf(x: number): boolean#

Returns true if x is positive or negative infinity (±math.huge) and false otherwise.

NameTypeDefaultDescription
xnumberThe number to test.
Returns
  • boolean — True if x is positive or negative infinity, false otherwise.

isnan(x: number): boolean#

Returns true if x is not a number (NaN) and false otherwise.

NameTypeDefaultDescription
xnumberThe number to test.
Returns
  • boolean — True if x is NaN, false otherwise.

ldexp(x: number, e: int): number#

Returns x*2^e (e should be an integer).

NameTypeDefaultDescription
xnumberThe mantissa value.
eintThe integer exponent.
Returns
  • number — The value x * 2^e.

lerp(a: number, b: number, t: number): number#

Returns the linear interpolation between a and b based on the factor t.

This function uses the formula a+(b-a)*t. t is typically between 0 and 1 but values outside this range are acceptable.

NameTypeDefaultDescription
anumberThe starting value.
bnumberThe ending value.
tnumberThe interpolation factor, typically between 0 and 1.
Returns
  • number — The interpolated value between a and b.

log(x: number, base: number = 2.7182818): number#

Returns the logarithm of x using the given base, or the mathematical constant e if no base is provided (natural logarithm).

NameTypeDefaultDescription
xnumberThe number to compute the logarithm of.
basenumber2.7182818The base of the logarithm, the constant e by default.
Returns
  • number — The logarithm of x in the given base.

log10(x: number): number#

Returns the base-10 logarithm of x.

NameTypeDefaultDescription
xnumberThe number to compute the base-10 logarithm of.
Returns
  • number — The base-10 logarithm of x.

map(x: number, inmin: number, inmax: number, outmin: number, outmax: number): number#

Returns a value that represents x mapped linearly from the input range (inmin to inmax) to the output range (outmin to outmax). This is achieved by determining the relative position of x within the input range and applying that ratio to the output range.

NameTypeDefaultDescription
xnumberThe number to be mapped.
inminnumberThe lower bound of the input range.
inmaxnumberThe upper bound of the input range.
outminnumberThe lower bound of the output range.
outmaxnumberThe upper bound of the output range.
Returns
  • number — The value of x mapped to the output range.

max(x: number, ...: number): number#

Returns the maximum value among the numbers passed to the function.

NameTypeDefaultDescription
xnumberThe first number to compare.
...numberAdditional numbers to compare.
Returns
  • number — The largest value among all arguments.

min(x: number, ...: number): number#

Returns the minimum value among the numbers passed to the function.

NameTypeDefaultDescription
xnumberThe first number to compare.
...numberAdditional numbers to compare.
Returns
  • number — The smallest value among all arguments.

modf(x: number): number, number#

Returns two numbers: the integral part of x and the fractional part of x.

NameTypeDefaultDescription
xnumberThe number to split into integral and fractional parts.
Returns
  • number — The integral part of x.
  • number — The fractional part of x.

noise(x: number, y: number = 0, z: number = 0): number#

Returns a Perlin noise value. The returned value is most often between the range of -1 to 1 (inclusive) but sometimes may be outside that range; if the interval is critical to you, use Library.math.clamp(noise, -1, 1) on the output.

If you leave arguments out, they will be interpreted as zero, so Library.math.noise(1.158) is equivalent to Library.math.noise(1.158, 0, 0) and Library.math.noise(1.158, 5.723) is equivalent to Library.math.noise(1.158, 5.723, 0).

Note that this function uses a Perlin noise algorithm to assign fixed values to coordinates. For example, Library.math.noise(1.158, 5.723) will always return 0.48397532105446 and Library.math.noise(1.158, 6) will always return 0.15315161645412.

If x, y, and z are all integers, the return value will be 0. For fractional values of x, y, and z, the return value will gradually fluctuate between -0.5 and 0.5. For coordinates that are close to each other, the return values will also be close to each other.

The noise repeats with a period of 256 on each axis, so Library.math.noise(x, y, z) and Library.math.noise(x + 256, y, z) return identical values.

NameTypeDefaultDescription
xnumberThe X coordinate of the sample point.
ynumber0The Y coordinate of the sample point.
znumber0The Z coordinate of the sample point.
Returns
  • number — A Perlin noise value, typically between -1 and 1.

pow(x: number, y: number): number#

Returns x^y (you can also use the expression x^y to compute this value).

NameTypeDefaultDescription
xnumberThe base value.
ynumberThe exponent value.
Returns
  • number — The value x raised to the power y.

rad(x: number): number#

Returns the angle x (given in degrees) in radians.

NameTypeDefaultDescription
xnumberThe angle in degrees to convert.
Returns
  • number — The angle x converted to radians.

random(m: number = 0, n: number = 1): number#

When called without arguments, returns a uniform pseudo-random real number in the range of 0 to 1 (inclusive of 0 but exclusive of 1).

When called with an integer number m, returns a uniform pseudo-random integer in the range of 1 to m, inclusive.

When called with two integer numbers m and n, returns a uniform pseudo-random integer in the range of m to n, inclusive.

Internally, this uses a 32-bit PCG (Permuted Congruential Generator) which achieves excellent statistical performance and makes its output hard to predict.

NameTypeDefaultDescription
mnumber0When used alone, the upper bound of the integer range (lower bound is 1). When used with n, the lower bound.
nnumber1The upper bound of the integer range.
Returns
  • number — A pseudo-random number within the specified range.

randomseed(x: number): ()#

Sets x as the seed for the pseudo-random generator: equal seeds produce equal sequences of numbers.

NameTypeDefaultDescription
xnumberThe seed value for the pseudo-random number generator.
Returns
  • ()

round(x: number): number#

Returns the integer with the smallest difference between it and the given number. For example, the value 5.8 returns 6.

For values like 0.5 that are equidistant to two integers, the value with the greater difference between it and zero is chosen. In other words, the function "rounds away from zero" such that 0.5 rounds to 1 and -0.5 rounds to -1.

NameTypeDefaultDescription
xnumberThe value to be rounded.
Returns
  • number — The nearest integer to x, rounding away from zero for midpoints.

sign(x: number): int#

Returns -1 if x is less than 0, 0 if x equals 0, or 1 if x is greater than 0.

NameTypeDefaultDescription
xnumberThe number to determine the sign of.
Returns
  • int — -1 if x is negative, 0 if x is zero, or 1 if x is positive.

sin(x: number): number#

Returns the sine of x, assumed to be in radians.

NameTypeDefaultDescription
xnumberThe angle in radians.
Returns
  • number — The sine of x.

sinh(x: number): number#

Returns the hyperbolic sine of x.

NameTypeDefaultDescription
xnumberThe number to compute the hyperbolic sine of.
Returns
  • number — The hyperbolic sine of x.

sqrt(x: number): number#

Returns the square root of x. You can also use the expression x^0.5 to compute this value.

NameTypeDefaultDescription
xnumberThe number to compute the square root of.
Returns
  • number — The square root of x.

tan(x: number): number#

Returns the tangent of x, assumed to be in radians.

NameTypeDefaultDescription
xnumberThe angle in radians.
Returns
  • number — The tangent of x.

tanh(x: number): number#

Returns the hyperbolic tangent of x.

NameTypeDefaultDescription
xnumberThe number to compute the hyperbolic tangent of.
Returns
  • number — The hyperbolic tangent of x.