数学関数 (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:
資料
⇦ インデックスへ