seclan のほえほえルーム

| |

・プログラミング言語 C の新機能 Part LIII: math.h: 関数: 操作/最大/最小/正の差/乗算して加算関数 (2000/03/12 [])
 長かったけれども、math.h に追加された関数は今回第三回目で最終回です。

操作関数(manipulation functions)
名前プロトタイプ解説
copysign
doublecopysign(double x, double y);
floatcopysignf(float x, float y);
long doublecopysignl(long double x, long double y);
 x の値と y の符号を持った新しい値を返します。
nan
doublenan(const char *p);
floatnanf(const char *p);
long doublenanl(const char *p);
 (sprintf(buf, "NAN(%s)", p), strtod(buf, NULL)) と同じ、もしくは、もし p の指す先が NAN(...) に対し有効な文字を指していないとき、または空文字列を指していないときは strtod("NAN", NULL) と同じ、非例外発生(quiet) NaN を返す。もし 非例外発生(quiet) NaN をサポートしていなければ 0 を返す。
nextafter
doublenextafter(double x, double y);
floatnextafterf(float x, float y);
long doublenextafterl(long double x, long double y);
 y 方向での x の次に表現可能な値を返す。x と y が等しいときは y を返す。range error の可能性あり。
nexttoward
doublenexttoward(double x, long double y);
floatnexttowardf(float x, long double y);
long doublenexttowardl(long double x, long double y);
 nextafter の第二パラメータ long double 版。


最大/最小/正の差関数(maximum, minimum and positive difference functions)
名前プロトタイプ解説
fmax
doublefmax(double x, double y);
floatfmaxf(float x, float y);
long doublefmaxl(long double x, long double y);
 x と y のうち、大きい方の値を返す。
fmin
doublefmin(double x, double y);
floatfminf(float x, float y);
long doublefminl(long double x, long double y);
 x と y のうち、小さい方の値を返す。
fdim
doublefdim(double x, double y);
floatfdimf(float x, float y);
long doublefdiml(long double x, long double y);
 x > y なら x-y を、それ以外なら +0 を返す。range error の可能性あり。


乗算して加算する関数
名前プロトタイプ解説
fma
doublefma(double x, double y, double z);
floatfmaf(float x, float y, float z);
long doublefmal(long double x, long double y, long double z);
 x * y + z を返す。丸めは FLT_ROUNDS に従って最後に一度だけ行われる。また、FP_FAST_FMA, FP_FAST_FMAF, FP_FAST_FMAL が定義されていると、それぞれ対応する関数で x * y + z と個別に計算するより高速に計算できる(例えばハードウエアでの一命令による直接計算)。



by seclan


| |

 

配信

4.4 msec