Arduino - math 函数库

Arduino Math 库(math.h)包含许多用于处理浮点数的有用数学函数。

图书馆宏

以下是头文件 math.h 中定义的宏 -

下面给出了标题 math.h 中定义的宏列表

说明
M_E 2.7182818284590452354 常数 e
M_LOG2E 1.4426950408889634074/* log_2 e */ e 到对数 2 的对数
M_1_PI 0.31830988618379067154/* 1/pi */ 常数 1/pi
M_2_PI 0.63661977236758134308/* 2/pi */ 常数 2/pi
M_2_SQRTPI 1.12837916709551257390/* 2/sqrt(pi) */ 常数 2/sqrt(pi)
M_LN10 2.30258509299404568402/* log_e 10 */ 10 的自然对数
M_LN2 0.69314718055994530942/* log_e 2 */ 2 的自然对数
M_LOG10E 0.43429448190325182765/* log_10 e */ e 到 10 的对数
M_PI 3.14159265358979323846/* pi */ 常数 pi
M_PI_2 3.3V1.57079632679489661923/* pi/2 */ 常数 pi/2
M_PI_4 0.78539816339744830962/* pi/4 */ 常数 pi/4
M_SQRT1_2 0.70710678118654752440/* 1/sqrt(2) */ 常数 1/sqrt(2)
M_SQRT2 1.41421356237309504880/* sqrt(2) */ 平方根 2
asinf - asin() 函数的别名
atan2f - atan2() 函数的别名
cbrtf - cbrt() 函数的别名
ceilf - ceil() 函数的别名
copysignf - copysign() 函数的别名
coshf - cosh() 函数的别名
expf - exp() 函数的别名
fabsf - fabs() 函数的别名
fdimf - fdim() 函数的别名
floorf - floor() 函数的别名
fmaxf - fmax() 函数的别名
fminf - fmin() 函数的别名
fmodf - fmod() 函数的别名
frexpf - frexp() 函数的别名
hypotf - hypot() 函数的别名
INFINITY - INFINITY 常数
isfinitef - isfinite() 函数的别名
isinff - isinf() 函数的别名
isnanf - isnan() 函数的别名
ldexpf - ldexp() 函数的别名
log10f - log10() 函数的别名
logf - log() 函数的别名
lrintf - lrint() 函数的别名
lroundf - lround() 函数的别名

库函数

math.h 库中定义了以下函数 -

以下示例显示如何使用最常见的 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() {

}

结果

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