38 constexpr float PI = 3.14159265358979323846f;
39 constexpr float E = 2.71828182845904523536f;
47 inline float sqrt(
float value) {
53 float epsilon = 0.00001f;
54 while (x - y > epsilon) {
77 inline float cube(
float value) {
78 return value * value * value;
88 inline float power(
float base,
int exponent) {
89 if (exponent == 0)
return 1;
90 if (exponent < 0)
return 1.0f /
power(base, -exponent);
93 if (exponent % 2 == 1) result *= base;
106 inline float abs(
float value) {
107 return (value < 0) ? -value : value;
117 inline float EMax(
float a,
float b) {
118 return (a > b) ? a : b;
128 inline float EMin(
float a,
float b) {
129 return (a < b) ? a : b;
139 return (value > 0) ?
static_cast<int>(value + 0.5f) :
static_cast<int>(value - 0.5f);
149 int intValue =
static_cast<int>(value);
150 return (value < intValue) ? intValue - 1 : intValue;
159 inline float ceil(
float value) {
160 int intValue =
static_cast<int>(value);
161 return (value > intValue) ? intValue + 1 : intValue;
169 inline float fabs(
float value) {
170 return value < 0.0f ? -value : value;
179 inline float sin(
float angle) {
182 float angle_squared = angle * angle;
184 while (term > 1e-6f || term < -1e-6f) {
186 term *= -angle_squared / ((2 * n) * (2 * n + 1));
197 inline float cos(
float angle) {
198 return sin(angle +
PI / 2);
206 inline float tan(
float angle) {
207 float s =
sin(angle);
208 float c =
cos(angle);
209 return c != 0.0f ? s / c : 0.0f;
217 inline float asin(
float value) {
222 for (
int n = 1; n < 10; ++n) {
223 term *= x * x * (2 * n - 1) / ((2 * n + 1) * (2 * n));
234 inline float acos(
float value) {
235 return PI / 2 -
asin(value);
243 inline float atan(
float value) {
247 for (
int n = 0; n < 10; ++n) {
248 result += term / (2 * n + 1);
249 term *= -value * value;
259 inline float sinh(
float value) {
260 return (
exp(value) -
exp(-value)) / 2;
268 inline float cosh(
float value) {
269 return (
exp(value) +
exp(-value)) / 2;
277 inline float tanh(
float value) {
306 inline float exp(
float value) {
309 for (
int n = 1; n < 20; ++n) {
321 inline float log(
float value) {
323 if (value <= 0)
return 0;
324 float x = (value - 1) / (value + 1);
328 for (
int n = 1; n < 20; ++n) {
329 result += term / (2 * n - 1);
341 return log(value) /
log(10);
351 inline float mod(
float a,
float b) {
352 return a - b *
static_cast<int>(a / b);
362 return PI * radius * radius;
371 return 2 *
PI * radius;
381 return width * height;
391 return 2 * (width + height);
401 return 0.5f * base * height;
412 inline float distance(
float x1,
float y1,
float x2,
float y2) {
415 return sqrt(dx * dx + dy * dy);
426 inline float lerp(
float a,
float b,
float t) {
427 return a + t * (b - a);
437 for (
int i = 2; i <= n; ++i) {
451 return fabs(a - b) < epsilon;
float lerp(float a, float b, float t)
Interpola linealmente entre dos valores.
float log(float value)
Calcula el logaritmo natural de un valor.
float square(float value)
Calcula el cuadrado de un número.
float rectangleArea(float width, float height)
Calcula el área de un rectángulo dado su ancho y alto.
float fabs(float value)
Calcula el valor absoluto de un número flotante.
float tan(float angle)
Calcula la tangente de un ángulo en radianes.
float abs(float value)
Calcula el valor absoluto de un número.
float sqrt(float value)
Computes the square root using the Newton-Raphson method.
float EMin(float a, float b)
Devuelve el valor mínimo de dos números.
float circleCircumference(float radius)
Calcula la circunferencia de un círculo dado su radio.
float radians(float degrees)
Convierte grados a radianes.
float mod(float a, float b)
Calcula el módulo de dos números.
float floor(float value)
Trunca un número a su parte entera, redondeando hacia abajo.
float power(float base, int exponent)
Calcula la potencia de un número base elevado a un exponente usando el método de exponenciación rápida.
float round(float value)
Redondea un número al entero más cercano.
float cube(float value)
Calcula el cubo de un número.
float exp(float value)
Calcula la función exponencial e^x.
float log10(float value)
Calcula el logaritmo en base 10 de un valor.
float circleArea(float radius)
Calcula el área de un círculo dado su radio.
int factorial(int n)
Calcula el factorial de un número entero.
float degrees(float radians)
Convierte radianes a grados.
float tanh(float value)
Calcula la tangente hiperbólica de un valor.
float ceil(float value)
Redondea un número hacia arriba al entero más cercano.
float sinh(float value)
Calcula el seno hiperbólico de un valor.
float cosh(float value)
Calcula el coseno hiperbólico de un valor.
float sin(float angle)
Calcula el seno de un ángulo en radianes.
float triangleArea(float base, float height)
Calcula el área de un triángulo dado su base y altura.
float cos(float angle)
Calcula el coseno de un ángulo en radianes.
bool approxEqual(float a, float b, float epsilon)
Verifica si dos valores flotantes son aproximadamente iguales.
float rectanglePerimeter(float width, float height)
Calcula el perímetro de un rectángulo dado su ancho y alto.
float distance(float x1, float y1, float x2, float y2)
Calcula la distancia entre dos puntos en un plano bidimensional.
float atan(float value)
Calcula el arco tangente de un valor.
float acos(float value)
Calcula el arco coseno de un valor.
float EMax(float a, float b)
Devuelve el valor máximo de dos números.
float asin(float value)
Calcula el arco seno de un valor.