REMAINDER(3) | Library Functions Manual | REMAINDER(3)

# 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”).

September 18, 2011 | NetBSD 9.0