Content-type: text/html
fmod, drem, remainder - Compute the floating-point remainder
#include <math.h>
double fmod (double x, double y); float fmodf (float x, float y); double drem (double x, double y); float dremf (float x, float y); double remainder (double x, double y); float remainderf (float x, float y);
Interfaces documented on this reference page conform to industry standards as follows:
fmod(): XPG4
remainder(): XPG4-UNIX
Refer to the standards(5) reference page for more information about industry standards and associated tags.
The fmod() and fmodf() functions return the remainder r = x - n*y, where n = trunc(x/y). The result has the same sign as x and magnitude less than the magnitude of y. The remainder is computed exactly and |r| is less than or equal to |y|/2.
The drem(), dremf(), remainder(), and remainderf() functions return the remainder r = x - n*y, where n = rint(x/y). Additionally, if |n - x/y|=1/2, then n is even. The remainder is computed exactly and |r| is less than or equal to |y|/2.
The drem() and remainder() functions are aliases of each other. The dremf(), and remainderf() functions are aliases of each other.
The following table describes function behavior in response to exceptional arguments:
Function | Exceptional Argument | Routine Behavior |
fmod(), fmodf() | x = infinity | Invalid argument |
fmod(), fmodf() | y = 0 | Invalid argument |
drem(), dremf() | x = infinity | Invalid argument |
drem(), dremf() | y = 0 | Invalid argument |
remainder() | x = infinity | Invalid argument |
remainderf() | x = infinity | Invalid argument |
remainder() | y = 0 | Invalid argument |
remainderf() | y = 0 | Invalid argument |