Matemáticas
Funciones y constantes matemáticas elementales.
Funciones
real | bmath_cos (...) |
real | bmath_sin (...) |
real | bmath_tan (...) |
real | bmath_acos (...) |
real | bmath_asin (...) |
real | bmath_atan2 (...) |
real | bmath_norm_angle (...) |
real | bmath_sqrt (...) |
real | bmath_isqrt (...) |
real | bmath_log (...) |
real | bmath_log10 (...) |
real | bmath_exp (...) |
real | bmath_pow (...) |
real | bmath_abs (...) |
real | bmath_max (...) |
real | bmath_min (...) |
real | bmath_clamp (...) |
real | bmath_mod (...) |
real | bmath_modf (...) |
uint32_t | bmath_prec (...) |
real | bmath_round (...) |
real | bmath_round_step (...) |
real | bmath_floor (...) |
real | bmath_ceil (...) |
void | bmath_rand_seed (...) |
real | bmath_rand (...) |
uint32_t | bmath_randi (...) |
REnv* | bmath_rand_env (...) |
void | bmath_rand_destroy (...) |
real | bmath_rand_mt (...) |
uint32_t | bmath_rand_mti (...) |
Tipos y Constantes
real | kE |
real | kLN2 |
real | kLN10 |
real | kPI |
real | kSQRT2 |
real | kSQRT3 |
real | kDEG2RAD |
real | kRAD2DEG |
real | kINFINITY |
BMath
ofrece una interfaz compacta sobre las funciones matemáticas elementales de la librería estándar de C. También define algunas de las constantes más utilizadas, como el número Pi, conversiones entre grados y radianes o raíz de 2.
- Utiliza bmath_cosf para calcular el coseno de un ángulo (wrapper sobre
cosf()
de la cstdlib). - Utiliza bmath_sqrtf para calcular la raíz cuadrada (wrapper sobre
sqrtf()
de la cstdlib).
1. Números aleatorios
BMath
incluye un generador de números pseudo-aleatorios basados en semilla. A partir de una misma semilla, la secuencia de números generados será siempre la misma. Las secuencias producidas por dos semillas diferentes serán radicalmente dispares. De ahí que se denominen pseudo-aleatorios.
- Utiliza bmath_rand_seed para establecer la semilla de números aleatorios.
- Utiliza bmath_randf para obtener un número aleatorio en coma flotante, dentro de un intervalo.
En el caso que de aplicaciones multi-hilo la esta secuencia puede variar en función del orden de ejecución de las hebras, ya que estas funciones no son re-entrantes. Deberás utilizar un "entorno" de números aleatorios para cada hilo en cuestión, en el caso que necesites asegurar siempre la misma secuencia (algoritmos deterministas).
- Utiliza bmath_rand_env para crear un entorno seguro de números aleatorios.
- Utiliza bmath_rand_mtf para obtener un número aleatorio a partir de un entorno.
kE
const real32_t kBMATH_Ef = 2.718281828459045f; const real64_t kBMATH_Ed = 2.718281828459045; const real BMath::kE;
El número de Euler.
kLN2
const real32_t kBMATH_LN2f = 0.6931471805599453f; const real64_t kBMATH_LN2d = 0.6931471805599453; const real BMath::kLN2;
El logaritmo natural de 2.
kLN10
const real32_t kBMATH_LN10f = 2.302585092994046f; const real64_t kBMATH_LN10d = 2.302585092994046; const real BMath::kLN10;
El logaritmo natural de 10.
kPI
const real32_t kBMATH_PIf = 3.141592653589793f; const real64_t kBMATH_PId = 3.141592653589793; const real BMath::kPI;
El número Pi.
kSQRT2
const real32_t kBMATH_SQRT2f = 1.414213562373095f; const real64_t kBMATH_SQRT2d = 1.414213562373095; const real BMath::kSQRT2;
Raíz cuadrada de 2.
kSQRT3
const real32_t kBMATH_SQRT3f = 1.732050807568878f; const real64_t kBMATH_SQRT3d = 1.732050807568878; const real BMath::kSQRT3;
Raíz cuadrada de 3.
kDEG2RAD
const real32_t kBMATH_DEG2RADf = 0.017453292519943f; const real64_t kBMATH_DEG2RADd = 0.017453292519943; const real BMath::kDEG2RAD;
Conversión de un grado a radianes.
kRAD2DEG
const real32_t kBMATH_RAD2DEGf = 57.2957795130823f; const real64_t kBMATH_RAD2DEGd = 57.2957795130823; const real BMath::kRAD2DEG;
Conversión de un radián a grados.
kINFINITY
const real32_t kBMATH_INFINITYf = ∞f; const real64_t kBMATH_INFINITYd = ∞; const real BMath::kINFINITY;
Infinito, representado por un valor muy grande.
bmath_cos ()
Obtiene el coseno de un ángulo.
real32_t bmath_cosf(const real32_t angle); real64_t bmath_cosd(const real64_t angle); real BMath::cos(const real angle);
angle | Ángulo en radianes. |
Retorna
El coseno del ángulo.
bmath_sin ()
Obtiene el seno de un ángulo.
real32_t bmath_sinf(const real32_t angle); real64_t bmath_sind(const real64_t angle); real BMath::sin(const real angle);
angle | Ángulo en radianes. |
Retorna
El seno del ángulo.
bmath_tan ()
Obtiene la tangente de un ángulo.
real32_t bmath_tanf(const real32_t angle); real64_t bmath_tand(const real64_t angle); real BMath::tan(const real angle);
angle | Ángulo en radianes. |
Retorna
La tangente del ángulo.
bmath_acos ()
Obtiene el arco coseno, o coseno inverso, que es el ángulo cuyo coseno es el valor.
real32_t bmath_acosf(const real32_t cos); real64_t bmath_acosd(const real64_t cos); real BMath::acos(const real cos);
cos | Coseno (-1, 1). |
Retorna
El ángulo (0, Pi).
bmath_asin ()
Obtiene el arco seno, o seno inverso, que es el ángulo cuyo seno es el valor.
real32_t bmath_asinf(const real32_t sin); real64_t bmath_asind(const real64_t sin); real BMath::asin(const real sin);
sin | Seno (-1, 1). |
Retorna
El ángulo (0, Pi).
bmath_atan2 ()
Obtiene el arco tangente, o tangente inversa. Es es el ángulo medido desde el eje X hasta la línea que contiene el origen (0, 0) y el punto con las coordenadas (x,y).
real32_t bmath_atan2f(const real32_t y, const real32_t x); real64_t bmath_atan2d(const real64_t y, const real64_t x); real BMath::atan2(const real y, const real x);
y | Coordenada Y. |
x | Coordenada X. |
Retorna
El ángulo (-Pi, Pi).
bmath_norm_angle ()
Normaliza un ángulo, es decir, retorna el mismo ángulo expresado en el rango (-Pi, Pi).
real32_t bmath_norm_anglef(const real32_t a); real64_t bmath_norm_angled(const real64_t a); real BMath::norm_angle(const real a);
a | El ángulo en radianes. |
Retorna
El ángulo (-Pi, Pi).
bmath_sqrt ()
Obtiene la raíz cuadrada de un número.
real32_t bmath_sqrtf(const real32_t value); real64_t bmath_sqrtd(const real64_t value); real BMath::sqrt(const real value);
value | El número. |
Retorna
La ráiz cuadrada.
bmath_isqrt ()
Obtiene la raíz cuadrada inversa de un número (1/sqrt).
real32_t bmath_isqrtf(const real32_t value); real64_t bmath_isqrtd(const real64_t value); real BMath::isqrt(const real value);
value | El número. |
Retorna
La raíz cuadrada inversa.
bmath_log ()
Obtiene el logaritmo natural (base e) de un número.
real32_t bmath_logf(const real32_t value); real64_t bmath_logd(const real64_t value); real BMath::log(const real value);
value | El número. |
Retorna
El logaritmo.
bmath_log10 ()
Obtiene el logaritmo en base 10 de un número.
real32_t bmath_log10f(const real32_t value); real64_t bmath_log10d(const real64_t value); real BMath::log10(const real value);
value | El número. |
Retorna
El logaritmo.
bmath_exp ()
Obtiene el número de Euler e (2.7182818) elevado a una potencia.
real32_t bmath_expf(const real32_t value); real64_t bmath_expd(const real64_t value); real BMath::exp(const real value);
value | El exponente. |
Retorna
La exponencial.
bmath_pow ()
Calcula una potencia, base
elevado a exponent
.
real32_t bmath_powf(const real32_t base, const real32_t exponent); real64_t bmath_powd(const real64_t base, const real64_t exponent); real BMath::pow(const real base, const real exponent);
base | Base. |
exponent | Exponente. |
Retorna
El resultado de la potencia.
bmath_abs ()
Obtiene el valor absoluto de un número.
real32_t bmath_absf(const real32_t value); real64_t bmath_absd(const real64_t value); real BMath::abs(const real value);
value | El número. |
Retorna
El valor absoluto.
bmath_max ()
Obtiene el máximo de dos valores.
real32_t bmath_maxf(const real32_t value1, const real32_t value2); real64_t bmath_maxd(const real64_t value1, const real64_t value2); real BMath::max(const real value1, const real value2);
value1 | Primer número. |
value2 | Segundo número. |
Retorna
El valor máximo.
bmath_min ()
Obtiene el mínimo de dos valores.
real32_t bmath_minf(const real32_t value1, const real32_t value2); real64_t bmath_mind(const real64_t value1, const real64_t value2); real BMath::min(const real value1, const real value2);
value1 | Primer número. |
value2 | Segundo número. |
Retorna
El valor mínimo.
bmath_clamp ()
Restringe un valor a un determinado rango.
real32_t bmath_clampf(const real32_t value, const real32_t min, const real32_t max); real64_t bmath_clampd(const real64_t value, const real64_t min, const real64_t max); real BMath::clamp(const real value, const real min, const real max);
value | El número. |
min | Mínimo valor del rango. |
max | Máximo valor del rango. |
Retorna
El valor acotado.
bmath_mod ()
Obtiene el módulo de dividir num/den
.
real32_t bmath_modf(const real32_t num, const real32_t den); real64_t bmath_modd(const real64_t num, const real64_t den); real BMath::mod(const real num, const real den);
num | Numerador. |
den | Denominador. |
Retorna
El módulo.
bmath_modf ()
Obtiene la parte entera y fracción de un número real.
real32_t bmath_modff(const real32_t value, real32_t *intpart); real64_t bmath_modfd(const real64_t value, real64_t *intpart); real BMath::modf(const real value, real *intpart);
value | El número. |
intpart | Obtiene la parte entera. |
Retorna
La parte fraccionaria [0,1)
.
bmath_prec ()
Obtiene el número de decimales (precisión) de un número real.
uint32_t bmath_precf(const real32_t value); uint32_t bmath_precd(const real64_t value); uint32_t BMath::prec(const real value);
value | El número. |
Retorna
El número de posiciones decimales.
bmath_round ()
Redondea un número al entero más cercano (por encima o por debajo).
real32_t bmath_roundf(const real32_t value); real64_t bmath_roundd(const real64_t value); real BMath::round(const real value);
value | El número. |
Retorna
El entero más cercano.
bmath_round_step ()
Redondea un número a la fracción más cercana.
real32_t bmath_round_stepf(const real32_t value, const real32_t step); real64_t bmath_round_stepd(const real64_t value, const real64_t step); real BMath::round_step(const real value, const real step);
value | El número. |
step | La fracción. |
Retorna
El número más cercano.
bmath_floor ()
Redondea un número al entero por debajo.
real32_t bmath_floorf(const real32_t value); real64_t bmath_floord(const real64_t value); real BMath::floor(const real value);
value | El número. |
Retorna
El mayor número entero, menor o igual que el número.
bmath_ceil ()
Redondea un número al entero por encima.
real32_t bmath_ceilf(const real32_t value); real64_t bmath_ceild(const real64_t value); real BMath::ceil(const real value);
value | El número. |
Retorna
El menor número entero, mayor o igual que el número.
bmath_rand_seed ()
Establece una nueva semilla de números aleatorios.
void bmath_rand_seed(const uint32_t seed);
seed | La nueva semilla. |
Observaciones
Cada vez que cambia la semilla, comienza una nueva secuencia de números aleatorios. Para la misma semilla, obtendremos la misma secuencia, por lo que son números pseudo-aleatorios. Semillas similares (pe. 4
, 5
) producen secuencias radicalmente diferentes. Utiliza bmath_rand_env en aplicaciones multi-hilo.
bmath_rand ()
Obtiene un número real aleatorio, dentro de un intervalo.
real32_t bmath_randf(const real32_t from, const real32_t to); real64_t bmath_randd(const real64_t from, const real64_t to); real BMath::rand(const real from, const real to);
from | El límite inferior del intervalo. |
to | El límite superior del intervalo. |
Retorna
El número aleatorio.
bmath_randi ()
Obtiene un número entero aleatorio, dentro de un intervalo.
uint32_t bmath_randi(const uint32_t from, const uint32_t to);
from | El límite inferior del intervalo. |
to | El límite superior del intervalo. |
Retorna
El número aleatorio.
bmath_rand_env ()
Crea un entorno thread-safe para números aleatorios.
REnv* bmath_rand_env(const uint32_t seed);
seed | La semilla. |
Retorna
El entorno.
bmath_rand_destroy ()
Destruye un entorno de números aleatorios.
void bmath_rand_destroy(REnv **env);
env | El entorno. Será puesto a |
bmath_rand_mt ()
Obtiene un número real aleatorio, dentro de un intervalo.
real32_t bmath_rand_mtf(REnv *env, const real32_t from, const real32_t to); real64_t bmath_rand_mtd(REnv *env, const real64_t from, const real64_t to); real BMath::rand_mt(REnv *env, const real from, const real to);
env | El entorno de números aleatorios. |
from | El límite inferior del intervalo. |
to | El límite superior del intervalo. |
Retorna
El número aleatorio.
bmath_rand_mti ()
Obtiene un número entero aleatorio, dentro de un intervalo.
uint32_t bmath_rand_mti(REnv *env, const uint32_t from, const uint32_t to);
env | El entorno de números aleatorios. |
from | El límite inferior del intervalo. |
to | El límite superior del intervalo. |
Retorna
El número aleatorio.