Arduino - Biblioteca Matemática
A biblioteca Arduino Math (math.h) inclui uma série de funções matemáticas úteis para manipular números de ponto flutuante.
Macros de biblioteca
A seguir estão as macros definidas no cabeçalho math.h -
Macros | Valor | Descrição |
---|---|---|
MIM | 2.7182818284590452354 | A constante e. |
M_LOG2E |
1.4426950408889634074 / * log_2 e * / |
O logaritmo do e para a base 2 |
M_1_PI | 0,31830988618379067154 / * 1 / pi * / |
A constante 1 / pi |
M_2_PI |
0,63661977236758134308 / * 2 / pi * / |
A constante 2 / pi |
M_2_SQRTPI |
1.12837916709551257390 / * 2 / sqrt (pi) * / |
A constante 2 / sqrt (pi) |
M_LN10 | 2,30258509299404568402 / * log_e 10 * / |
O logaritmo natural do 10 |
M_LN2 | 0,69314718055994530942 / * log_e 2 * / |
O logaritmo natural do 2 |
M_LOG10E | 0,43429448190325182765 / * log_10 e * / |
O logaritmo do e para a base 10 |
M_PI | 3,14159265358979323846 / * pi * / |
O pi constante |
M_PI_2 | 3.3V1.57079632679489661923 / * pi / 2 * / |
A constante pi / 2 |
M_PI_4 | 0,78539816339744830962 / * pi / 4 * / |
A constante pi / 4 |
M_SQRT1_2 | 0,70710678118654752440 / * 1 / sqrt (2) * / |
A constante 1 / sqrt (2) |
M_SQRT2 | 1.41421356237309504880 / * sqrt (2) * / |
A raiz quadrada de 2 |
acosf | - | O alias da função acos () |
asinf | - | O alias para a função asin () |
atan2f | - | O alias da função atan2 () |
cbrtf | - | O alias da função cbrt () |
Ceilf | - | O alias para a função ceil () |
copysignf | - | O alias da função copysign () |
Coshf | - | O alias da função cosh () |
expf | - | O alias da função exp () |
fabsf | - | O alias da função fabs () |
fdimf | - | O alias da função fdim () |
floorf | - | O alias da função floor () |
fmaxf | - | O alias da função fmax () |
fminf | - | O alias da função fmin () |
fmodf | - | O alias da função fmod () |
frexpf | - | O alias da função frexp () |
hipotf | - | O alias para a função hypot () |
INFINIDADE | - | INFINITY constante |
isfinitef | - | O alias da função isfinite () |
isinff | - | O alias da função isinf () |
isnanf | - | O alias da função isnan () |
ldexpf | - | O alias da função ldexp () |
log10f | - | O alias para a função log10 () |
logf | - | O alias da função log () |
lrintf | - | O alias da função lrint () |
lroundf | - | O alias da função lround () |
Funções de biblioteca
As seguintes funções são definidas no cabeçalho math.h -
S.No. | Função e descrição da biblioteca |
---|---|
1 |
double acos (double __x) A função acos () calcula o valor principal do arco cosseno de __x. O valor retornado está na faixa [0, pi] radianos. Um erro de domínio ocorre para argumentos fora do intervalo [-1, +1]. |
2 |
double asin (double __x) A função asin () calcula o valor principal do arco seno de __x. O valor retornado está no intervalo [-pi / 2, pi / 2] radianos. Um erro de domínio ocorre para argumentos fora do intervalo [-1, +1]. |
3 |
double atan (double __x) A função atan () calcula o valor principal do arco tangente de __x. O valor retornado está no intervalo [-pi / 2, pi / 2] radianos. |
4 |
double atan2 (double __y, double __x) A função atan2 () calcula o valor principal do arco tangente de __y / __x, usando os sinais de ambos os argumentos para determinar o quadrante do valor de retorno. O valor retornado está no intervalo [-pi, + pi] radianos. |
5 |
double cbrt (double __x) A função cbrt () retorna a raiz cúbica de __x. |
6 |
double ceil (double __x) A função ceil () retorna o menor valor integral maior ou igual a __x, expresso como um número de ponto flutuante. |
7 |
static double copysign (double __x, double __y) A função copysign () retorna __x, mas com o sinal de __y. Eles funcionam mesmo se __x ou __y forem NaN ou zero. |
8 |
double cos(double __x) A função cos () retorna o cosseno de __x, medido em radianos. |
9 |
double cosh (double __x) A função cosh () retorna o cosseno hiperbólico de __x. |
10 |
double exp (double __x) A função exp () retorna o valor exponencial de __x. |
11 |
double fabs (double __x) A função fabs () calcula o valor absoluto de um número de ponto flutuante __x. |
12 |
double fdim (double __x, double __y) A função fdim () retorna max (__ x - __y, 0). Se __x ou __y ou ambos forem NaN, NaN será retornado. |
13 |
double floor (double __x) A função floor () retorna o maior valor integral menor ou igual a __x, expresso como um número de ponto flutuante. |
14 |
double fma (double __x, double __y, double __z) A função fma () executa multiplicação-adição de ponto flutuante. Esta é a operação (__x * __y) + __z, mas o resultado intermediário não é arredondado para o tipo de destino. Às vezes, isso pode melhorar a precisão de um cálculo. |
15 |
double fmax (double __x, double __y) A função fmax () retorna o maior dos dois valores __x e __y. Se um argumento for NaN, o outro argumento será retornado. Se ambos os argumentos forem NaN, NaN será retornado. |
16 |
double fmin (double __x, double __y) A função fmin () retorna o menor dos dois valores __x e __y. Se um argumento for NaN, o outro argumento será retornado. Se ambos os argumentos forem NaN, NaN será retornado. |
17 |
double fmod (double __x, double__y) A função fmod () retorna o resto de ponto flutuante de __x / __y. |
18 |
double frexp (double __x, int * __pexp) A função frexp () divide um número de ponto flutuante em uma fração normalizada e uma potência integral de 2. Ela armazena o inteiro no objeto int apontado por __pexp. Se __x é um número de ponto flutuante normal, a função frexp () retorna o valor v, de modo que v tenha uma magnitude no intervalo [1/2, 1) ou zero, e __x é igual a v vezes 2 elevado à potência __pexp. Se __x for zero, ambas as partes do resultado serão zero. Se __x não for um número finito, o frexp () retorna __x como está e armazena 0 por __pexp. Note - Esta implementação permite um ponteiro zero como uma diretiva para ignorar o armazenamento do expoente. |
19 |
double hypot (double __x, double__y) A função hypot () retorna sqrt (__ x * __ x + __y * __ y). Este é o comprimento da hipotenusa de um triângulo retângulo com lados de comprimento __x e __y, ou a distância do ponto (__x, __y) da origem. Usar esta função em vez da fórmula direta é sábio, pois o erro é muito menor. Sem estouro negativo com __x e __y pequenos. Sem estouro se o resultado estiver dentro do intervalo. |
20 |
static int isfinite (double __x) A função isfinite () retorna um valor diferente de zero se __x for finito: não mais ou menos infinito, e não NaN. |
21 |
int isinf (double __x) A função isinf () retorna 1 se o argumento __x for infinito positivo, -1 se __x for infinito negativo e 0 caso contrário. Note - O GCC 4.3 pode substituir esta função por código embutido que retorna o valor 1 para ambos os infinitos (bug do gcc # 35509). |
22 |
int isnan (double __x) A função isnan () retorna 1 se o argumento __x representa um "não-um-número" (NaN) objeto, caso contrário, 0. |
23 |
double ldexp (double __x, int __exp ) A função ldexp () multiplica um número de ponto flutuante por uma potência integral de 2. Ela retorna o valor de __x vezes 2 elevado à potência __exp. |
24 |
double log (double __x) A função log () retorna o logaritmo natural do argumento __x. |
25 |
double log10(double __x) A função log10 () retorna o logaritmo do argumento __x para a base 10. |
26 |
long lrint (double __x) A função lrint () arredonda __x para o inteiro mais próximo, arredondando os casos intermediários para a direção do inteiro par. (Isso é 1,5 e 2,5 valores são arredondados para 2). Esta função é semelhante à função rint (), mas difere no tipo de valor de retorno e em que um estouro é possível. Returns O valor inteiro longo arredondado. Se __x não for um número finito ou um estouro, essa realização retornará o valor LONG_MIN (0x80000000). |
27 |
long lround (double __x) A função lround () arredonda __x para o inteiro mais próximo, mas arredonda os casos intermediários para longe de zero (em vez de para o inteiro par mais próximo). Esta função é semelhante à função round (), mas difere no tipo de valor de retorno e em que um estouro é possível. Returns O valor inteiro longo arredondado. Se __x não for um número finito ou um estouro for, essa realização retornará o valor LONG_MIN (0x80000000). |
28 |
double modf (double __x, double * __iptr ) A função modf () divide o argumento __x em partes inteiras e fracionárias, cada uma com o mesmo sinal do argumento. Ele armazena a parte integral como um duplo no objeto apontado por __iptr. A função modf () retorna a parte fracionária com sinal de __x. Note- Esta implementação pula a escrita pelo ponteiro zero. No entanto, o GCC 4.3 pode substituir esta função por código embutido que não permite o uso de endereço NULL para evitar o armazenamento. |
29 |
float modff (float __x, float * __iptr) O alias para modf (). |
30 |
double pow (double __x, double __y) A função pow () retorna o valor de __x para o expoente __y. |
31 |
double round (double __x) A função round () arredonda __x para o inteiro mais próximo, mas arredonda os casos intermediários para longe de zero (em vez de para o inteiro par mais próximo). O estouro é impossível. Returns O valor arredondado. Se __x for integral ou infinito, o próprio __x será retornado. Se __x forNaN, então NaN é devolvido. |
32 |
int signbit (double __x) A função signbit () retorna um valor diferente de zero se o valor de __x tiver seu bit de sinal definido. Isso não é o mesmo que `__x <0,0 ', porque o ponto flutuante IEEE 754 permite que zero seja assinado. A comparação `-0,0 <0,0 'é falsa, mas` signbit (-0,0)' retornará um valor diferente de zero. |
33 |
double sin (double __x) A função sin () retorna o seno de __x, medido em radianos. |
34 |
double sinh (double __x) A função sinh () retorna o seno hiperbólico de __x. |
35 |
double sqrt (double __x) A função sqrt () retorna a raiz quadrada não negativa de __x. |
36 |
double square (double __x) A função square () retorna __x * __x. Note - Esta função não pertence à definição padrão C. |
37 |
double tan (double __x) A função tan () retorna a tangente de __x, medida em radianos. |
38 |
double tanh ( double __x) A função tanh () retorna a tangente hiperbólica de __x. |
39 |
double trunc (double __x) A função trunc () arredonda __x para o inteiro mais próximo não maior em valor absoluto. |
Exemplo
O exemplo a seguir mostra como usar as funções mais comuns da biblioteca math.h -
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