2 .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
3 .\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk
4 .\" <mtk.manpages@gmail.com>
6 .\" SPDX-License-Identifier: Linux-man-pages-copyleft
8 .\" References consulted:
9 .\" Linux libc source code
10 .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
13 .\" Modified 1993-07-24 by Rik Faith (faith@cs.unc.edu)
14 .\" Modified 2002-08-10 Walter Harms
15 .\" (walter.harms@informatik.uni-oldenburg.de)
16 .\" Modified 2003-11-18, 2004-10-05 aeb
18 .TH remainder 3 (date) "Linux man-pages (unreleased)"
20 drem, dremf, dreml, remainder, remainderf, remainderl \- \
21 floating-point remainder function
24 .RI ( libm ", " \-lm )
29 .BI "double remainder(double " x ", double " y );
30 .BI "float remainderf(float " x ", float " y );
31 .BI "long double remainderl(long double " x ", long double " y );
33 /* Obsolete synonyms */
34 .BI "[[deprecated]] double drem(double " x ", double " y );
35 .BI "[[deprecated]] float dremf(float " x ", float " y );
36 .BI "[[deprecated]] long double dreml(long double " x ", long double " y );
40 Feature Test Macro Requirements for glibc (see
41 .BR feature_test_macros (7)):
46 _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
47 || _XOPEN_SOURCE >= 500
48 .\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
49 || /* Since glibc 2.19: */ _DEFAULT_SOURCE
50 || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
56 _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
57 || /* Since glibc 2.19: */ _DEFAULT_SOURCE
58 || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
65 /* Since glibc 2.19: */ _DEFAULT_SOURCE
66 || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
70 functions compute the remainder of dividing
75 \fIx\fP\-\fIn\fP*\fIy\fP,
80 rounded to the nearest integer.
81 If the absolute value of
82 \fIx\fP\-\fIn\fP*\fIy\fP
87 These functions are unaffected by the current rounding mode (see
92 function does precisely the same thing.
95 functions return the floating-point remainder,
96 \fIx\fP\-\fIn\fP*\fIy\fP.
97 If the return value is 0, it has the sign of
104 is a NaN, a NaN is returned.
112 a domain error occurs, and
118 .\" FIXME . Instead, glibc gives a domain error even if x is a NaN
122 .\" Interestingly, remquo(3) does not have the same problem.
123 a domain error occurs, and
128 for information on how to determine whether an error has occurred
129 when calling these functions.
131 The following errors can occur:
133 Domain error: \fIx\fP is an infinity and \fIy\fP is not a NaN
138 An invalid floating-point exception
142 These functions do not set
146 Domain error: \fIy\fP is zero\" [XXX see bug above] and \fIx\fP is not a NaN
150 An invalid floating-point exception
154 For an explanation of the terms used in this section, see
160 Interface Attribute Value
170 T} Thread safety MT-Safe
207 .\" https://www.sourceware.org/bugzilla/show_bug.cgi?id=6779
212 remainder(nan(""), 0);
216 returned a NaN, as expected, but wrongly caused a domain error.
217 Since glibc 2.15, a silent NaN (i.e., no domain error) is returned.
220 .\" https://www.sourceware.org/bugzilla/show_bug.cgi?id=6783
224 for the domain error that occurs when
230 The call "remainder(29.0, 3.0)" returns \-1.