#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 || _ISOC99_SOURCE; or
cc -std=c99
remainderf(),
remainderl():
_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE; or
cc -std=c99
drem(),
dremf(),
dreml():
_SVID_SOURCE || _BSD_SOURCE
これらの関数は、現在の丸めモードの影響を受けない (丸めモードについては fenv(3) を参照)。
x か y が NaN の場合、NaN が返される。
x が無限大で y が NaN でない場合、 領域エラー (domain error) が発生し、NaN が返される。
y がゼロで x が NaN でない場合、 領域エラーが発生し、NaN が返される。
以下のエラーが発生する可能性がある。
関数 drem() は 4.3BSD に由来する。 float と long double 版の dremf() と dreml() は、Tru64 や glibc2 のようないくつかのシステムに存在する。 これらの関数の使用は避けて、 remainder() などを使用すること。
remainder(nan(""), 0);
の呼び出しを行うと、期待通り Nan が返るが、誤って領域エラーが発生する。 正しくはエラーなしの Nan となるべきである。