LoginSignup
0
0

【C++Builder】C ランタイムライブラリリファレンス (math.h)

Last updated at Posted at 2024-03-04

数学関数 (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_tfloat_tfloat.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:

資料


⇦ インデックスへ

  1. C99 で追加された。 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0