型総称数学関数 (Type-Generic Mathematics)
| ヘッダ ファイル |
tgmath.h |
|---|---|
| 規格 | C99 |
| 概要 | ヘッダ math.h 及び complex.h を取り込み、幾つかの型総称マクロを定義する。 |
...つまり tgmath.h をインクルードする場合、math.h や complex.h のインクルードは不要です。
プラグマ
型
マクロ
引数付きマクロ
型総称 (ジェネリック) マクロです。引数を判断して math.h や complex.h で定義されている末尾に f l の付く関数に自動で展開します (modf(), nan() を除く)。
complex.h で定義されている先頭に c の付く関数も c が不要になります (carg(), cimag(), cproj(), creal() を除く)。
| 名前 | 機能 |
|---|---|
| acos() | 逆余弦を求めます。 |
| acosh() | 逆双曲線余弦を求めます。 |
| asin() | 逆正弦を求めます。 |
| asinh() | 逆双曲線正弦を求めます。 |
| atan() | 逆正接を求めます。 |
| atan2() | 逆正接を求めます。 |
| atanh() | 逆双曲線正接を求めます。 |
| carg() | 複素数偏角。 |
| cbrt() | 立方根を計算します。 |
| ceil() | 小数点以下を切り上げます。 |
| cimag() | 複素数虚部。 |
| conj() | 共役複素数。 |
| copysign() | x の絶対値で y の符号を持つ値を生成します。 |
| cos() | 余弦を求めます。 |
| cosh() | 双曲線余弦を求めます。 |
| cproj() | リーマン射影。 |
| creal() | 複素数実部。 |
| erf() | 誤差関数を計算します。 |
| erfc() | 余誤差関数を計算します。 |
| exp() | e(自然対数の底)の x 乗を計算します。 |
| exp2() | 2 の x 乗を計算します。 |
| expm1() | 自然対数の底 e の x 乗から 1 を引いた値を計算します。 |
| fabs() | 浮動小数点数の絶対値を返します。 |
| fdim() | x と y の正の差を求めます。 |
| floor() | 小数点以下を切り捨てます。 |
| fma() | (x*y)+z を 1 個の 3 項演算としてまとめて計算します (FMA)。 |
| fmax() | x と y のうち、大きい方の値を求めます。 |
| fmin() | x と y のうち、小さい方の値を求めます。 |
| fmod() | x を y で割った剰余を計算します。 |
| frexp() | 数値を仮数部と指数部に分割します。 |
| hypot() | 直角三角形の斜辺 (x2 + y2 の平方根) を計算します。 |
| ilogb() | 符号付き整数の値として x の指数を抽出します。 |
| ldexp() | x * 2^exp を計算します。 |
| lgamma() | ガンマ関数の絶対値の自然対数を計算します。 |
| llround() | 最も近い整数値に丸めます。戻り値の型は long long int です。 |
| log() | x の自然対数を計算します。 |
| log10() | 10 を底とする x の対数を計算します。 |
| log1p() | 1 を加えた値の e を底とする (自然) 対数を計算します。 |
| log2() | 2 を底とする x の対数を計算します。 |
| logb() | 浮動小数点形式における符号付き整数の値として x の指数を抽出します。 |
| lrint() | その時点の丸め方向に従って最も近い整数値に丸めます。 |
| lround() | 最も近い整数値に丸めます。戻り値の型は long int です。 |
| nearbyint() | "不正確結果" 浮動小数点例外を生成することなく、丸め方向に従って浮動小数点形式の整数値に丸めます。 |
| nextafter() | x と y を関数の型に変換し、実軸上で x から見て y の方向にある x の次に表現可能な値を求めます。 |
| nexttoward() | 2 番目の引数の型が long double に固定され、x が y と等しい場合に y をその関数の型に変換して返す事を除いて nextafter() と同じです。 |
| pow() | x の y 乗を計算します。 |
| remainder() | IEEE 60559 が要求する x と y の剰余 (REM) を計算します。 |
| remquo() | 符号と商の近似値を持つ値を、*quo に格納する事を除いて remainder() と同じです。 |
| rint() | 結果が実引数の値と異なる場合、"不正確結果" 浮動小数点例外を生成することがある事を除いて nearbyint() と同じです。 |
| round() | 浮動小数点形式の最も近い整数値に丸めます。 |
| scalbln() | 効率よく x * FLT_RADIX ^ n を計算します。戻り値の型は long int です。 |
| scalbn() | 効率よく x * FLT_RADIX ^ n を計算します。戻り値の型は int です。 |
| sin() | 正弦を求めます。 |
| sinh() | 双曲線正弦を求めます。 |
| sqrt() | 正の平方根を計算します。 |
| tan() | 正接を求めます。 |
| tanh() | 双曲線正接を求めます。 |
| tgamma() | x のガンマ関数を計算します。 |
| trunc() | 浮動小数点形式の最も近い整数値に丸めます。 |
型総称マクロを C 言語で記述する事はできないため、C99 では自分で書いた関数を型総称化する事はできません。C11 以降の総称選択 (_Generic) を使えば型総称マクロを記述可能です。
関数
資料
- C 言語 / 標準ライブラリ / tgmath.h (Wikibooks)
- z/OS C/C++ ランタイム・ライブラリー・リファレンス tgmath.h — 数学および複合データ型 (IBM)
- C 言語の標準ヘッダ一覧 tgmath.h (C 言語)