REMAINDER

Section: Linux Programmer's Manual (3)
Updated: 2020-06-09
Index JM Home Page
 

名前

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():

_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
    || _XOPEN_SOURCE >= 500
    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

remainderf(), remainderl():
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
    || /* Since glibc 2.19: */ _DEFAULT_SOURCE
    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

drem(), dremf(), dreml():
/* Since glibc 2.19: */ _DEFAULT_SOURCE
    || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
 

説明

これらの関数は 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 ではない
errno に EDOM が設定される (「バグ」の節も参照)。 不正 (invalid) 浮動小数点例外 (FE_INVALID) が上がる。
これらの関数は、この場合に errno を設定しない。
領域エラー: y がゼロ errno に EDOM が設定される。 不正 (invalid) 浮動小数点例外 (FE_INVALID) が上がる。
 

属性

この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース 属性 値
drem(), dremf(), dreml(),
remainder(), remainderf(),
remainderl()
Thread safety MT-Safe
 

準拠

関数 remainder(), remainderf(), remainderl() は C99, POSIX.1-2001, POSIX.1-2008 で規定されている。

関数 drem() は 4.3BSD に由来する。 float と long double 版の dremf() と dreml() は、Tru64 や glibc2 のようないくつかのシステムに存在する。 これらの関数の使用は避けて、 remainder() などを使用すること。  

バグ

glibc 2.15 より前では、


    remainder(nan(""), 0);

を行うと、期待通り Nan が返るが、誤って領域エラーが発生した。 glibc 2.15 以降では、エラーなしの Nan (すなわち、領域エラーなし) が返される。

Before glibc 2.15, errno was not set to EDOM for the domain error that occurs when x is an infinity and y is not a NaN.  

例

"remainder(29.0, 3.0)" を呼び出すと -1 を返す。  

関連項目

div(3), fmod(3), remquo(3)  

この文書について

この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。

関連キーワード

double   領域   remainder   浮動   小数点   float   long   domain   Since   versions   drem   dremf   dreml   remainderf   remainderl   剰余   返り値   モード   無限大   バグ   不正   invalid   math   廃止   別名

Linux マニュアル 一覧

関連するコマンド・関数

drem.3   dremf.3   dreml.3   remainder.3   remainderf.3   fmod.3
 

Index

名前
書式
説明
返り値
エラー
属性
準拠
バグ
例
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:39:20 GMT, October 11, 2026