NAME
remainder,
remainderf,
remquo,
remquof —
remainder functions
LIBRARY
Math Library (libm, -lm)
SYNOPSIS
#include <math.h>
double
remainder(
double
x,
double y);
float
remainderf(
float
x,
float y);
double
remquo(
double
x,
double y,
int *quo);
float
remquof(
float
x,
float y,
int *quo);
DESCRIPTION
Provided that
y ≠ 0 , the
remainder() and
remainderf() functions
calculate the floating-point remainder
r of
r =
x - ny,
where
n is the integral value nearest to the exact value
of
x /
y. If
| n -
x / y | = 1/2 ,
the value
n is chosen to be even. Consequently, the
remainder is computed exactly and |
r | ≤ |
y | / 2 .
Also the
remquo() and
remquof() functions
calculate the remainder as described above. But these additionally use
quo to store a value whose sign is the sign of
x / y and whose magnitude is congruent modulo
2^k to the magnitude of the integral quotient of
x / y, where
k is an
implementation-defined integer greater than or equal to 3.
The rationale of the
remquo() family of functions relates to
situations where only few bits of the quotient are required. The exact
representation of the quotient may not be meaningful when
x is large in magnitude compared to
y.
RETURN VALUES
The functions return the remainder independent of the rounding mode. If
y is zero , NaN is returned and a domain error occurs. A
domain error occurs and a NaN is returned also when
x is
infinite but
y is not a NaN. If either
x or
y is NaN, a NaN is always
returned.
SEE ALSO
div(3),
fast_remainder32(3),
fmod(3),
math(3)
STANDARDS
The described functions conform to
ISO/IEC 9899:1999
(“ISO C99”).