includes/std: Moved stdlib to std folder, added all builtin functions

This commit is contained in:
WerWolv
2022-01-30 17:53:48 +01:00
parent 00b7c912f2
commit 6325dbce0d
19 changed files with 190 additions and 19 deletions

64
includes/std/math.pat Normal file
View File

@@ -0,0 +1,64 @@
#pragma once
namespace std::math {
fn min(auto a, auto b) {
return a < b ? a : b;
};
fn max(auto a, auto b) {
return a > b ? a : b;
};
fn clamp(auto x, auto min, auto max) {
return (x < min) ? min : ((x > max) ? max : x);
};
fn abs(auto x) {
if (x < 0) return -x;
else return x;
};
fn sign(auto x) {
if (x > 0)
return 1;
else if (x < 0)
return -1;
else
return 0;
};
fn copy_sign(auto x, auto y) {
if (y >= 0)
return std::math::abs(x);
else
return -std::math::abs(x);
};
fn factorial(u128 x) {
u128 result;
result = x;
while (x > 1) {
x = x - 1;
result = result * x;
}
return result;
};
fn comb(u128 n, u128 k) {
if (k > n)
return 0;
else
return std::math::factorial(n) / (std::math::factorial(k) * std::math::factorial(n - k));
};
fn perm(u128 n, u128 k) {
if (k > n)
return 0;
else
return std::math::factorial(n) / std::math::factorial(n - k);
};
}