236 lines
4.9 KiB
Markdown
236 lines
4.9 KiB
Markdown
#api/lua
|
|
|
|
API docs for Lua's `math` module.
|
|
|
|
# Standard library
|
|
|
|
## math.random(m?, n?)
|
|
Returns a random number.
|
|
- `random()` returns a random float in range [0,1)
|
|
- `random(m)` returns a random integer in range [1,m]
|
|
- `random(m,n)` returns a random integer in range [m,n]
|
|
|
|
Example:
|
|
```lua
|
|
print(math.random()) -- prints: 0.123456789 (random float between 0 and 1)
|
|
print(math.random(10)) -- prints: 5 (random integer between 1 and 10)
|
|
print(math.random(5, 10)) -- prints: 7 (random integer between 5 and 10)
|
|
```
|
|
|
|
## math.abs(x)
|
|
Returns the absolute value of `x`.
|
|
|
|
Example:
|
|
```lua
|
|
print(math.abs(-5)) -- prints: 5
|
|
print(math.abs(5)) -- prints: 5
|
|
```
|
|
|
|
## math.ceil(x)
|
|
Returns the smallest integer greater than or equal to `x`.
|
|
|
|
Example:
|
|
```lua
|
|
print(math.ceil(4.2)) -- prints: 5
|
|
print(math.ceil(-4.2)) -- prints: -4
|
|
```
|
|
|
|
## math.floor(x)
|
|
Returns the largest integer less than or equal to `x`.
|
|
|
|
Example:
|
|
```lua
|
|
print(math.floor(4.8)) -- prints: 4
|
|
print(math.floor(-4.8)) -- prints: -5
|
|
```
|
|
|
|
Note: `math.floor(x + 0.5)` rounds to closest integer, similar to `round(x)` function from other languages
|
|
|
|
## math.max(...)
|
|
Returns the maximum value among its arguments.
|
|
|
|
Example:
|
|
```lua
|
|
print(math.max(1, 2, 3, 4, 5)) -- prints: 5
|
|
print(math.max(-10, -5, -1)) -- prints: -1
|
|
```
|
|
|
|
## math.min(...)
|
|
Returns the minimum value among its arguments.
|
|
|
|
Example:
|
|
```lua
|
|
print(math.min(1, 2, 3, 4, 5)) -- prints: 1
|
|
print(math.min(-10, -5, -1)) -- prints: -10
|
|
```
|
|
|
|
## math.fmod(x, y)
|
|
Returns the remainder of the division of `x` by `y` that rounds the quotient towards zero.
|
|
|
|
Example:
|
|
```lua
|
|
print(math.fmod(10, 3)) -- prints: 1
|
|
print(math.fmod(-10, 3)) -- prints: -1
|
|
```
|
|
|
|
## math.modf(x)
|
|
Returns two numbers, the integral part of `x` and the fractional part of `x`.
|
|
|
|
Example:
|
|
```lua
|
|
local intPart, fracPart = math.modf(3.14)
|
|
print(intPart, fracPart) -- prints: 3 0.14
|
|
```
|
|
|
|
## math.exp(x)
|
|
Returns the value e^x (where e is the base of natural logarithms).
|
|
|
|
Example:
|
|
```lua
|
|
print(math.exp(0)) -- prints: 1
|
|
print(math.exp(1)) -- prints: 2.7182818284590455
|
|
```
|
|
|
|
## math.log(x, base?)
|
|
Returns the logarithm of `x` in the given base. If base is not specified, returns the natural logarithm of `x`.
|
|
|
|
Example:
|
|
```lua
|
|
print(math.log(10)) -- prints: 2.302585092994046 (natural log)
|
|
print(math.log(100, 10)) -- prints: 2 (log base 10)
|
|
```
|
|
|
|
## math.pow(x, y)
|
|
Returns x^y.
|
|
|
|
Example:
|
|
```lua
|
|
print(math.pow(2, 3)) -- prints: 8
|
|
print(math.pow(10, 2)) -- prints: 100
|
|
```
|
|
|
|
## math.sqrt(x)
|
|
Returns the square root of `x`.
|
|
|
|
Example:
|
|
```lua
|
|
print(math.sqrt(16)) -- prints: 4
|
|
print(math.sqrt(2)) -- prints: 1.4142135623730951
|
|
```
|
|
|
|
## math.cos(x)
|
|
Returns the cosine of `x` (in radians).
|
|
|
|
Example:
|
|
```lua
|
|
print(math.cos(0)) -- prints: 1
|
|
print(math.cos(math.pi)) -- prints: -1
|
|
```
|
|
|
|
## math.sin(x)
|
|
Returns the sine of `x` (in radians).
|
|
|
|
Example:
|
|
```lua
|
|
print(math.sin(0)) -- prints: 0
|
|
print(math.sin(math.pi / 2)) -- prints: 1
|
|
```
|
|
|
|
## math.tan(x)
|
|
Returns the tangent of `x` (in radians).
|
|
|
|
Example:
|
|
```lua
|
|
print(math.tan(0)) -- prints: 0
|
|
print(math.tan(math.pi / 4)) -- prints: 1
|
|
```
|
|
|
|
## math.acos(x)
|
|
Returns the arc cosine of `x` (in radians).
|
|
|
|
Example:
|
|
```lua
|
|
print(math.acos(1)) -- prints: 0
|
|
print(math.acos(0)) -- prints: 1.5707963267948966 (pi/2)
|
|
```
|
|
|
|
## math.asin(x)
|
|
Returns the arc sine of `x` (in radians).
|
|
|
|
Example:
|
|
```lua
|
|
print(math.asin(0)) -- prints: 0
|
|
print(math.asin(1)) -- prints: 1.5707963267948966 (pi/2)
|
|
```
|
|
|
|
## math.atan(y, x?)
|
|
Returns the arc tangent of `y/x` (in radians). If `x` is not provided, returns the arc tangent of `y` (in radians).
|
|
|
|
Example:
|
|
```lua
|
|
print(math.atan(1)) -- prints: 0.7853981633974483 (pi/4)
|
|
print(math.atan(1, 1)) -- prints: 0.7853981633974483 (pi/4)
|
|
```
|
|
|
|
## math.cosh(x)
|
|
Returns the hyperbolic cosine of `x`.
|
|
|
|
Example:
|
|
```lua
|
|
print(math.cosh(0)) -- prints: 1
|
|
```
|
|
|
|
## math.sinh(x)
|
|
Returns the hyperbolic sine of `x`.
|
|
|
|
Example:
|
|
```lua
|
|
print(math.sinh(0)) -- prints: 0
|
|
```
|
|
|
|
## math.tanh(x)
|
|
Returns the hyperbolic tangent of `x`.
|
|
|
|
Example:
|
|
```lua
|
|
print(math.tanh(0)) -- prints: 0
|
|
```
|
|
|
|
## math.deg(x)
|
|
Converts angle `x` from radians to degrees.
|
|
|
|
Example:
|
|
```lua
|
|
print(math.deg(math.pi)) -- prints: 180
|
|
print(math.deg(math.pi/2)) -- prints: 90
|
|
```
|
|
|
|
## math.rad(x)
|
|
Converts angle `x` from degrees to radians.
|
|
|
|
Example:
|
|
```lua
|
|
print(math.rad(180)) -- prints: 3.141592653589793
|
|
print(math.rad(90)) -- prints: 1.5707963267948966
|
|
```
|
|
|
|
## math.ult(m, n)
|
|
Returns a boolean, true if integer `m` is below integer `n` when they are compared as unsigned integers.
|
|
|
|
Example:
|
|
```lua
|
|
print(math.ult(2, 3)) -- prints: true
|
|
print(math.ult(-1, 1)) -- prints: false (as unsigned integers)
|
|
```
|
|
|
|
# Non-standard Extensions
|
|
## math.cosineSimilarity(vecA, vecB)
|
|
Returns the cosine similarity between two vectors.
|
|
|
|
Example:
|
|
```lua
|
|
local vec1 = {1, 2, 3}
|
|
local vec2 = {4, 5, 6}
|
|
print(math.cosineSimilarity(vec1, vec2)) -- prints: 0.9746318461970762
|
|
```
|