Files
ImHex-Patterns/includes/std/math.pat

64 lines
950 B
Plaintext

#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);
};
}