名 前
drem, dremf, dreml, remainder, remainderf, remainderl − 浮 動 小 数 点 剰 余 関 数
書 式
#include <math.h>
/* C99 版
*/
double remainder(double x, double
y);
float remainderf(float x, float
y);
long double remainderl(long double x, long
double y);
/* 廃
止 さ れ た 別 名 */
double drem(double x, double y);
float dremf(float x, float y);
long double dreml(long double x, long
double y);
−lm で リ ン ク す る 。
glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):
remainder():
_SVID_SOURCE || _BSD_SOURCE ||
_XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED ||
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
or cc −std=c99
remainderf(), remainderl():
_BSD_SOURCE || _SVID_SOURCE ||
_XOPEN_SOURCE >= 600 || _ISOC99_SOURCE ||
_POSIX_C_SOURCE >= 200112L;
or cc −std=c99
drem(), dremf(), dreml():
_SVID_SOURCE || _BSD_SOURCE
説 明
remainder() 関 数 は x を y で 割 っ た 余 り を 計 算 す る 。 返 り 値 は x−n*y で あ る 。 こ こ で n は x / y の 値 を 最 も 近 い 整 数 に 丸 め た も の で あ る 。 x−n*y の 絶 対 値 が 0.5 の 場 合 、 偶 数 に な る よ う に n が 選 ば れ る 。 こ れ ら の 関 数 は 、 現 在 の 丸 め モ ー ド の 影 響 を 受 け な い (丸 め モ ー ド に つ い て は fenv(3) を 参 照 )。
drem() 関 数 は こ れ と 全 く 同 じ 動 作 を す る 。
返 り 値
成 功 す る と 、 こ れ ら の 関 数 は 浮 動 小 数 点 の 剰 余 x−n*y を 返 す 。 返 り 値 が 0 の 場 合 、 そ の 符 号 は x と 同 じ に な る 。
x か y が NaN の 場 合 、 NaN が 返 さ れ る 。
x が 無 限 大 で y が NaN で な い 場 合 、 領 域 エ ラ ー (domain error) が 発 生 し 、 NaN が 返 さ れ る 。
y が ゼ ロ で x が NaN で な い 場 合 、 領 域 エ ラ ー (domain error) が 発 生 し 、 NaN が 返 さ れ る 。
エ ラ ー
こ れ ら の 関 数 を 呼 び 出 し た 際 に エ ラ ー が 発 生 し た か の 判 定 方 法 に つ い て の 情 報 は math_error(7) を 参 照 の こ と 。 以 下 の エ ラ ー が 発 生 す る 可 能 性 が あ る 。 領 域 エ ラ ー
(domain error): x
が 無 限 大 で y
が NaN で は な い 不
正 (invalid) 浮 動 小 数
点 例 外 (FE_INVALID) が
上 が る 。 こ れ
ら の 関 数 は 、
こ の 場 合 に errno
を 設 定 し な い
。 領 域 エ ラ ー :
y が ゼ ロ
errno に EDOM が 設 定 さ れ る 。 不 正 (invalid) 浮 動 小 数 点 例 外 (FE_INVALID) が 上 が る 。
準 拠
関 数 remainder(), remainderf(), remainderl() は C99 と POSIX.1−2001 で 規 定 さ れ て い る 。 関 数 drem() は 4.3BSD に 由 来 す る 。 float と long double 版 の dremf() と dreml() は 、 Tru64 や glibc2 の よ う な い く つ か の シ ス テ ム に 存 在 す る 。 こ れ ら の 関 数 の 使 用 は 避 け て 、 remainder() な ど を 使 用 す る こ と 。
バ グ
呼 び 出 し
remainder(nan(""), 0); を 行 う と 、 期 待 通 り Nan が 返 る が 、 誤 っ て 領 域 エ ラ ー が 発 生 す る 。 正 し く は エ ラ ー な し の Nan と な る べ き で あ る 。
例
"remainder(29.0, 3.0)" を 呼 び 出 す と −1 を 返 す 。
関 連 項 目
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。