|
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) |
|
このヘッダファイルは、基本的な数学的な定数と関数を宣言しています。
- 注意点:
- ここで宣言された関数にアクセスするには、
libm.a
ライブラリにリンクされることが通常必要になります。関連するFAQの項目を参照してください。
- 数学関数は、例外が発生しても
errno
の値を変更しません。これは、GCCのより良い最適化ためであり、多くの例外は、定数の属性で宣言されています。
#define INFINITY __builtin_inf() |
#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_E 2.7182818284590452354 |
#define M_LN10 2.30258509299404568402 /* log_e 10 */ |
#define M_LN2 0.69314718055994530942 /* log_e 2 */ |
#define M_LOG10E 0.43429448190325182765 /* log_10 e */ |
#define M_LOG2E 1.4426950408889634074 /* log_2 e */ |
#define M_PI 3.14159265358979323846 /* pi */ |
#define M_PI_2 1.57079632679489661923 /* pi/2 */ |
#define M_PI_4 0.78539816339744830962 /* pi/4 */ |
#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ |
#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ |
#define NAN __builtin_nan("") |
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 | ) |
|
double ceil |
( |
double |
__x | ) |
|
ceil()関数は、浮動小数点で表される__x以上で最も小さい整数を返します。
static double copysign |
( |
double |
__x, |
|
|
double |
__y |
|
) |
| |
|
static |
copysign()関数は、__yと同じ符号の__xを返します。もし__xや__yが NaN や 0 でも動作します。
cos()関数は、__xをラジアンで計算したコサインを返します。
double cosh |
( |
double |
__x | ) |
|
exp()関数は、__xの指数関数の値を返します。(訳注:指数関数eのx乗の値)
double fabs |
( |
double |
__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 |
isinf()関数は、引数__xが正に無限なら1を、__xが負に無限なら-1を、それ以外なら0を返します。
- 注意
- GCC 4.3は、両方の無限の値において1を返すインライン関数に置き換えることができます(gcc bug #35509)。
isnan()関数は、引数__xが"not-a-number(数字ではない)" (NaN)オブジェクトであるなら1を返し、それ以外は0を返します。
double ldexp |
( |
double |
__x, |
|
|
int |
__exp |
|
) |
| |
ldexp()関数は、浮動小数と2の整数べき乗の乗算を計算します。__x掛ける2の__exp乗の値を返します。
log()関数は、引数__xの自然対数を返します。
double log10 |
( |
double |
__x | ) |
|
log10()関数は、引数__xの10を基数とした対数の値を返します。(訳注:常用対数(log10)の計算)
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 |
|
) |
| |
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)'は非ゼロの値が返ってくるでしょう。
sin()関数は、ラジアンで計算された__xのsinを返します。
double sinh |
( |
double |
__x | ) |
|
sinh()関数は、__xのハイパボリックサインを返します。
double sqrt |
( |
double |
__x | ) |
|
double square |
( |
double |
__x | ) |
|
square()関数は、__x * __xを返します。
- 注意
- この関数は、C標準定義に属していません。
tan()関数は、ラジアンで計算された__xのタンジェントを返します。
double tanh |
( |
double |
__x | ) |
|
tanh()関数は、__xのハイパボリックタンジェントを返します。
double trunc |
( |
double |
__x | ) |
|
trunc()関数は、絶対値が大きくならない最も近い整数に__xを丸めます。