cheatah
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"
5namespace cheatah::math {
7double sqrt(double x) { return std::sqrt(x); }
8double cbrt(double x) { return std::cbrt(x); }
9double fabs(double x) { return std::fabs(x); }
10double floor(double x) { return std::floor(x); }
11double ceil(double x) { return std::ceil(x); }
12double trunc(double x) { return std::trunc(x); }
13double round(double x) { return std::round(x); }
14double exp(double x) { return std::exp(x); }
15double log(double x) { return std::log(x); }
16double log2(double x) { return std::log2(x); }
17double log10(double x) { return std::log10(x); }
18double sin(double x) { return std::sin(x); }
19double cos(double x) { return std::cos(x); }
20double tan(double x) { return std::tan(x); }
21double asin(double x) { return std::asin(x); }
22double acos(double x) { return std::acos(x); }
23double atan(double x) { return std::atan(x); }
24double atan2(double y, double x) { return std::atan2(y, x); }
25double hypot(double x, double y) { return std::hypot(x, y); }
26double fmod(double x, double y) { return std::fmod(x, y); }
27double copysign(double x, double y) { return std::copysign(x, y); }
28double degrees(double radians) { return radians * (180.0 / pi); }
29double radians(double degrees) { return degrees * (pi / 180.0); }
30bool isnan(double x) { return std::isnan(x); }
31bool isinf(double x) { return std::isinf(x); }
32bool isfinite(double x) { return std::isfinite(x); }
34long 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;
44long long factorial(long long n) {
45 long long r = 1;
46 for (long long i = 2; i <= n; ++i) r *= i;
47 return r;
50} // namespace cheatah::math