remainder
,
remainderf
, remainderl
,
remquo
, remquof
,
remquol
— minimal residue
functions
#include
<math.h>
double
remainder
(double
x, double y);
float
remainderf
(float
x, float y);
long double
remainderl
(long
double x, long double
y);
double
remquo
(double
x, double y,
int *quo);
float
remquof
(float
x, float y,
int *quo);
long double
remquol
(long
double x, long double
y, int *quo);
remainder
(),
remainderf
(),
remainderl
(),
remquo
(), remquof
(), and
remquol
() return the remainder
r := x -
n∗y where n is the
integer nearest the exact value of
x/y; moreover if
|n -
x/y| =
1/2 then n is even. Consequently the remainder is
computed exactly and |r| ≤
|y|/2. But attempting to take
the remainder when y is 0 or x
is ±infinity is an invalid operation that produces a NaN.
The
remquo
(),
remquof
(),
and
remquol
()
functions also store the last k bits of
n in the location pointed to by
quo, provided that n exists. The
number of bits k is platform-specific, but is
guaranteed to be at least 3.
The remainder
(),
remainderf
(), remainderl
(),
remquo
(), remquof
(), and
remquol
() routines conform to
ISO/IEC 9899:1999 (“ISO C99”).
The remainder is as defined in IEEE Std
754-1985.
The remainder
() and
remainderf
() functions appeared in
4.3BSD and FreeBSD 2.0,
respectively. The remquo
() and
remquof
() functions were added in
FreeBSD 6.0, and
remainderl
() and remquol
()
were added in FreeBSD 8.0.