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