Arduino-math-library

提供:Dev Guides
移動先:案内検索

Arduino-数学ライブラリ

Arduino Mathライブラリ(math.h)には、浮動小数点数を操作するための便利な数学関数が多数含まれています。

ライブラリマクロ

以下は、ヘッダーmath.hで定義されているマクロです-

以下の____は、ヘッダーmath.hで定義されているマクロのリストです。

Macros Value Description
M_E 2.7182818284590452354 The constant e.
M_LOG2E

1.4426950408889634074

/log_2 e/

The logarithm of the e to base 2
M_1_PI

0.31830988618379067154

/1/pi/

The constant 1/pi
M_2_PI

0.63661977236758134308

/2/pi/

The constant 2/pi
M_2_SQRTPI

1.12837916709551257390

/* 2/sqrt(pi) */

The constant 2/sqrt(pi)
M_LN10

2.30258509299404568402

/* log_e 10 */

The natural logarithm of the 10
M_LN2

0.69314718055994530942

/* log_e 2 */

The natural logarithm of the 2
M_LOG10E

0.43429448190325182765

/* log_10 e */

The logarithm of the e to base 10
M_PI

3.14159265358979323846

/* pi */

The constant pi
M_PI_2

3.3V1.57079632679489661923

/* pi/2 */

The constant pi/2
M_PI_4

0.78539816339744830962

/* pi/4 */

The constant pi/4
M_SQRT1_2

0.70710678118654752440

/* 1/sqrt(2) */

The constant 1/sqrt(2)
M_SQRT2

1.41421356237309504880

/* sqrt(2)*/

The square root of 2
acosf - The alias for acos() function
asinf - The alias for asin() function
atan2f - The alias for atan2() function
cbrtf - The alias for cbrt() function
ceilf - The alias for ceil() function
copysignf - The alias for copysign() function
coshf - The alias for cosh() function
expf - The alias for exp() function
fabsf - The alias for fabs() function
fdimf - The alias for fdim() function
floorf - The alias for floor() function
fmaxf - The alias for fmax() function
fminf - The alias for fmin() function
fmodf - The alias for fmod() function
frexpf - The alias for frexp() function
hypotf - The alias for hypot() function
INFINITY - INFINITY constant
isfinitef - The alias for isfinite() function
isinff - The alias for isinf() function
isnanf - The alias for isnan() function
ldexpf - The alias for ldexp() function
log10f - The alias for log10() function
logf - The alias for log() function
lrintf - The alias for lrint() function
lroundf - The alias for lround() function

ライブラリ関数

次の関数は、ヘッダー math.h で定義されています-

以下に示すのは、ヘッダーmath.hで定義されている関数のリストです。

S.No. Library Function & Description
1

double acos (double __x)

acos()関数は、__ xの逆余弦の主値を計算します。 返される値の範囲は[0、pi]ラジアンです。 [-1、+ 1]の範囲外の引数に対してドメインエラーが発生します。

2

double asin (double __x)

asin()関数は、__ xの逆正弦の主値を計算します。 返される値の範囲は[-pi/2、pi/2]ラジアンです。 [-1、+ 1]の範囲外の引数に対してドメインエラーが発生します。

3

double atan (double __x)

atan()関数は、__ xの逆正接の主値を計算します。 返される値の範囲は[-pi/2、pi/2]ラジアンです。

4

double atan2 (double y, doublex)

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, doubley)

copysign()関数はxを返しますが、 yの符号を使用します。 xまたはyがNaNまたはゼロの場合でも機能します。

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, doubley)

fdim()関数はmax(x-y、0)を返します。 xまたはyまたは両方がNaNの場合、NaNが返されます。

13

double floor (double __x)

floor()関数は、__ x以下の最大の整数値を浮動小数点数で返します。

14

double fma (double x, doubley, double __z)

fma()関数は、浮動小数点乗算加算を実行します。 これは操作(x *y)+ __zですが、中間結果は宛先タイプに丸められません。 これにより、計算の精度が向上する場合があります。

15
  • double fmax (double x, doubley)*

fmax()関数は、2つの値xとyの大きい方を返します。 引数がNaNの場合、他の引数が返されます。 両方の引数がNaNの場合、NaNが返されます。

16

double fmin (double x, doubley)

fmin()関数は、2つの値xとyのうち小さい方を返します。 引数がNaNの場合、他の引数が返されます。 両方の引数がNaNの場合、NaNが返されます。

17

double fmod (double x, doubley)

関数fmod()は、x/yの浮動小数点剰余を返します。

18

double frexp (double x, int *pexp)

frexp()関数は、浮動小数点数を正規化された小数と2の整数乗に分割します。 pexpが指すintオブジェクトに整数を格納します。xが通常の浮動小数点数の場合、frexp()関数は値vを返します。vの間隔は[1/2、1)またはゼロで、xはvに2を掛けたpexpに等しいです。 xがゼロの場合、結果の両方の部分がゼロになります。xが有限数でない場合、frexp()はxをそのまま返し、 pexpで0を格納します。

注意-この実装では、指数の格納をスキップするディレクティブとしてゼロポインターを許可します。

19

double hypot (double x, doubley)

hypot()関数は、sqrt(x ' x + y' y)を返します。 これは、長さxおよびyの辺を持つ直角三角形の斜辺の長さ、または原点からの点(x、 y)の距離です。 エラーがはるかに小さいため、直接式の代わりにこの関数を使用するのが賢明です。 小さなxおよびyでアンダーフローはありません。 結果が範囲内にある場合はオーバーフローしません。

20

static int isfinite (double __x)

isfinite()関数は、__ xが有限の場合にゼロ以外の値を返します。プラスまたはマイナスの無限大ではなく、 NaN でもありません。

21

int isinf (double __x)

関数isinf()は、引数xが正の無限大の場合1を返し、 xが負の無限大の場合-1を返し、そうでない場合は0を返します。

-GCC 4.3は、この関数を、両方の無限大に対して1の値を返すインラインコードに置き換えることができます(gccバグ#35509)。

22

int isnan (double __x)

関数isnan()は、引数__xが "not-a-number"( NaN )オブジェクトを表す場合は1を返し、それ以外の場合は0を返します。

23

double ldexp (double x, intexp )

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()関数に似ていますが、戻り値のタイプが異なり、オーバーフローが発生する可能性があります。

  • 戻り値 *

丸められた長整数値。 __xが有限数でもオーバーフローでもない場合、この認識はLONG​​_MIN値(0x80000000)を返します。

27
  • long lround (double __x)*

lround()関数は、__ xを最も近い整数に丸めますが、ゼロから(最も近い偶数の整数の代わりに)途中で丸めます。 この関数はround()関数に似ていますが、戻り値のタイプが異なり、オーバーフローが発生する可能性があります。

  • 戻り値 *

丸められた長整数値。 __xが有限数でない場合、またはオーバーフローがあった場合、この認識はLONG​​_MIN値(0x80000000)を返します。

28
  • double modf (double x, double *iptr )*

modf()関数は、引数xを整数部分と小数部分に分割します。各部分は引数と同じ符号を持ちます。iptrが指すオブジェクトに、整数部分をdoubleとして格納します。

modf()関数は、__ xの符号付き小数部を返します。

-この実装は、ゼロポインターによる書き込みをスキップします。 ただし、GCC 4.3では、この関数を、保存を避けるためにNULLアドレスを使用することを許可しないインラインコードに置き換えることができます。

29

float modff (float x, float *iptr)

modf()のエイリアス。

30

double pow (double x, doubley)

関数pow()は、xの値を指数yに返します。

31

double round (double __x)

round()関数は__xを最も近い整数に丸めますが、ケースをゼロから(最も近い偶数の整数ではなく)丸めます。 オーバーフローは不可能です。

戻り値

丸められた値。 xが整数または無限の場合、 x自体が返されます。 __xが NaN の場合、 NaN が返されます。

32

int signbit (double __x)

xの値に符号ビットが設定されている場合、signbit()関数はゼロ以外の値を返します。 IEEE 754浮動小数点ではゼロに署名できるため、これは `x <0.0 'とは異なります。 比較「-0.0 <0.0」は偽ですが、「signbit(-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を返します。

-この関数は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