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