名 前
fma, fmaf, fmal − 浮 動 小 数 点 数 の 積 と 和 を 計 算 す る
書 式
#include <math.h>
double
fma(double x, double y,
double z);
float fmaf(float x, float y,
float z);
long double fmal(long double x, long
double y, long double
z);
−lm で リ ン ク す る 。
glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):
fma(), fmaf(), fmal():
_XOPEN_SOURCE >= 600
|| _ISOC99_SOURCE ||
_POSIX_C_SOURCE >= 200112L;
or cc −std=c99
説 明
fma() 関 数 は x * y + z を 計 算 す る 。 結 果 は 、 一 つ の 三 項 演 算 と し て 現 在 の 丸 め モ ー ド に し た が っ て 丸 め ら れ る (fenv(3) 参 照 )。
返 り 値
こ れ ら の 関 数 は x * y + z の 、 一 つ の 三 項 演 算 と し て 丸 め ら れ た 値 を 返 す 。
x か y が NaN の 場 合 、 NaN が 返 さ れ る 。
y の x 倍 が ち ょ う ど 無 限 大 で 、 z が そ れ と は 反 対 の 符 号 の 無 限 大 の 場 合 、 領 域 エ ラ ー (domain error) が 発 生 し 、 NaN が 返 さ れ る 。
x と y の う ち 一 方 が 無 限 大 で 、 も う 一 方 が 0 で 、 z が NaN で な い 場 合 、 領 域 エ ラ ー が 発 生 し 、 NaN が 返 さ れ る 。
x と y の う ち 一 方 が 無 限 大 で 、 も う 一 方 が 0 で 、 z が NaN の 場 合 、 領 域 エ ラ ー が 発 生 し 、 NaN が 返 さ れ る 。
y の x 倍 が 0 の 無 限 大 倍 (も し く は そ の 逆 ) で は な く 、 z が NaN の 場 合 、 NaN が 返 さ れ る 。 結 果 が オ ー バ ー フ ロ ー す る 場 合 、 範 囲 エ ラ ー (range error) が 発 生 し 、 正 し い 符 号 の 無 限 大 が 返 さ れ る 。 結 果 が ア ン ダ ー フ ロ ー す る 場 合 、 範 囲 エ ラ ー が 発 生 し 、 符 号 付 き の 0 が 返 さ れ る 。
エ ラ ー
こ れ ら の 関 数 を 呼 び 出 し た 際 に エ ラ ー が 発 生 し た か の 判 定 方 法 に つ い て の 情 報 は math_error(7) を 参 照 の こ と 。 以 下 の エ ラ ー が 発 生 す る 可 能 性 が あ る 。 領 域 エ ラ ー :
x * y + z
か x * y が 無 効
で 、 z が NaN で は
な い 不 正 (invalid) 浮
動 小 数 点 例 外
(FE_INVALID) が 上 が る
。 範 囲 エ ラ ー
(range error): 結 果 の オ ー
バ ー フ ロ ー オ
ー バ ー フ ロ ー
浮 動 小 数 点 例
外 (FE_OVERFLOW) が 上 が
る 。 範 囲 エ ラ
ー
(range error): 結 果 の ア ン
ダ ー フ ロ ー ア
ン ダ ー フ ロ ー
浮 動 小 数 点 例
外 (FE_UNDERFLOW) が 上 が
る 。 こ れ ら の
関 数 は errno を 設
定 し な い 。
バ ー ジ ョ ン
こ れ ら の 関 数 は glibc バ ー ジ ョ ン 2.1 で 初 め て 登 場 し た 。
属 性
マ ル チ ス レ ッ デ ィ ン グ (pthreads(7) 参 照 ) 関 数 fma(), fmaf(), fmal() は ス レ ッ ド セ ー フ で あ る 。
準 拠
C99, POSIX.1−2001.
関 連 項 目
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。