Copyright HébergementWebs.com - License GPL

Arduino - Bibliothèque de mathématiques

Tutoriel arduino   2020-11-16 18:36:16

Arduino - Bibliothèque de mathématiques La bibliothèque de mathématiques Arduino (math.h) comprend un certain nombre de mathématiques utiles fonctions pour manipuler les nombres à virgule flottante. Macros de bibliothèque Voici les macros définies dans l"en-tête math.h - Voici la liste des macros définies dans l"en-tête math. h Macros Valeur Deion M_E 2.7182818284590452354 La constante e. M_LOG2E 1.4426950408889634074 / * log_2 e * / Le logarithme du 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 * / Le logarithme naturel du 10 M_LN2 0.69314718055994530942 / * log_e 2 * / Le logarithme naturel des 2 M_LO G10E 0.43429448190325182765 / * log_10 e * / Le logarithme du e à la 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 / sqrt (2) * / La constante 1 / sqrt (2) M_SQRT2 1.41421356237309504880 / * sqrt (2) * / Le carré e racine de 2 acosf - L"alias de la fonction acos () asinf - L"alias de la fonction asin () atan2f - L"alias de la fonction atan2 () cbrtf - L"alias de la fonction cbrt () ceilf - L"alias de la fonction ceil () copysignf - L"alias de la fonction copysign () coshf - L"alias de la fonction cosh () expf - L"alias de la fonction exp () fabsf - L"alias de la fonction fabs () fdimf - L"alias de la fonction fdim () floorf - L"alias de la fonction floor () fmaxf - L"alias de la fonction fmax () fminf - L"alias de la fonction fmin () fmodf - L"alias pour Fonction fmod () frexpf - L"alias fo r fonction frexp () hypotf - L"alias de la fonction hypot () INFINITY - Constante INFINITY isfinitef - L"alias de la fonction isfinite () isinff - L"alias de la fonction isinf () isnanf - L"alias pour la fonction isnan () ldexpf - L"alias de la fonction ldexp () log10f - L"alias de la fonction log10 () logf - L"alias de la fonction log () lrintf - L"alias de lrint () function lroundf - L"alias de la fonction lround () Fonctions de la bibliothèque Les fonctions suivantes sont définies dans l"en-tête math.h - Ci-dessous la liste des fonctions sont définies dans l"en-tête math.h S.No. Fonction et deion de la bibliothèque 1 double acos (double __x) La fonction acos () calcule la valeur principale de l"arc cosinus de __x. La valeur renvoyée est dans l"intervalle [0, pi] radians. Une erreur de domaine se produit pour les arguments qui ne sont pas dans l"intervalle [-1, +1]. 2 double asin (double __x) La fonction asin () calcule la valeur principale de l"arc sinus de __x. La valeur renvoyée est dans la plage [-pi / 2, pi / 2] radians. Une erreur de domaine se produit pour les arguments qui ne sont pas dans la plage [-1, +1]. 3 double atan (double __x) La fonction atan () calcule la valeur principale de l"arc tangent de __x. La valeur renvoyée est dans la plage [-pi / 2, pi / 2] radians. 4 double atan2 (double __y, double __x) La fonction atan2 () calcule le valeur principale de l"arc tangent de __y / __x, en utilisant les signes des deux arguments pour déterminer le quadrant de la valeur renvoyée. La valeur renvoyée est comprise dans l"intervalle [-pi, + pi] radians. 5 double cbrt (double __x) La fonction cbrt () renvoie la racine cubique de __x. 6 double plafond (double __x) La fonction ceil () renvoie la plus petite valeur intégrale supérieure ou égale à __x, exprimée sous forme de nombre à virgule flottante. 7 double copie statique (double __x, double __y) La fonction copysign () renvoie __x mais avec le signe __y. Ils fonctionnent même si __x ou __y sont NaN ou zéro. 8 double cos (double __x) La fonction cos () renvoie le cosinus de __x, mesuré en radians. 9 double cosh (double __x) La fonction cosh () renvoie le cosinus hyperbolique de __x. 10 double exp (double __x) La fonction exp () renvoie la valeur exponentielle de __x. 11 double fabs (double __x) La fonction fabs () calcule la valeur absolue d"un nombre à virgule flottante __x. 12 double fdim (double __x, double __y) La fonction fdim () renvoie max (__ x - __y, 0). Si __x ou __y ou les deux sont NaN, NaN est renvoyé. 13 double floor (double __x) La fonction floor () renvoie la plus grande valeur intégrale inférieure ou égale à __x, exprimée en nombre à virgule flottante. 14 double fma (double __x, double __y, double __z) La fonction fma () effectue un flottement- point multiply-add. Il s"agit de l"opération (__x * __y) + __z, mais le résultat intermédiaire n"est pas arrondi au type de destination. Cela peut parfois améliorer la précision d"un calcul. 15 double fmax (double __x, double __y) La fonction fmax () renvoie le supérieur des deux valeurs __x et __y. Si un argument est NaN, l"autre argument est renvoyé. Si les deux arguments sont NaN, NaN est renvoyé. td = "alignement vertical: milieu; text-align: ; "> 16 double fmin (double __x, double __y) La fonction fmin () renvoie le la moindre des deux valeurs __x et __y. Si un argument est NaN, l"autre argument est renvoyé. Si les deux arguments sont NaN, NaN est renvoyé. td = "alignement vertical: milieu; text-align: ; "> 17 double fmod (double __x, double__y) La fonction fmod () renvoie le flottant -point reste de __x / __y. 18 double frexp (double __x, int * __pexp) La fonction frexp () est interrompue un nombre à virgule flottante en une fraction normalisée et une puissance intégrale de 2. Elle stocke l"entier dans l"objet int pointé par __pexp. Si __x est un nombre à virgule flottante normal, la fonction frexp () renvoie la valeur v, telle que v a une grandeur dans l"intervalle [1/2, 1) ou zéro, et __x est égal à v fois 2 élevé à la puissance __pexp. Si __x est égal à zéro, les deux parties du résultat sont nulles. Si __x n"est pas un nombre fini, la fonction frexp () renvoie __x tel quel et stocke 0 par __pexp. Remarque - Cette implémentation permet à un pointeur zéro comme directive d"ignorer un stockage de l"exposant. 19 double hypot (double __x, double__y) La fonction hypot () renvoie sqrt (__ x * __ x + __y * __ y). C"est la longueur de l"hypoténuse d"un triangle rectangle avec des côtés de longueur __x et __y, ou la distance du point (__x, __y) de l"origine. Il est judicieux d"utiliser cette fonction au lieu de la formule directe, car l"erreur est beaucoup plus petite. Pas de sous-débordement avec les petits __x et __y. Pas de dépassement si le résultat est dans la plage. 20 static int isfinite (double __x) La fonction isfinite () renvoie une valeur non nulle si __x est fini: pas plus ou moins l"infini, et non NaN . 21 int isinf (double __x) La fonction isinf () renvoie 1 si l"argument __x est l"infini positif, -1 si __x est l"infini négatif, et 0 sinon . Remarque - Le GCC 4.3 peut remplacer cette fonction par du code en ligne qui renvoie la valeur 1 pour les deux infinis (bogue gcc # 35509). 22 int isnan (double __x) La fonction isnan () renvoie 1 si l"argument __x représente un objet "not-a-number " ( NaN ), sinon 0. 23 double ldexp (double __x, int __exp) La fonction ldexp () multiplie un nombre à virgule flottante par une puissance intégrale de 2. Elle renvoie la valeur de __x fois 2 élevée à la puissance __exp . 24 double log (double __x) La fonction log () renvoie le logarithme naturel de argument __x. 25 double log10 (double __x) La fonction log10 () renvoie le logarithme de l"argument __x à la base 10. 2 6 long lrint (double __x) La fonction lrint () arrondit __x à l"entier le plus proche, arrondissant les observations à mi-chemin à la paire direction entière. (Autrement dit, les valeurs de 1,5 et 2,5 sont arrondies à 2). Cette fonction est similaire à la fonction rint (), mais elle diffère par le type de valeur de retour et en ce qu"un dépassement est possible. Retours L"arrondi valeur entière longue. Si __x n"est pas un nombre fini ou un débordement, cette réalisation renvoie la valeur LONG_MIN (0x80000000). 27 long lround (double __x) La fonction lround () arrondit __x à l"entier le plus proche, mais arrondit à mi-chemin les observations à partir de zéro (au lieu de l"entier pair le plus proche). Cette fonction est similaire à la fonction round (), mais elle diffère par le type de valeur de retour et en ce qu"un dépassement est possible. Retours L"arrondi valeur entière longue. Si __x n"est pas un nombre fini ou si un dépassement de capacité l"était, cette réalisation renvoie la valeur LONG_MIN (0x80000000). 28 double modf (double __x, double * __iptr) La fonction modf () rompt le l"argument __x en parties intégrales et fractionnaires, chacune ayant le même signe que l"argument. Elle stocke la partie intégrale sous forme de double dans l"objet pointé par __iptr. La fonction modf () renvoie la partie fractionnaire signée de __x. Remarque - Cette implémentation saute l"écriture par pointeur zéro. Cependant, le GCC 4.3 peut remplacer cette fonction par du code en ligne qui ne permet pas d"utiliser l"adresse NULL pour éviter de stocker. 29 float modff (float __x, float * __iptr) L"alias de modf (). 30 double pow (double __x, double __y) La fonction pow () renvoie la valeur de __x à l"exposant __y. 31 double round (double __x) La fonction round () arrondit __x à l"entier le plus proche, mais arrondit à mi-chemin les observations à partir de zéro (au lieu de entier pair le plus proche). Le dépassement est impossible. Renvoie La valeur arrondie. Si __x est une intégrale ou infinie, __x lui-même est renvoyé. Si __x est NaN , alors NaN est renvoyé. 32 int signbit (double __x) La fonction signbit () renvoie une valeur différente de zéro si la valeur de __x a son bit de signe défini. Ce n"est pas la même chose que `__x 0 ", car la virgule flottante IEEE 754 permet à zéro d"être signé. La comparaison `-0.0 0 "est fausse, mais` signbit (-0.0) " renverra une valeur différente de zéro. 33 double sin (double __x) La fonction sin () renvoie le sinus de __x, mesuré en radians. 34 double sinh (double __x) La fonction sinh () renvoie le sinus hyperbolique de __x. 35 double sqrt (double __x) La fonction sqrt () renvoie la racine carrée non négative de __x. 36 double carré (double __x) La fonction square () renvoie __x * __x. Remarque - Cette fonction n"appartient pas à la définition standard C. 37 double tan (d ouble __x) La fonction tan () renvoie la tangente de __x, mesurée en radians. 38 double tanh (double __x) La fonction tanh () renvoie la tangente hyperbolique de __x. 39 double trunc (double __x) La fonction trunc () arrondit __x à l"entier le plus proche non supérieur en absolu value. Exemple L"exemple suivant montre comment utiliser les mathématiques les plus courantes. fonctions de la bibliothèque - double double__x = 45.45; double double__y = 30,20; void setup () {Serial.begin (9600); Serial.print ( "cos num = "); Serial.println (cos (double__x)); // renvoie le cosinus de x Serial.print ( "valeur absolue de num = "); Serial.println (fabs (double__x)); // valeur absolue d"un float Serial.print ( "flottant modulo = "); Serial.println (fmod (double__x, double__y)); // modulo à virgule flottante Serial.print ( "sinus of num = "); Serial.println (sin (double__x)); // renvoie le sinus de x Serial.print ( "racine carrée de num: "); Serial.println (sqrt (double__x)); // renvoie la racine carrée de x Serial.print ( "tangente de num: "); Serial.println (tan (double__x)); // renvoie la tangente de x Serial.print ( "valeur exponentielle de num: "); Serial.println (exp (double__x)); // La fonction renvoie la valeur exponentielle de x. Serial.print ( "cos num: "); Serial.println (atan (double__x)); // arc tangente de x Serial.print ( "tangente de num: "); Serial.println (atan2 (double__y, double__x)); // arc tangente de y / x Serial.print ( "arc tangente de num: "); Serial.println (journal (double__x)); // logarithme naturel de x Serial.print ( "cos num: "); Serial.println (log10 (double__x)); // logarithme de x en base 10. Serial.print ( "logarithme de num en base 10: "); Serial.println (pow (double__x, double__y)); // x à la puissance de y Serial.print ( "power of num: "); Serial.println (carré (double__x)); // carré de x} void loop () {} Résultat cos num = 0.10 valeur absolue de num = 45.45 floatin g point modulo = 15,25 sinus de num = 0,99 racine carrée de num: 6,74 tangente de num: 9,67 valeur exponentielle de num: ovf cos num: 1,55 tangente de num: 0,59 arc tangente de num: 3,82 cos num: 1,66 logarithme de num à base 10: puissance inf de num: 2065.70