Next: , Previous: Rounding Functions, Up: Arithmetic Functions

#### 20.8.4 Remainder Functions

The functions in this section compute the remainder on division of two floating-point numbers. Each is a little different; pick the one that suits your problem.

— Function: double fmod (double numerator, double denominator)
— Function: float fmodf (float numerator, float denominator)
— Function: long double fmodl (long double numerator, long double denominator)

These functions compute the remainder from the division of numerator by denominator. Specifically, the return value is numerator` - `n` * `denominator, where n is the quotient of numerator divided by denominator, rounded towards zero to an integer. Thus, `fmod (6.5, 2.3)` returns `1.9`, which is `6.5` minus `4.6`.

The result has the same sign as the numerator and has magnitude less than the magnitude of the denominator.

If denominator is zero, `fmod` signals a domain error.

— Function: double drem (double numerator, double denominator)
— Function: float dremf (float numerator, float denominator)
— Function: long double dreml (long double numerator, long double denominator)

These functions are like `fmod` except that they rounds the internal quotient n to the nearest integer instead of towards zero to an integer. For example, `drem (6.5, 2.3)` returns `-0.4`, which is `6.5` minus `6.9`.

The absolute value of the result is less than or equal to half the absolute value of the denominator. The difference between `fmod (`numerator`, `denominator`)` and ```drem (```numerator`, `denominator`)` is always either denominator, minus denominator, or zero.

If denominator is zero, `drem` signals a domain error.

— Function: double remainder (double numerator, double denominator)
— Function: float remainderf (float numerator, float denominator)
— Function: long double remainderl (long double numerator, long double denominator)

This function is another name for `drem`.