Arduino - Biblioteca de matemáticas
La biblioteca Arduino Math (math.h) incluye una serie de funciones matemáticas útiles para manipular números de punto flotante.
Macros de biblioteca
A continuación se muestran las macros definidas en el encabezado math.h:
Macros | Valor | Descripción |
---|---|---|
YO | 2.7182818284590452354 | La constante e. |
M_LOG2E |
1.4426950408889634074 / * log_2 e * / |
El logaritmo de la e en base 2 |
M_1_PI | 0.31830988618379067154 / * 1 / pi * / |
La constante 1 / pi |
M_2_PI |
0.63661977236758134308 / * 2 / pi * / |
La constante 2 / pi |
M_2_SQRTPI |
1.12837916709551257390 / * 2 / sqrt (pi) * / |
La constante 2 / sqrt (pi) |
M_LN10 | 2.30258509299404568402 / * log_e 10 * / |
El logaritmo natural de 10 |
M_LN2 | 0.69314718055994530942 / * log_e 2 * / |
El logaritmo natural del 2 |
M_LOG10E | 0.43429448190325182765 / * log_10 e * / |
El logaritmo de la e en base 10 |
M_PI | 3.14159265358979323846 /* Pi */ |
La constante pi |
M_PI_2 | 3.3V1.57079632679489661923 / * pi / 2 * / |
La constante pi / 2 |
M_PI_4 | 0,78539816339744830962 / * pi / 4 * / |
La constante pi / 4 |
M_SQRT1_2 | 0,70710678118654752440 / * 1 / raíz cuadrada (2) * / |
La constante 1 / sqrt (2) |
M_SQRT2 | 1.41421356237309504880 / * raíz cuadrada (2) * / |
La raíz cuadrada de 2 |
acosf | - | El alias de la función acos () |
asinf | - | El alias de la función asin () |
atan2f | - | El alias de la función atan2 () |
cbrtf | - | El alias de la función cbrt () |
ceilf | - | El alias de la función ceil () |
copysignf | - | El alias de la función copysign () |
coshf | - | El alias de la función cosh () |
expf | - | El alias de la función exp () |
fabsf | - | El alias de la función fabs () |
fdimf | - | El alias de la función fdim () |
pisof | - | El alias de la función floor () |
fmaxf | - | El alias de la función fmax () |
fminf | - | El alias de la función fmin () |
fmodf | - | El alias de la función fmod () |
frexpf | - | El alias de la función frexp () |
hipotf | - | El alias de la función hypot () |
INFINITO | - | INFINITY constante |
isfinitef | - | El alias de la función isfinite () |
isinff | - | El alias de la función isinf () |
isnanf | - | El alias de la función isnan () |
ldexpf | - | El alias de la función ldexp () |
log10f | - | El alias de la función log10 () |
logf | - | El alias de la función log () |
lrintf | - | El alias de la función lrint () |
lroundf | - | El alias de la función lround () |
Funciones de biblioteca
Las siguientes funciones están definidas en el encabezado math.h -
S.No. | Función y descripción de la biblioteca |
---|---|
1 |
double acos (double __x) La función acos () calcula el valor principal del arco coseno de __x. El valor devuelto está en el rango [0, pi] radianes. Se produce un error de dominio para argumentos que no se encuentran en el rango [-1, +1]. |
2 |
double asin (double __x) La función asin () calcula el valor principal del arco seno de __x. El valor devuelto está en el rango [-pi / 2, pi / 2] radianes. Se produce un error de dominio para argumentos que no se encuentran en el rango [-1, +1]. |
3 |
double atan (double __x) La función atan () calcula el valor principal del arco tangente de __x. El valor devuelto está en el rango [-pi / 2, pi / 2] radianes. |
4 |
double atan2 (double __y, double __x) La función atan2 () calcula el valor principal del arco tangente de __y / __x, usando los signos de ambos argumentos para determinar el cuadrante del valor de retorno. El valor devuelto está en el rango [-pi, + pi] radianes. |
5 |
double cbrt (double __x) La función cbrt () devuelve la raíz cúbica de __x. |
6 |
double ceil (double __x) La función ceil () devuelve el valor integral más pequeño mayor o igual que __x, expresado como un número de punto flotante. |
7 |
static double copysign (double __x, double __y) La función copysign () devuelve __x pero con el signo de __y. Funcionan incluso si __xo __y son NaN o cero. |
8 |
double cos(double __x) La función cos () devuelve el coseno de __x, medido en radianes. |
9 |
double cosh (double __x) La función cosh () devuelve el coseno hiperbólico de __x. |
10 |
double exp (double __x) La función exp () devuelve el valor exponencial de __x. |
11 |
double fabs (double __x) La función fabs () calcula el valor absoluto de un número de coma flotante __x. |
12 |
double fdim (double __x, double __y) La función fdim () devuelve max (__ x - __y, 0). Si __xo __y o ambos son NaN, se devuelve NaN. |
13 |
double floor (double __x) La función floor () devuelve el mayor valor integral menor o igual que __x, expresado como un número de coma flotante. |
14 |
double fma (double __x, double __y, double __z) La función fma () realiza sumar y multiplicar en coma flotante. Esta es la operación (__x * __y) + __z, pero el resultado intermedio no se redondea al tipo de destino. A veces, esto puede mejorar la precisión de un cálculo. |
15 |
double fmax (double __x, double __y) La función fmax () devuelve el mayor de los dos valores __x y __y. Si un argumento es NaN, se devuelve el otro argumento. Si ambos argumentos son NaN, se devuelve NaN. |
dieciséis |
double fmin (double __x, double __y) La función fmin () devuelve el menor de los dos valores __x y __y. Si un argumento es NaN, se devuelve el otro argumento. Si ambos argumentos son NaN, se devuelve NaN. |
17 |
double fmod (double __x, double__y) La función fmod () devuelve el resto de coma flotante de __x / __y. |
18 |
double frexp (double __x, int * __pexp) La función frexp () divide un número de punto flotante en una fracción normalizada y una potencia integral de 2. Almacena el entero en el objeto int apuntado por __pexp. Si __x es un número de punto flotante normal, la función frexp () devuelve el valor v, tal que v tiene una magnitud en el intervalo [1/2, 1) o cero, y __x es igual a v por 2 elevado a la potencia __pexp. Si __x es cero, ambas partes del resultado son cero. Si __x no es un número finito, frexp () devuelve __x como está y almacena 0 por __pexp. Note - Esta implementación permite un puntero cero como directiva para omitir el almacenamiento del exponente. |
19 |
double hypot (double __x, double__y) La función hypot () devuelve sqrt (__ x * __ x + __y * __ y). Ésta es la longitud de la hipotenusa de un triángulo rectángulo con lados de longitud __x y __y, o la distancia del punto (__x, __y) desde el origen. Usar esta función en lugar de la fórmula directa es prudente, ya que el error es mucho menor. Sin subdesbordamiento con __x y __y pequeños. Sin desbordamiento si el resultado está dentro del rango. |
20 |
static int isfinite (double __x) La función isfinite () devuelve un valor distinto de cero si __x es finito: ni más ni menos infinito, y no NaN. |
21 |
int isinf (double __x) La función isinf () devuelve 1 si el argumento __x es infinito positivo, -1 si __x es infinito negativo y 0 en caso contrario. Note - GCC 4.3 puede reemplazar esta función con un código en línea que devuelve el valor 1 para ambos infinitos (error gcc # 35509). |
22 |
int isnan (double __x) La función isnan () devuelve 1 si el argumento __x representa un "no-un-número" (NaN) objeto, de lo contrario 0. |
23 |
double ldexp (double __x, int __exp ) La función ldexp () multiplica un número de punto flotante por una potencia integral de 2. Devuelve el valor de __x por 2 elevado a la potencia __exp. |
24 |
double log (double __x) La función log () devuelve el logaritmo natural del argumento __x. |
25 |
double log10(double __x) La función log10 () devuelve el logaritmo del argumento __x en base 10. |
26 |
long lrint (double __x) La función lrint () redondea __x al entero más cercano, redondeando los casos intermedios a la dirección del entero par. (Es decir, los valores de 1,5 y 2,5 se redondean a 2). Esta función es similar a la función rint (), pero difiere en el tipo de valor de retorno y en que es posible un desbordamiento. Returns El valor entero largo redondeado. Si __x no es un número finito o un desbordamiento, esta realización devuelve el valor LONG_MIN (0x80000000). |
27 |
long lround (double __x) La función lround () redondea __x al número entero más cercano, pero redondea los casos a la mitad desde cero (en lugar de al número entero par más cercano). Esta función es similar a la función round (), pero difiere en el tipo de valor de retorno y en que es posible un desbordamiento. Returns El valor entero largo redondeado. Si __x no es un número finito o si fue un desbordamiento, esta realización devuelve el valor LONG_MIN (0x80000000). |
28 |
double modf (double __x, double * __iptr ) La función modf () divide el argumento __x en partes integrales y fraccionarias, cada una de las cuales tiene el mismo signo que el argumento. Almacena la parte integral como un doble en el objeto apuntado por __iptr. La función modf () devuelve la parte fraccionaria firmada de __x. Note- Esta implementación omite la escritura por puntero cero. Sin embargo, GCC 4.3 puede reemplazar esta función con un código en línea que no permite usar la dirección NULL para evitar el almacenamiento. |
29 |
float modff (float __x, float * __iptr) El alias de modf (). |
30 |
double pow (double __x, double __y) La función pow () devuelve el valor de __x al exponente __y. |
31 |
double round (double __x) La función round () redondea __x al entero más cercano, pero redondea a la mitad de los casos desde cero (en lugar de al entero par más cercano). El desbordamiento es imposible. Returns El valor redondeado. Si __x es una integral o infinita, se devuelve __x. Si __x esNaN, luego NaN es regresado. |
32 |
int signbit (double __x) La función signbit () devuelve un valor distinto de cero si el valor de __x tiene su bit de signo establecido. Esto no es lo mismo que `__x <0.0 ', porque el punto flotante IEEE 754 permite firmar cero. La comparación '-0.0 <0.0' es falsa, pero 'signbit (-0.0)' devolverá un valor distinto de cero. |
33 |
double sin (double __x) La función sin () devuelve el seno de __x, medido en radianes. |
34 |
double sinh (double __x) La función sinh () devuelve el seno hiperbólico de __x. |
35 |
double sqrt (double __x) La función sqrt () devuelve la raíz cuadrada no negativa de __x. |
36 |
double square (double __x) La función cuadrado () devuelve __x * __x. Note - Esta función no pertenece a la definición estándar de C. |
37 |
double tan (double __x) La función tan () devuelve la tangente de __x, medida en radianes. |
38 |
double tanh ( double __x) La función tanh () devuelve la tangente hiperbólica de __x. |
39 |
double trunc (double __x) La función trunc () redondea __x al número entero más cercano que no sea mayor en valor absoluto. |
Ejemplo
El siguiente ejemplo muestra cómo utilizar las funciones de la biblioteca math.h más comunes:
double double__x = 45.45 ;
double double__y = 30.20 ;
void setup() {
Serial.begin(9600);
Serial.print("cos num = ");
Serial.println (cos (double__x) ); // returns cosine of x
Serial.print("absolute value of num = ");
Serial.println (fabs (double__x) ); // absolute value of a float
Serial.print("floating point modulo = ");
Serial.println (fmod (double__x, double__y)); // floating point modulo
Serial.print("sine of num = ");
Serial.println (sin (double__x) ) ;// returns sine of x
Serial.print("square root of num : ");
Serial.println ( sqrt (double__x) );// returns square root of x
Serial.print("tangent of num : ");
Serial.println ( tan (double__x) ); // returns tangent of x
Serial.print("exponential value of num : ");
Serial.println ( exp (double__x) ); // function returns the exponential value of x.
Serial.print("cos num : ");
Serial.println (atan (double__x) ); // arc tangent of x
Serial.print("tangent of num : ");
Serial.println (atan2 (double__y, double__x) );// arc tangent of y/x
Serial.print("arc tangent of num : ");
Serial.println (log (double__x) ) ; // natural logarithm of x
Serial.print("cos num : ");
Serial.println ( log10 (double__x)); // logarithm of x to base 10.
Serial.print("logarithm of num to base 10 : ");
Serial.println (pow (double__x, double__y) );// x to power of y
Serial.print("power of num : ");
Serial.println (square (double__x)); // square of x
}
void loop() {
}
Resultado
cos num = 0.10
absolute value of num = 45.45
floating point modulo =15.25
sine of num = 0.99
square root of num : 6.74
tangent of num : 9.67
exponential value of num : ovf
cos num : 1.55
tangent of num : 0.59
arc tangent of num : 3.82
cos num : 1.66
logarithm of num to base 10 : inf
power of num : 2065.70