math.h

math.h には,引数や戻り値の型の違う同機能の関数がそれぞれ 3 種類宣言されています.また多くのマクロも定義されています.

以下に math.h で定義されている関数とマクロの一覧を示します.なお,同等の機能を持ち,引数と戻り値のみ異なる関数は横に並べて表示しています.表のヘッダ部分の double や float などはその関数の引数と戻り値の型を表しています.

三角関数

関数名概要
double float long double
acos acosf acosl 逆余弦 (arccos) を計算する
asin asinf asinl 逆正弦 (arcsin) を計算する
atan atanf atanl 逆正接 (arctan) を計算する
atan2 atan2f atan2l y / x の逆正接 (arctan) を計算する
cos cosf cosl 余弦 (cos) を計算する
sin sinf sinl 正弦 (sin) を計算する
tan tanf tanl 正接 (tan) を計算する

双曲線関数

関数名概要備考
double float long double
acosh acoshf acoshl 双曲線逆余弦 (arccosh) を計算する C99
asinh asinhf asinhl 双曲線逆正弦 (arcsinh) を計算する C99
atanh atanhf atanhl 双曲線逆正接 (arctanh) を計算する C99
cosh coshf coshl 双曲線余弦 (cosh) を計算する
sinh sinhf sinhl 双曲線正弦 (sinh) を計算する
tanh tanhf tanhl 双曲線正接 (tanh) を計算する

指数関数及び対数関数

関数名概要備考
double float long double
exp expf expl 底がネイピア数 e である指数関数 (exp) を計算する
exp2 exp2f exp2l 2 の引数乗を計算する C99
expm1 expm1f expm1l 底がネイピア数 e である指数関数 (exp) - 1 を計算する C99
frexp frexpf frexpl 引数を正規化小数と指数に分解する
ilogb ilogbf ilogbl 符号付き int の値として引数の指数を抽出する C99
ldexp ldexpf ldexpl 浮動小数点数と 2 の整数べき乗の乗算を計算する
log logf logl 自然対数 (loge) を計算する
log10 log10f log10l 常用対数 (log10) を計算する
log1p log1pf log1pl 引数に 1 を加えた自然対数 (loge) を計算する C99
log2 log2f log2l 2 を底とする対数 (log2) を計算する C99
logb logbf logbl 浮動小数点形式における符号付き整数の値として引数の指数を抽出する C99
modf modff modfl 引数を整数部と小数部に分割する
scalbn scalbnf scalbnl 効率よく x * FLT_RADIX^n を計算する C99
scalbln scalblnf scalblnl 効率よく x * FLT_RADIX^n を計算する C99

べき乗関数及び絶対値関数

関数名概要備考
double float long double
cbrt cbrtf cbrtl 立方根を計算する C99
fabs fabsf fabsl 絶対値を取得する
hypot hypotf hypotl x の 2 乗と y の 2 乗の和の平方根を計算する C99
pow powf powl べき乗を計算する
sqrt sqrtf sqrtl 平方根を計算する

誤差関数及びガンマ関数

関数名概要備考
double float long double
erf erff erfl 誤差関数を計算する C99
erfc erfcf erfcl 余誤差関数を計算する C99
lgamma lgammaf lgammal ガンマ関数の絶対値の自然対数 (loge) を計算する C99
tgamma tgammaf tgammal ガンマ関数を計算する C99

最近接整数関数

関数名概要備考
double float long double
ceil ceilf ceill 天井関数 (ceiling function) を計算する
floor floorf floorl 床関数 (floor function) を計算する
near
byint
near
byintf
near
byintl
その時点の丸め方向に従って,引数を整数値に丸める ("不正確例外" 浮動小数点例外を生成しない) C99
rint rintf rintl その時点の丸め方向に従って,引数を整数値に丸める ("不正確例外" 浮動小数点例外を生成する) C99
lrint lrintf lrintl その時点の丸め方向に従って,引数を最も近い整数値に丸める C99
llrint llrintf llrintl その時点の丸め方向に従って,引数を最も近い整数値に丸める C99
round roundf roundl 引数を四捨五入する C99
lround lroundf lroundl 引数を四捨五入する C99
llround llroundf llroundl 引数を四捨五入する C99
trunc truncf truncl 引数を最も近い整数値に丸めます (ただし,その絶対値が引数の絶対値より大きくない値) C99

余剰関数

関数名概要備考
double float long double
fmod fmodf fmodl 剰余を計算する
remainder remainderf remainderl IEEE 60559 が要求する余剰 x REM y を計算する C99
remquo remquof remquol IEEE 60559 が要求する余剰 x REM y を計算する C99

実数操作関数

関数名概要備考
double float long double
copysign copysignf copysignl x の絶対値に y の符号を付加して返す C99
nan nanf nanl 文字列を NaN (非数) に変換する C99
next
after
next
afterf
next
afterl
指定された形式で表現可能な y 方向にある x の次の値を返す. C99
next
toward
next
towardf
next
towardl
指定された形式で表現可能な y 方向にある x の次の値を返す C99

最大, 最小及び正の差関数

関数名概要備考
double float long double
fdim fdimf fdiml 2 つの引数の正の差を計算する C99
fmax fmaxf fmaxl 2 つの引数の大きいほうの値を返す C99
fmin fminf fminl 2 つの引数の小さいほうの値を返す C99

浮動小数点乗算加算

関数名概要備考
double float long double
fma fmaf fmal (x * y) + z を 1 個の 3 項演算子としてまとめて計算する C99

分類用マクロ

マクロ名概要備考
fpclassify引数の値をカテゴリに分類するC99
isfinite引数の値が有限の値かどうかを判定するC99
isinf引数の値が無限大かどうかを判定するC99
isnan引数の値が NaN (非数) かどうかを判定するC99
isnormal引数の値が正規化数かどうかを判定するC99
signbit引数の符号が負かどうかを判定するC99

比較マクロ

マクロ名概要備考
isgreater1 番目の引数が 2 番目の引数より大きいかどうかを判定するC99
isgreaterequal1 番目の引数が 2 番目の引数より大きい,または等しいかどうかを判定するC99
isless1 番目の引数が 2 番目の引数より小さいかどうかを判定するC99
islessequal1 番目の引数が 2 番目の引数より小さい,または等しいかどうかを判定するC99
islessgreater1 番目の引数が 2 番目の引数より小さい,または大きいかどうかを判定するC99
isunordered引数が順序付けられていないかどうかを判定しますC99

浮動小数点数の定数を表すマクロ

マクロ名概要備考
HUGE_VAL正の double 型の式C99
HUGE_VALF正の float 型の式C99
HUGE_VALL正の long double 型の式C99
INFINITY無限大を表す float 型の定数式,あるいはコンパイル時においてオーバーフローする float 型の正の定数
(無限大をサポートしている処理系では正か符号なしの無限大)
C99
NANqNaN (quiet NaN) を表す float 型の定数
(処理系が float 型の qNaN (quiet NaN) をサポートしている場合のみ定義される)
C99

数の分類のためのマクロ

マクロ名概要備考
FP_INFINITE正または負の無限大を表すC99
FP_NANNaN (非数) を表すC99
FP_ZERO0 を表すC99
FP_SUBNORMAL非正規化数を表す (値が小さすぎて正規化形式で表現できない数)C99
FP_NORMAL正規化数を表す (正常に表せる浮動小数点数)C99

fma 関数の速度を表すマクロ

マクロ名概要備考
FP_FAST_FMAfma 関数が普通に (x * y) + z と計算するよりも,同じか,より早く実行されることを表すC99
FP_FAST_FMAFfmaf 関数が普通に (x * y) + z と計算するよりも,同じか,より早く実行されることを表すC99
FP_FAST_FMALfmal 関数が普通に (x * y) + z と計算するよりも,同じか,より早く実行されることを表すC99

ilogb 関数の戻り値に使用されるマクロ

マクロ名概要備考
FP_ILOGB0ilogb 関数の引数が 0 の場合に返される値C99
FP_ILOGBNANilogb 関数の引数が NaN (非数) の場合に返される値C99

エラー処理方法を識別するマクロ

マクロ名概要備考
MATH_ERRNO整数定数 1 に展開するC99
MATH_ERREXCEPT整数定数 2 に展開するC99
math_errhandlingMATH_ERRNOか,MATH_ERREXCEPT,または両方のビット単位の論理和のいずれかの式C99