Arduino-수학 라이브러리
Arduino Math 라이브러리 (math.h)에는 부동 소수점 숫자를 조작하는 데 유용한 여러 가지 수학 함수가 포함되어 있습니다.
라이브러리 매크로
다음은 헤더 math.h에 정의 된 매크로입니다-
매크로 | 값 | 기술 |
---|---|---|
나를 | 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 / * 파이 * / |
상수 파이 |
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의 제곱근 |
acosf | - | acos () 함수의 별칭 |
asinf | - | asin () 함수의 별칭 |
atan2f | - | atan2 () 함수의 별칭 |
cbrtf | - | cbrt () 함수의 별칭 |
ceilf | - | ceil () 함수의 별칭 |
copysignf | - | copysign () 함수의 별칭 |
coshf | - | cosh () 함수의 별칭 |
expf | - | exp () 함수의 별칭 |
fabsf | - | fabs () 함수의 별칭 |
fdimf | - | fdim () 함수의 별칭 |
플로어 | - | floor () 함수의 별칭 |
fmaxf | - | fmax () 함수의 별칭 |
fminf | - | fmin () 함수의 별칭 |
fmodf | - | fmod () 함수의 별칭 |
frexpf | - | frexp () 함수의 별칭 |
hypotf | - | hypot () 함수의 별칭 |
무한대 | - | INFINITY 상수 |
isfinitef | - | isfinite () 함수의 별칭 |
Isinff | - | isinf () 함수의 별칭 |
Isnanf | - | isnan () 함수의 별칭 |
ldexpf | - | ldexp () 함수의 별칭 |
log10f | - | log10 () 함수의 별칭 |
logf | - | log () 함수의 별칭 |
lrintf | - | lrint () 함수의 별칭 |
lroundf | - | lround () 함수의 별칭 |
라이브러리 기능
헤더에는 다음과 같은 기능이 정의되어 있습니다. math.h −
S. 아니. | 라이브러리 기능 및 설명 |
---|---|
1 | double acos (double __x) acos () 함수는 __x 아크 코사인의 주요 값을 계산합니다. 반환 된 값은 [0, pi] 라디안 범위에 있습니다. [-1, +1] 범위에 있지 않은 인수에 대해 도메인 오류가 발생합니다. |
2 | double asin (double __x) asin () 함수는 __x 아크 사인의 주요 값을 계산합니다. 반환 된 값은 [-pi / 2, pi / 2] 라디안 범위에 있습니다. [-1, +1] 범위에 있지 않은 인수에 대해 도메인 오류가 발생합니다. |
삼 | double atan (double __x) atan () 함수는 __x 아크 탄젠트의 주요 값을 계산합니다. 반환 된 값은 [-pi / 2, pi / 2] 라디안 범위에 있습니다. |
4 | double atan2 (double __y, double __x) atan2 () 함수는 반환 값의 사분면을 결정하기 위해 두 인수의 부호를 사용하여 __y / __x의 아크 탄젠트의 주요 값을 계산합니다. 반환 된 값은 [-pi, + pi] 라디안 범위입니다. |
5 | double cbrt (double __x) cbrt () 함수는 __x의 세제곱근을 반환합니다. |
6 | double ceil (double __x) ceil () 함수는 부동 소수점 숫자로 표현 된 __x보다 크거나 같은 가장 작은 정수 값을 반환합니다. |
7 | static double copysign (double __x, double __y) copysign () 함수는 __x를 반환하지만 부호는 __y입니다. __x 또는 __y가 NaN 또는 0 인 경우에도 작동합니다. |
8 | double cos(double __x) cos () 함수는 라디안으로 측정 된 __x의 코사인을 반환합니다. |
9 | double cosh (double __x) cosh () 함수는 __x의 쌍곡 코사인을 반환합니다. |
10 | double exp (double __x) exp () 함수는 __x의 지수 값을 반환합니다. |
11 | double fabs (double __x) fabs () 함수는 부동 소수점 숫자 __x의 절대 값을 계산합니다. |
12 | double fdim (double __x, double __y) fdim () 함수는 max (__ x-__y, 0)을 반환합니다. __x 또는 __y 또는 둘 다 NaN이면 NaN이 반환됩니다. |
13 | double floor (double __x) floor () 함수는 부동 소수점 숫자로 표현되는 __x보다 작거나 같은 가장 큰 정수 값을 반환합니다. |
14 | double fma (double __x, double __y, double __z) fma () 함수는 부동 소수점 곱하기 더하기를 수행합니다. 이것은 연산 (__x * __y) + __z이지만 중간 결과는 대상 유형으로 반올림되지 않습니다. 이것은 때때로 계산의 정밀도를 향상시킬 수 있습니다. |
15 | double fmax (double __x, double __y) fmax () 함수는 __x 및 __y 두 값 중 더 큰 값을 반환합니다. 인수가 NaN이면 다른 인수가 반환됩니다. 두 인수가 모두 NaN이면 NaN이 반환됩니다. |
16 | double fmin (double __x, double __y) fmin () 함수는 __x 및 __y 두 값 중 작은 값을 반환합니다. 인수가 NaN이면 다른 인수가 반환됩니다. 두 인수가 모두 NaN이면 NaN이 반환됩니다. |
17 | double fmod (double __x, double__y) fmod () 함수는 __x / __y의 부동 소수점 나머지를 반환합니다. |
18 | double frexp (double __x, int * __pexp) frexp () 함수는 부동 소수점 숫자를 정규화 된 분수와 2의 정수 거듭 제곱으로 나눕니다.이 함수는 __pexp가 가리키는 int 객체에 정수를 저장합니다. __x가 일반 부동 소수점 숫자 인 경우 frexp () 함수는 v 값을 반환하여 v는 간격 [1/2, 1) 또는 0의 크기를 가지며 __x는 v 곱하기 2의 __pexp 제곱과 같습니다. __x가 0이면 결과의 두 부분이 모두 0입니다. __x가 유한 수가 아니면 frexp ()는 __x를있는 그대로 반환하고 __pexp에 의해 0을 저장합니다. Note −이 구현은 지수 저장을 건너 뛰는 지시어로 제로 포인터를 허용합니다. |
19 | double hypot (double __x, double__y) hypot () 함수는 sqrt (__ x * __ x + __y * __ y)를 반환합니다. 길이가 __x 및 __y 인 직각 삼각형의 빗변의 길이 또는 원점에서 점 (__x, __y)까지의 거리입니다. 오류가 훨씬 적기 때문에 직접 공식 대신이 함수를 사용하는 것이 현명합니다. 작은 __x 및 __y로 언더 플로가 없습니다. 결과가 범위 내에 있으면 오버플로가 없습니다. |
20 | static int isfinite (double __x) isfinite () 함수는 __x가 유한 한 경우 0이 아닌 값을 반환합니다. 더하기 또는 빼기 무한대가 아닌 NaN. |
21 | int isinf (double __x) 함수 isinf ()는 인수 __x가 양의 무한대이면 1을 반환하고, __x가 음의 무한대이면 -1을, 그렇지 않으면 0을 반환합니다. Note − GCC 4.3은이 함수를 두 무한도 모두에 대해 1 값을 반환하는 인라인 코드로 대체 할 수 있습니다 (gcc 버그 # 35509). |
22 | int isnan (double __x) 함수 isnan ()은 __x 인수가 "숫자가 아님"(NaN) 개체, 그렇지 않으면 0. |
23 | double ldexp (double __x, int __exp ) ldexp () 함수는 부동 소수점 숫자에 정수 2의 거듭 제곱을 곱합니다.이 함수는 __x에 2의 제곱을 곱한 __exp의 값을 반환합니다. |
24 | double log (double __x) log () 함수는 __x 인수의 자연 로그를 반환합니다. |
25 | double log10(double __x) log10 () 함수는 __x 인수의 로그를 밑이 10으로 반환합니다. |
26 | long lrint (double __x) lrint () 함수는 __x를 가장 가까운 정수로 반올림하여 중간 케이스를 짝수 정수 방향으로 반올림합니다. (즉, 1.5 및 2.5 값은 모두 2로 반올림됩니다.) 이 함수는 rint () 함수와 비슷하지만 반환 값의 유형이 다르며 오버플로가 가능합니다. Returns 반올림 된 long 정수 값입니다. __x가 유한 숫자가 아니거나 오버플로가 아니면이 실현은 LONG_MIN 값 (0x80000000)을 반환합니다. |
27 | long lround (double __x) lround () 함수는 __x를 가장 가까운 정수로 반올림하지만 케이스의 중간을 0에서 멀어지게합니다 (가장 가까운 짝수 정수 대신). 이 함수는 round () 함수와 유사하지만 반환 값의 유형이 다르며 오버플로가 가능합니다. Returns 반올림 된 long 정수 값입니다. __x가 유한 수가 아니거나 오버플로가 발생한 경우이 실현은 LONG_MIN 값 (0x80000000)을 반환합니다. |
28 | double modf (double __x, double * __iptr ) modf () 함수는 __x 인수를 정수 부분과 분수 부분으로 나눕니다. 각 부분은 인수와 동일한 부호를 갖습니다. __iptr이 가리키는 객체에 정수 부분을 double로 저장합니다. modf () 함수는 __x의 부호있는 소수 부분을 반환합니다. Note−이 구현은 제로 포인터에 의한 쓰기를 건너 뜁니다. 그러나 GCC 4.3은이 기능을 저장을 피하기 위해 NULL 주소 사용을 허용하지 않는 인라인 코드로 대체 할 수 있습니다. |
29 | float modff (float __x, float * __iptr) modf ()의 별칭입니다. |
30 | double pow (double __x, double __y) pow () 함수는 __x의 값을 지수 __y로 반환합니다. |
31 | double round (double __x) round () 함수는 __x를 가장 가까운 정수로 반올림하지만 가장 가까운 짝수 정수 대신 0에서 반올림합니다. 오버플로는 불가능합니다. Returns 반올림 된 값입니다. __x가 정수이거나 무한대이면 __x 자체가 반환됩니다. __x가NaN, 다음 NaN 반환됩니다. |
32 | int signbit (double __x) signbit () 함수는 __x 값에 부호 비트가 설정된 경우 0이 아닌 값을 반환합니다. IEEE 754 부동 소수점이 0에 서명 할 수 있기 때문에 이것은`__x <0.0 '과 동일하지 않습니다. 비교`-0.0 <0.0 '은 거짓이지만`signbit (-0.0)'은 0이 아닌 값을 반환합니다. |
33 | double sin (double __x) sin () 함수는 라디안으로 측정 된 __x의 사인을 반환합니다. |
34 | double sinh (double __x) sinh () 함수는 __x의 쌍곡 사인을 반환합니다. |
35 | double sqrt (double __x) sqrt () 함수는 __x의 음이 아닌 제곱근을 반환합니다. |
36 | double square (double __x) square () 함수는 __x * __x를 반환합니다. Note −이 기능은 C 표준 정의에 속하지 않습니다. |
37 | double tan (double __x) tan () 함수는 라디안으로 측정 된 __x의 탄젠트를 반환합니다. |
38 | double tanh ( double __x) tanh () 함수는 __x의 쌍곡 탄젠트를 반환합니다. |
39 | double trunc (double __x) trunc () 함수는 __x를 절대 값이 더 크지 않은 가장 가까운 정수로 반올림합니다. |
예
다음 예제는 가장 일반적인 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