math.h
読み:マス-ドットエイチ
外語:math.h

 標準Cライブラリのうち、数学関数を定義するためのヘッダーファイル。C++ではcmathが対応する。
目次

書式
 C
 #inluce <math.h>
 C++
 #inluce <cmath>

概要

関数
 C標準としては、引数や戻り値の型の違う同機能の関数がそれぞれfloat用、double用、long double用で計3種類ずつ定義されている。また関数だけでなく、様々なマクロも定義されている。
 代表関数はdouble型用であり、この他に代表関数名の最後にfを付けた名称を持つものがfloat型用、代表関数名の最後にlを付けた名称を持つものがlong double型用である。

実装
 内容は実装方法により様々で、このファイルの中で直接関数をexternしていたり、他のファイルを複雑にincludeしながらマクロを用いて間接的にexternしていたりする。
 GCCの場合、3種類を定義するため、通常、fで終わるもの、lで終わるもので計3回、bits/mathcalls.hをincludeすることで定義するということをしている。

仕様

C99
 ISO/IEC 9899:1999(いわゆるC99、JIS X 3010:2003)で規定される関数を以下に一覧する。分類方法はJIS X 3010による。
 C99はC99以降対応、GCCは非標準の関数を意味する。
 標準化後に廃止された実装依存の関数については、一部例外を除き記載していない。

三角関数
関数名機能標準
doublefloatlongdouble
acosacosfacosl逆余弦(arccos)を求める 
asinasinfasinl逆正弦(arcsin)を求める 
atanatanfatanl逆正接(arctan)を求める 
atan2atan2fatan2ly/xの逆正接(arctan)を求める 
coscosfcosl余弦(arccos)を求める 
sinsinfsinl正弦(arcsin)を求める 
tantanftanl正接(arctan)を求める 
sincossincosfsincoslsinとcosの同時計算GCC

双曲線関数
関数名機能標準
doublefloatlongdouble
acoshacoshfacoshl双曲線逆余弦(arccosh)を求めるC99
asinhasinhfasinhl双曲線逆正弦(arcsinh)を求めるC99
atanhatanhfatanhl双曲線逆正接(arctanh)を求めるC99
coshcoshfcoshl双曲線余弦(cosh)を求める 
sinhsinhfsinhl双曲線正弦(sinh)を求める 
tanhtanhftanhl双曲線正接(tanh)を求める 

指数関数、対数関数
関数名機能標準
doublefloatlongdouble
expexpfexpl底をネイピア数eとする指数関数(exp)を求める 
exp10exp10fexp10l10の引数乗を求めるGCC
exp2exp2fexp2l2の引数乗を求めるC99
expm1expm1fexpm1l底をネイピア数eとする指数関数(exp)-1を求めるC99
frexpfrexpffrexpl正規化小数と2を基数とする指数に分解する 
ilogbilogbfilogbl浮動小数点数の指数部を整数として求めるC99
ldexpldexpfldexpl浮動小数点数と整数の2の冪乗との積を求める 
loglogflogl自然対数(loge)を求める 
log10log10flog10l常用対数(log10)を求める 
log1plog1pflog1pl引数に1を加えた自然対数(loge)を求めるC99
log2log2flog2l2を底とする対数(log2)を求めるC99
logblogbflogbl浮動小数点数の指数部を求めるC99
modfmodffmodfl引数を整数部と小数部に分解する 
scalbnscalbnfscalbnl浮動小数点数と整数の基数(FLT_RADIX)の冪乗との積を求めるC99
scalblnscalblnfscalblnl浮動小数点数と整数の基数(FLT_RADIX)の冪乗との積を求めるC99
significandsignificandfsignificandl浮動小数点数の仮数(mantissa)を取得するGCC

冪乗関数、絶対値関数
関数名機能標準
doublefloatlongdouble
cbrtcbrtfcbrtl立方根を求めるC99
fabsfabsffabsl絶対値を求める 
hypothypotfhypotlxの2乗とyの2乗の和の平方根を求めるC99
powpowfpowl冪乗を求める 
pow10pow10fpow10l10のx乗を求めるGNU
sqrtsqrtfsqrtl平方根を求める 

誤差関数、ガンマ関数
関数名機能標準
doublefloatlongdouble
erferfferfl誤差関数を求めるC99
erfcerfcferfcl相補誤差関数を求めるC99
lgammalgammaflgammalガンマ関数の絶対値の自然対数(loge)を求めるC99
lgamma_rlgammaf_rlgammal_rガンマ関数の絶対値の自然対数(loge)を求める(スレッドセーフ)GCC
tgammatgammaftgammal本当のガンマ関数を求めるC99
gammagammafgammalガンマ関数の絶対値の自然対数(loge)を求める廃止

最近接整数関数
関数名機能標準
doublefloatlongdouble
ceilceilfceill引き数を下回らない最小整数を求める天井関数 
floorfloorffloorl引き数を越えない最大整数値を求める床関数 
nearbyintnearbyintfnearbyintl浮動小数点数を整数値に丸めるC99
rintrintfrintl浮動小数点数を整数値に丸める(例外生成あり)C99
lrintlrintflrintl最も近い整数値に丸めるC99
llrintllrintfllrintl最も近い整数値に丸めるC99
roundroundfroundl四捨五入を求めるC99
lroundlroundflroundl四捨五入を求めるC99
llroundllroundfllroundl四捨五入を求めるC99
trunctruncftruncl絶対値を超えない最も近い整数値に丸めるC99

剰余関数
関数名機能標準
doublefloatlongdouble
fmodfmodffmodl剰余を求める 
remainderremainderfremainderl浮動小数点の剰余を求めるC99
remquoremquofremquol商の一部と剰余を求めるC99

実数操作関数
関数名機能標準
doublefloatlongdouble
copysigncopysignfcopysignlxの絶対値にyの符号を複写するC99
nannanfnanlNaN(非数)を求めるC99
nextafternextafterfnextafterly方向にあるxの次の値を求めるC99
nexttowardnexttowardfnexttowardly方向にあるxの次の値を求める(long double)C99

最大、最小、正の差関数
関数名機能標準
doublefloatlongdouble
fdimfdimffdiml2つの引数の正の差を求めるC99
fmaxfmaxffmaxl2つの引数のうち大きいほうを求めるC99
fminfminffminl2つの引数のうち小さいほうを求めるC99

浮動小数点乗算加算
関数名機能標準
doublefloatlongdouble
fmafmaffmal積和演算の解を求めるC99

ベッセル関数
関数名機能標準
doublefloatlongdouble
j0j0fj0lxの0次第一種ベッセル関数BSD
j1j1fj1lxの1次第一種ベッセル関数BSD
jnjnfjnlxのn次第一種ベッセル関数BSD
y0y0fy0lxの0次第二種ベッセル関数BSD
y1y1fy1lxの1次第二種ベッセル関数BSD
ynynfynlxのn次第二種ベッセル関数BSD

分類用マクロ
マクロ名機能標準
fpclassify浮動小数点数の種類を求めるC99
isfinite浮動小数点数が有限の値かを判定するC99
isinf浮動小数点数が無限大かどうかを判定するC99
isnan浮動小数点数がNaN(非数)かどうかを判定するC99
isnormal浮動小数点数が正規化数かどうかを判定するC99
signbit浮動小数点数の符号を判定するC99

比較マクロ
 浮動小数点数のxまたはyがNaNでも例外を発生しない。
マクロ名機能標準
isgreater引数1番目が2番目より大きいかを判定するC99
isgreaterequal引数1番目が2番目より大きいまたは等しいかを判定するC99
isless引数1番目が2番目より小さいかを判定するC99
islessequal引数1番目が2番目より小さいまたは等しいかを判定するC99
islessgreater引数1番目が2番目より小さいまたは大きいかを判定するC99
isunordered引数のいずれかがNaNかを判定するC99

再検索