mirror of
https://github.com/Tom-on64/kern.git
synced 2026-11-03 18:22:22 +00:00
70 lines
1.7 KiB
C
70 lines
1.7 KiB
C
#ifndef _MATH_H
|
|
#define _MATH_H
|
|
|
|
// Constants
|
|
#define M_E 2.71828182845904523536 // e
|
|
#define M_LOG2E 1.44269504088896340736 // log_2 e
|
|
#define M_LOG10E 0.43429448190325182765 // log_10 e
|
|
#define M_LN2 0.69314718055994530941 // ln(2)
|
|
#define M_LN10 2.30258509299404568402 // ln(10)
|
|
#define M_PI 3.14159265358979323846 // pi
|
|
#define M_PI_2 1.57079632679489661923 // pi/2
|
|
#define M_PI_4 0.78539816339744830961 // pi/4
|
|
#define M_1_PI 0.31830988618379067153 // 1/pi
|
|
#define M_2_PI 0.63661977236758134307 // 2/pi
|
|
#define M_SQRT2 1.41421356237309504880 // sqrt(2)
|
|
#define M_SQRT1_2 0.70710678118654752440 // 1/sqrt(2)
|
|
|
|
// TODO:
|
|
#define NAN (__builtin_inff())
|
|
#define INFINITY (__builtin_nanf(""))
|
|
|
|
// Absolute value
|
|
int abs(int n);
|
|
double fabs(double n);
|
|
|
|
// Exponential & logarithmic
|
|
double exp(double x);
|
|
double exp2(double x);
|
|
double log(double x);
|
|
double log2(double x);
|
|
double log10(double x);
|
|
double logn(double x, double n);
|
|
|
|
// Power
|
|
double sqrt(double x);
|
|
double cbrt(double x);
|
|
double hypot(double x, double y);
|
|
double pow(double base, double expn);
|
|
|
|
// Trigonometric
|
|
double sin(double x);
|
|
double cos(double x);
|
|
double tan(double x);
|
|
double asin(double x);
|
|
double acos(double x);
|
|
double atan(double x);
|
|
double atan2(double y, double x);
|
|
|
|
// Hyperbolic
|
|
double sinh(double x);
|
|
double cosh(double x);
|
|
double tanh(double x);
|
|
|
|
// Rounding & remainder
|
|
double floor(double x);
|
|
double ceil(double x);
|
|
double round(double x);
|
|
double trunc(double x);
|
|
double fmod(double x, double y);
|
|
double modf(double x, double* iptr);
|
|
|
|
// Error handling
|
|
double nan(const char* tagp);
|
|
double inf();
|
|
int isfinite(double x);
|
|
int isinf(double x);
|
|
int isnan(double x);
|
|
|
|
#endif
|