Add math.factorial (#8298)

This commit is contained in:
HybridDog 2019-03-05 10:11:21 +01:00 committed by Loïc Blot
parent 250420e566
commit a7c5dc50e5
2 changed files with 15 additions and 0 deletions

@ -243,6 +243,20 @@ function math.sign(x, tolerance)
return 0
end
--------------------------------------------------------------------------------
function math.factorial(x)
assert(x % 1 == 0 and x >= 0, "factorial expects a non-negative integer")
if x >= 171 then
-- 171! is greater than the biggest double, no need to calculate
return math.huge
end
local v = 1
for k = 2, x do
v = v * k
end
return v
end
--------------------------------------------------------------------------------
function get_last_folder(text,count)
local parts = text:split(DIR_DELIM)

@ -2378,6 +2378,7 @@ Helper functions
* tolerance: number, default: `0.0`
* If the absolute value of `x` is within the `tolerance` or `x` is NaN,
`0` is returned.
* `math.factorial(x)`: returns the factorial of `x`
* `string.split(str, separator, include_empty, max_splits, sep_is_pattern)`
* `separator`: string, default: `","`
* `include_empty`: boolean, default: `false`