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