avr-libc  2.0.0
Standard C library for AVR-GCC

AVR Libc Home Page

AVRs

AVR Libc Development Pages

Main Page

User Manual

Library Reference

FAQ

Example Projects

マクロ | 関数
<math.h>: 数学

マクロ

#define M_E   2.7182818284590452354
 
#define M_LOG2E   1.4426950408889634074 /* log_2 e */
 
#define M_LOG10E   0.43429448190325182765 /* log_10 e */
 
#define M_LN2   0.69314718055994530942 /* log_e 2 */
 
#define M_LN10   2.30258509299404568402 /* log_e 10 */
 
#define M_PI   3.14159265358979323846 /* pi */
 
#define M_PI_2   1.57079632679489661923 /* pi/2 */
 
#define M_PI_4   0.78539816339744830962 /* pi/4 */
 
#define M_1_PI   0.31830988618379067154 /* 1/pi */
 
#define M_2_PI   0.63661977236758134308 /* 2/pi */
 
#define M_2_SQRTPI   1.12837916709551257390 /* 2/sqrt(pi) */
 
#define M_SQRT2   1.41421356237309504880 /* sqrt(2) */
 
#define M_SQRT1_2   0.70710678118654752440 /* 1/sqrt(2) */
 
#define NAN   __builtin_nan("")
 
#define INFINITY   __builtin_inf()
 
#define cosf   cos
 
#define sinf   sin
 
#define tanf   tan
 
#define fabsf   fabs
 
#define fmodf   fmod
 
#define cbrtf   cbrt
 
#define hypotf   hypot
 
#define squaref   square
 
#define floorf   floor
 
#define ceilf   ceil
 
#define frexpf   frexp
 
#define ldexpf   ldexp
 
#define expf   exp
 
#define coshf   cosh
 
#define sinhf   sinh
 
#define tanhf   tanh
 
#define acosf   acos
 
#define asinf   asin
 
#define atanf   atan
 
#define atan2f   atan2
 
#define logf   log
 
#define log10f   log10
 
#define powf   pow
 
#define isnanf   isnan
 
#define isinff   isinf
 
#define isfinitef   isfinite
 
#define copysignf   copysign
 
#define signbitf   signbit
 
#define fdimf   fdim
 
#define fmaf   fma
 
#define fmaxf   fmax
 
#define fminf   fmin
 
#define truncf   trunc
 
#define roundf   round
 
#define lroundf   lround
 
#define lrintf   lrint
 

関数

double cos (double __x)
 
double sin (double __x)
 
double tan (double __x)
 
double fabs (double __x)
 
double fmod (double __x, double __y)
 
double modf (double __x, double *__iptr)
 
float modff (float __x, float *__iptr)
 
double sqrt (double __x)
 
float sqrtf (float)
 
double cbrt (double __x)
 
double hypot (double __x, double __y)
 
double square (double __x)
 
double floor (double __x)
 
double ceil (double __x)
 
double frexp (double __x, int *__pexp)
 
double ldexp (double __x, int __exp)
 
double exp (double __x)
 
double cosh (double __x)
 
double sinh (double __x)
 
double tanh (double __x)
 
double acos (double __x)
 
double asin (double __x)
 
double atan (double __x)
 
double atan2 (double __y, double __x)
 
double log (double __x)
 
double log10 (double __x)
 
double pow (double __x, double __y)
 
int isnan (double __x)
 
int isinf (double __x)
 
static int isfinite (double __x)
 
static double copysign (double __x, double __y)
 
int signbit (double __x)
 
double fdim (double __x, double __y)
 
double fma (double __x, double __y, double __z)
 
double fmax (double __x, double __y)
 
double fmin (double __x, double __y)
 
double trunc (double __x)
 
double round (double __x)
 
long lround (double __x)
 
long lrint (double __x)
 

説明詳細

#include <math.h>

このヘッダファイルは、基本的な数学的な定数と関数を宣言しています。

注意点:
  • ここで宣言された関数にアクセスするには、libm.aライブラリにリンクされることが通常必要になります。関連するFAQの項目を参照してください。
  • 数学関数は、例外が発生してもerrnoの値を変更しません。これは、GCCのより良い最適化ためであり、多くの例外は、定数の属性で宣言されています。

マクロ定義説明

#define acosf   acos

acos()の別名です。

#define asinf   asin

asin()の別名です。

#define atan2f   atan2

atan2()の別名です。

#define atanf   atan

atan()の別名です。

#define cbrtf   cbrt

cbrt()の別名です。

#define ceilf   ceil

ceil()の別名です。

#define copysignf   copysign

copysign()の別名です。

#define cosf   cos

cos()の別名です。

#define coshf   cosh

cosh()の別名です。

#define expf   exp

exp()の別名です。

#define fabsf   fabs

fabs()の別名です。

#define fdimf   fdim

fdim()の別名です。

#define floorf   floor

floor()の別名です。

#define fmaf   fma

fma()の別名です。

#define fmaxf   fmax

fmax()の別名です。

#define fminf   fmin

fmin()の別名です。

#define fmodf   fmod

fmod()の別名です。

#define frexpf   frexp

frexp()の別名です。

#define hypotf   hypot

hypot()の別名です。

#define INFINITY   __builtin_inf()

無限(INFINITY)の定数です。

#define isfinitef   isfinite

isfinite()の別名です。

#define isinff   isinf

isinf()の別名です。

#define isnanf   isnan

isnan()の別名です。

#define ldexpf   ldexp

ldexp()の別名です。

#define log10f   log10

log10()の別名です。

#define logf   log

log()の別名です。

#define lrintf   lrint

lrint()の別名です。

#define lroundf   lround

lround()の別名です。

#define M_1_PI   0.31830988618379067154 /* 1/pi */

1/piの定数です。

#define M_2_PI   0.63661977236758134308 /* 2/pi */

2/piの定数です。

#define M_2_SQRTPI   1.12837916709551257390 /* 2/sqrt(pi) */

2/sqrt(pi)の定数です。

#define M_E   2.7182818284590452354

eの定数です。

#define M_LN10   2.30258509299404568402 /* log_e 10 */

10の自然対数です。

#define M_LN2   0.69314718055994530942 /* log_e 2 */

2の自然対数です。

#define M_LOG10E   0.43429448190325182765 /* log_10 e */

10を基数とするeの対数です。

#define M_LOG2E   1.4426950408889634074 /* log_2 e */

2を基数とするeの対数です。

#define M_PI   3.14159265358979323846 /* pi */

piの定数です。

#define M_PI_2   1.57079632679489661923 /* pi/2 */

pi/2の定数です。

#define M_PI_4   0.78539816339744830962 /* pi/4 */

pi/4の定数です。

#define M_SQRT1_2   0.70710678118654752440 /* 1/sqrt(2) */

1/sqrt(2)の定数です。

#define M_SQRT2   1.41421356237309504880 /* sqrt(2) */

2の平方根

#define NAN   __builtin_nan("")

NAN の定数

#define powf   pow

pow()の別名です。

#define roundf   round

round()の別名です。

#define signbitf   signbit

signbit()の別名です。

#define sinf   sin

sin()の別名です。

#define sinhf   sinh

sinh()の別名です。

#define squaref   square

square()の別名です。

#define tanf   tan

tan()の別名です。

#define tanhf   tanh

tanh()の別名です。

#define truncf   trunc

trunc()の別名です。

関数説明

double acos ( double  __x)

acos()関数は、__xのアークコサインの主値を計算します。返値は、[0, pi]ラジアンの範囲です。 [-1, +1]範囲外の引数により領域エラーが発生します。

double asin ( double  __x)

asin()関数は、__xのアークサインの主値を計算します。返値は、[-pi/2, pi/2]ラジアンの範囲です。 [-1, +1]範囲外の引数により領域エラーが発生します。

double atan ( double  __x)

atan()関数は、__xのアークタンジェントの主値を計算します。返値は、[-pi/2, pi/2]ラジアンの範囲です。

double atan2 ( double  __y,
double  __x 
)

atan2()関数は、返値の象限を決定するために2つの引数の符号を使い__y / __xの値からアークタンジェントの主値を計算します。返値は、[-pi, +pi]ラジアンの範囲です。

double cbrt ( double  __x)

cbrt()関数は、__xの立方根を返します。

double ceil ( double  __x)

ceil()関数は、浮動小数点で表される__x以上で最も小さい整数を返します。

static double copysign ( double  __x,
double  __y 
)
static

copysign()関数は、__yと同じ符号の__xを返します。もし__x__yが NaN や 0 でも動作します。

double cos ( double  __x)

cos()関数は、__xをラジアンで計算したコサインを返します。

double cosh ( double  __x)

cosh()は、__xの双曲線余弦を返します。

double exp ( double  __x)

exp()関数は、__xの指数関数の値を返します。(訳注:指数関数eのx乗の値)

double fabs ( double  __x)

fabs()関数は、浮動小数__xの絶対値を計算します。

double fdim ( double  __x,
double  __y 
)

fdim()関数は、max(__x - __y, 0)を返します。もし、__x__yの片方または両方がNaNならば、NaNを返します。

double floor ( double  __x)

floor()関数は、浮動小数点で表される__x以下で最も小さい整数を返します。

double fma ( double  __x,
double  __y,
double  __z 
)

fma()関数は、浮動小数点のかけ算・加算を実行します。これは、(__x * __y) + __z演算であり、途中結果において目的の型に丸められません。これにより、計算結果を改善できることがあります。

double fmax ( double  __x,
double  __y 
)

fmax()関数は、__x__yの2つの値の大きい方を返します。もし片方の引数がNaNならば、もう片方の引数を返します。もし両方ともNaNならば、NaNを返します。

double fmin ( double  __x,
double  __y 
)

fmin()関数は、__x__yの2つの値の小さい方を返します。もし片方の引数がNaNならば、もう片方の引数を返します。もし両方ともNaNならば、NaNを返します。

double fmod ( double  __x,
double  __y 
)

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

double frexp ( double  __x,
int *  __pexp 
)

frexp()関数は、浮動小数点の数を正規化小数と2の累乗の指数に分解します。__pexpで指し示すint型ポインタの中に整数を格納します。

__xが普通の浮動小数点の数であれば、frexp()関数は、[1/2, 1)の範囲か0となるvの値と、vと掛ける2の__pexp乗と__xが等しくなる値を返します。もし__xが有限数でないなら、frexp()は、現状のままの__xを返し、__pexpに0を格納します。

注意
この実装では、格納する指数をスキップする指令としてゼロポインタを許可しています。
double hypot ( double  __x,
double  __y 
)

hypot()関数は、sqrt(__x*__x + __y*__y)を返します。これは、直角三角形の__x__yの長さから斜辺の長さや、原点から点(__x, __y)までの距離となります。誤差が少ないことから、直接解くかわりにこの関数を使うことは賢明です。小さな__x__yでもアンダーフローしません。解が範囲内であればオーバーフローもしません。

static int isfinite ( double  __x)
static

isfinite()関数は、__xが有限(正・負の無限やNaNでない)ならゼロ以外の値を返します。

int isinf ( double  __x)

isinf()関数は、引数__xが正に無限なら1を、__xが負に無限なら-1を、それ以外なら0を返します。

注意
GCC 4.3は、両方の無限の値において1を返すインライン関数に置き換えることができます(gcc bug #35509)。
int isnan ( double  __x)

isnan()関数は、引数__xが"not-a-number(数字ではない)" (NaN)オブジェクトであるなら1を返し、それ以外は0を返します。

double ldexp ( double  __x,
int  __exp 
)

ldexp()関数は、浮動小数と2の整数べき乗の乗算を計算します。__x掛ける2の__exp乗の値を返します。

double log ( double  __x)

log()関数は、引数__xの自然対数を返します。

double log10 ( double  __x)

log10()関数は、引数__xの10を基数とした対数の値を返します。(訳注:常用対数(log10)の計算)

long lrint ( double  __x)

lrint()関数は、__xの最も近い整数に丸め、中間値の場合は偶数の整数側に丸めます。(これは、1.5 と 2.5 の値で 2 に丸めると言うことです。) この関数は、rint()と似ていますが、返値の型とオーバーフローが可能という点で違います。

返値
丸められた long 整数の値。もし__xが有限でない数字やオーバーフローする場合は、LONG_MIN値(0x80000000)の値を返します。
long lround ( double  __x)

lround()関数は、__xの最も近い整数に丸め、中間値の場合は0から遠い方へ(最も近い偶数の代わりに)丸めます。この関数は、round()関数と似ていますが、返値の型とオーバーフローが可能という点で違います。

返値
丸められた long 整数の値。もし__xが有限でない数字やオーバーフローする場合は、LONG_MIN値(0x80000000)の値を返します。
double modf ( double  __x,
double *  __iptr 
)

modf()関数は、引数__xを引数と同じ符号の整数部と小数部に分解します。整数部を、double型ポインタの__iptrに格納します。

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

注意
この実装では、ゼロポインタによりスキップすることができます。しかし、GCC 4.3は、格納を避けるためにNULLアドレスを使うことを許可しないインラインコードに置き換えることができます。
float modff ( float  __x,
float *  __iptr 
)

modf()の別名です。

double pow ( double  __x,
double  __y 
)

pow()関数は、__x__y乗の値を返します。

double round ( double  __x)

round()関数は、__xの最も近い整数に丸め、中間値の場合は0から遠い方へ(最も近い偶数の代わりに)丸めます。オーバーフローはしません。

返値
丸められた値。もし __xが、整数や無限数であれば、__x自身を返します。もし__xが、NaNならば、NaNを返します。
int signbit ( double  __x)

signbit()関数は、__xの符号がセットされていれば非ゼロを返します。これは、`__x < 0.0'と同じではありません。なぜならば、IEEE 754 浮動小数点は、負のゼロを認めているからです。`-0.0 < 0.0'は偽(false)ですが、`signbit (-0.0)'は非ゼロの値が返ってくるでしょう。

double sin ( double  __x)

sin()関数は、ラジアンで計算された__xのsinを返します。

double sinh ( double  __x)

sinh()関数は、__xのハイパボリックサインを返します。

double sqrt ( double  __x)

sqrt()関数は、__xの非負の平方根を返します。

float sqrtf ( float  )

sqrt()の別名です。

double square ( double  __x)

square()関数は、__x * __xを返します。

注意
この関数は、C標準定義に属していません。
double tan ( double  __x)

tan()関数は、ラジアンで計算された__xのタンジェントを返します。

double tanh ( double  __x)

tanh()関数は、__xのハイパボリックタンジェントを返します。

double trunc ( double  __x)

trunc()関数は、絶対値が大きくならない最も近い整数に__xを丸めます。