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

# NAME

`remainder`, `remainderf`, `remainderl`, `remquo`, `remquof`, `remquol`, `drem`, `dremf` — minimal residue functions

# SYNOPSIS

Math Library (libm, -lm)
`#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);

# DESCRIPTION

`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.

# SEE ALSO

fmod(3), nextafter(3)

# STANDARDS

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.

`drem`() and `dremf`() are deprecated aliases for `remainder`() and `remainderf`(), respectively.

# HISTORY

The `remainder`() and `remainderf`() functions appeared in 4.3BSD and NetBSD 1.2, respectively. The `remquo`() and `remquof`() functions were added in OpenBSD 4.4.

June 7, 2025 | Debian