数学関数 (Mathematics)
ヘッダ ファイル |
math.h |
| 規格 |
ANSI C (C89) / C90 |
| 概要 |
2 つの型及び多数の数学関数を宣言し、幾つかのマクロを定義する。 |
プラグマ
| 名前 |
機能 |
デフォルト |
| FP_CONTRACT 1
|
浮動小数点演算式の短縮を認めるか? |
処理系定義 |
#pragma STDC FP_CONTRACT ON は浮動小数点演算において短縮式の利用を認めます。一般的にはプロセッサが持つ融合積和演算 (FMA) 命令を利用すると処理系に伝える事になるようです。短縮式が使われると浮動小数点例外が発生しなかったり、丸め誤差が通常の演算結果と異なる事があります。
See also:
型
| 名前 |
機能 |
| double_t 1
|
double と同等の幅を持つ浮動小数点型 |
| float_t 1
|
float と同等の幅を持つ浮動小数点型 |
double_t と float_t は float.h で定義されている FLT_EVAL_METHOD の値によって同等の型が変化します。
|
double_t |
float_t |
| -1 |
処理系定義 |
処理系定義 |
| 0 |
double |
float |
| 1 |
double |
double |
| 2 |
long double |
long double |
マクロ
オーバーフロー
| 名前 |
機能 |
| HUGE_VAL |
double 型算術関数がオーバーフローした時に返される値です。 |
| HUGE_VALF 1
|
float 型算術関数がオーバーフローした時に返される値です。 |
| HUGE_VALL 1
|
long double 型算術関数がオーバーフローした時に返される値です。 |
特殊な値
| 名前 |
機能 |
| INFINITY 1
|
正の無限大を表します。 |
| NAN 1
|
有効な数値として表現できない値 (NaN) を表します。 |
浮動小数点数の分類
fpclassify() が返します。
| 名前 |
機能 |
| FP_INFINITE 1
|
正または負の無限大。 |
| FP_NAN 1
|
NaN 値。 |
| FP_NORMAL 1
|
正規化数。 |
| FP_SUBNORMAL 1
|
正規形式で表現するには小さすぎる値。 |
| FP_ZERO 1
|
ゼロ。 |
融合積和演算 (FMA)
| 名前 |
機能 |
| FP_FAST_FMA 1
|
double 型の加算・乗算演算子による演算より fma() 関数での処理の方が速い事を示します。 |
| FP_FAST_FMAF 1
|
float 型の加算・乗算演算子による演算より fmaf() 関数での処理の方が速い事を示します。 |
| FP_FAST_FMAL 1
|
long double 型の加算・乗算演算子による演算より fmal() 関数での処理の方が速い事を示します。 |
ilogb()
| 名前 |
機能 |
| FP_ILOGB0 1
|
ilogb() の引数がゼロの場合の値です。 |
| FP_ILOGBNAN 1
|
ilogb() の引数が NaN の場合の値です。 |
エラーハンドリング
| 名前 |
機能 |
| MATH_ERRNO 1
|
算術関数でのエラー発生時に errno を使う事を意味します。値は 1。 |
| MATH_ERREXCEPT 1
|
算術関数でのエラー発生時に、浮動小数点例外を使う事を意味します。値は 2。 |
| math_errhandling 1
|
算術関数でのエラーハンドリングの方法を示します。MATH_ERRNO と MATH_ERREXCEPT またはそれらの論理和です。 |
引数付きマクロ
| 名前 |
機能 |
| fpclassify() 1
|
x の浮動小数点型の分類を返します。 |
| isfinite() 1
|
x が有限範囲内なら非ゼロを返します。 |
| isinf() 1
|
x が無限大なら非ゼロを返します。 |
| isnan() 1
|
x が NaN なら非ゼロを返します。 |
| isnormal() 1
|
x が正規化数なら非ゼロを返します。 |
| signbit() 1
|
x が負数なら非ゼロを返します。 |
| isgreater() 1
|
x > y なら 1 を、そうでなければ 0 を返します。 |
| isgreaterequal() 1
|
x >= y なら 1 を、そうでなければ 0 を返します。 |
| isless() 1
|
x < y なら 1 を、そうでなければ 0 を返します。 |
| islessequal() 1
|
x <= y なら 1 を、そうでなければ 0 を返します。 |
| islessgreater() 1
|
(x < y) || (x > y) なら 1 を、そうでなければ 0 を返します。 |
| isunordered() 1
|
x または y が順序値を持たない数 (NaN) なら 1 を、そうでなければ 0 を返します。 |
関数
| double |
float |
long double |
機能 |
| sin() |
sinf() 1
|
sinl() 1
|
正弦を求めます。 |
| cos() |
cosf() 1
|
cosl() 1
|
余弦を求めます。 |
| tan() |
tanf() 1
|
tanl() 1
|
正接を求めます。 |
| asin() |
asinf() 1
|
asinl() 1
|
逆正弦を求めます。 |
| acos() |
acosf() 1
|
acosl() 1
|
逆余弦を求めます。 |
| atan() |
atanf() 1
|
atanl() 1
|
逆正接を求めます。 |
| atan2() |
atan2f() 1
|
atan2l() 1
|
逆正接を求めます。 |
| sinh() |
sinhf() 1
|
sinhl() 1
|
双曲線正弦を求めます。 |
| cosh() |
coshf() 1
|
coshl() 1
|
双曲線余弦を求めます。 |
| tanh() |
tanhf() 1
|
tanhl() 1
|
双曲線正接を求めます。 |
| asinh() 1
|
asinhf() 1
|
asinhl() 1
|
逆双曲線正弦を求めます。 |
| acosh() 1
|
acoshf() 1
|
acoshl() 1
|
逆双曲線余弦を求めます。 |
| atanh() 1
|
atanhf() 1
|
atanhl() 1
|
逆双曲線正接を求めます。 |
| cbrt() 1
|
cbrtf() 1
|
cbrtl() 1
|
立方根を計算します。 |
| ceil() |
ceilf() 1
|
ceill() 1
|
小数点以下を切り上げます。 |
| copysign() 1
|
copysignf() 1
|
copysignl() 1
|
x の絶対値で y の符号を持つ値を生成します。 |
| erf() 1
|
erff() 1
|
erfl() 1
|
誤差関数を計算します。 |
| erfc() 1
|
erfcf() 1
|
erfcl() 1
|
余誤差関数を計算します。 |
| exp() |
expf() 1
|
expl() 1
|
e(自然対数の底)の x 乗を計算します。 |
| exp2() 1
|
exp2f() 1
|
exp2l() 1
|
2 の x 乗を計算します。 |
| expm1() 1
|
expm1f() 1
|
expm1l() 1
|
自然対数の底 e の x 乗から 1 を引いた値を計算します。 |
| fabs() |
fabsf() 1
|
fabsl() 1
|
浮動小数点数の絶対値を返します。 |
| fdim() 1
|
fdimf() 1
|
fdiml() 1
|
x と y の正の差を求めます。 |
| floor() |
floorf() 1
|
floorl() 1
|
小数点以下を切り捨てます。 |
| fma() 1
|
fmaf() 1
|
fmal() 1
|
(x*y)+z を 1 個の 3 項演算としてまとめて計算します (FMA)。 |
| fmax() 1
|
fmaxf() 1
|
fmaxl() 1
|
x と y のうち、大きい方の値を求めます。 |
| fmin() 1
|
fminf() 1
|
fminl() 1
|
x と y のうち、小さい方の値を求めます。 |
| fmod() |
fmodf() 1
|
fmodl() 1
|
x を y で割った剰余を計算します。 |
| frexp() |
frexpf() 1
|
frexpl() 1
|
数値を仮数部と指数部に分割します。 |
|
hypot() 1
|
hypotf() 1
|
hypotl() 1
|
直角三角形の斜辺 (x2 + y2 の平方根) を計算します。 |
| ilogb() 1
|
ilogbf() 1
|
ilogbl() 1
|
符号付き整数の値として x の指数を抽出します。 |
| ldexp() |
ldexpf() 1
|
ldexpl() 1
|
x * 2^exp を計算します。 |
| lgamma() 1
|
lgammaf() 1
|
lgammal() 1
|
ガンマ関数の絶対値の自然対数を計算します。 |
| llround() 1
|
llroundf() 1
|
llroundl() 1
|
最も近い整数値に丸めます。戻り値の型は long long int です。 |
| log() |
logf() 1
|
logl() 1
|
x の自然対数を計算します。 |
| log10() |
log10f() 1
|
log10l() 1
|
10 を底とする x の対数を計算します。 |
| log1p() 1
|
log1pf() 1
|
log1pl() 1
|
1 を加えた値の e を底とする (自然) 対数を計算します。 |
| log2() 1
|
log2f() 1
|
log2l() 1
|
2 を底とする x の対数を計算します。 |
| logb() 1
|
logbf() 1
|
logbl() 1
|
浮動小数点形式における符号付き整数の値として x の指数を抽出します。 |
| lrint() 1
|
lrintf() 1
|
lrintl() 1
|
その時点の丸め方向に従って最も近い整数値に丸めます。 |
| lround() 1
|
lroundf() 1
|
lroundl() 1
|
最も近い整数値に丸めます。戻り値の型は long int です。 |
| modf() |
modff() 1
|
modfl() 1
|
整数部と小数部に分割します。 |
| nan() 1
|
nanf() 1
|
nanl() 1
|
文字列を NaN 値に変換します。 |
| nearbyint() 1
|
nearbyintf() 1
|
nearbyintl() 1
|
"不正確結果" 浮動小数点例外を生成することなく、丸め方向に従って浮動小数点形式の整数値に丸めます。 |
| nextafter() 1
|
nextafterf() 1
|
nextafterl() 1
|
x と y を関数の型に変換し、実軸上で x から見て y の方向にある x の次に表現可能な値を求めます。 |
| nexttoward() 1
|
nexttowardf() 1
|
nexttowardl() 1
|
2 番目の引数の型が long double に固定され、x が y と等しい場合に y をその関数の型に変換して返す事を除いて nextafter() と同じです。 |
| pow() |
powf() 1
|
powl() 1
|
x の y 乗を計算します。 |
| remainder() 1
|
remainderf() 1
|
remainderl() 1
|
IEEE 60559 が要求する x と y の剰余 (REM) を計算します。 |
| remquo() 1
|
remquof() 1
|
remquol() 1
|
符号と商の近似値を持つ値を、*quo に格納する事を除いて remainder() と同じです。 |
| rint() 1
|
rintf() 1
|
rintl() 1
|
結果が実引数の値と異なる場合、"不正確結果" 浮動小数点例外を生成することがある事を除いて nearbyint() と同じです。 |
| round() 1
|
roundf() 1
|
roundl() 1
|
浮動小数点形式の最も近い整数値に丸めます。 |
| scalbln() 1
|
scalblnf() 1
|
scalblnl() 1
|
効率よく x * FLT_RADIX ^ n を計算します。戻り値の型は long int です。 |
| scalbn() 1
|
scalbnf() 1
|
scalbnl() 1
|
効率よく x * FLT_RADIX ^ n を計算します。戻り値の型は int です。 |
| sqrt() |
sqrtf() 1
|
sqrtl() 1
|
正の平方根を計算します。 |
| tgamma() 1
|
tgammaf() 1
|
tgammal() 1
|
x のガンマ関数を計算します。 |
| trunc() 1
|
truncf() 1
|
truncl() 1
|
浮動小数点形式の最も近い整数値に丸めます。 |
引数 / 戻り値の型 (double, float, long double) によって関数名が異なります。この煩わしさを回避するために 型総称数学関数 (tgmath.h) が用意されています。
See also:
資料
⇦ インデックスへ