Source
stdlib/math/math.cpp
1
// Copyright (c) 2026 BigBrain LLC. MIT-licensed (see LICENSE).2
// Original work; see ACKNOWLEDGMENTS.md for the open-source ideas we build upon.3
#include "math.hpp"5
namespace cheatah::math {7
double sqrt(double x) { return std::sqrt(x); }8
double cbrt(double x) { return std::cbrt(x); }9
double fabs(double x) { return std::fabs(x); }10
double floor(double x) { return std::floor(x); }11
double ceil(double x) { return std::ceil(x); }12
double trunc(double x) { return std::trunc(x); }13
double round(double x) { return std::round(x); }14
double exp(double x) { return std::exp(x); }15
double log(double x) { return std::log(x); }16
double log2(double x) { return std::log2(x); }17
double log10(double x) { return std::log10(x); }18
double sin(double x) { return std::sin(x); }19
double cos(double x) { return std::cos(x); }20
double tan(double x) { return std::tan(x); }21
double asin(double x) { return std::asin(x); }22
double acos(double x) { return std::acos(x); }23
double atan(double x) { return std::atan(x); }24
double atan2(double y, double x) { return std::atan2(y, x); }25
double hypot(double x, double y) { return std::hypot(x, y); }26
double fmod(double x, double y) { return std::fmod(x, y); }27
double copysign(double x, double y) { return std::copysign(x, y); }28
double degrees(double radians) { return radians * (180.0 / pi); }29
double radians(double degrees) { return degrees * (pi / 180.0); }30
bool isnan(double x) { return std::isnan(x); }31
bool isinf(double x) { return std::isinf(x); }32
bool isfinite(double x) { return std::isfinite(x); }34
long long gcd(long long a, long long b) {35
a = a < 0 ? -a : a;36
b = b < 0 ? -b : b;37
while (b != 0) {38
const long long t = a % b;39
a = b;40
b = t;41
}42
return a;43
}44
long long factorial(long long n) {45
long long r = 1;46
for (long long i = 2; i <= n; ++i) r *= i;47
return r;48
}50
} // namespace cheatah::math