Compute a residue, using floating-point modular arithmetic
#include <math.h>
double fmod( double x,
double y );
float fmodf( float x,
float y );
long double fmodl( long double x,
long double y );
The fmod() and fmodf() functions compute the floating-point residue of x (mod y), which is the remainder of x / y, even if the quotient x / y isn't representable.
The residue, x - (i × y), for some integer i such that, if y is nonzero, the result has the same sign as x and a magnitude less than the magnitude of y.
For a correct value that would cause an underflow, these functions return 0.0. The return value when y is zero is NaN. The return value when x is infinite is NaN.
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main( void )
{
printf( "%f\n", fmod( 4.5, 2.0 ) );
printf( "%f\n", fmod( -4.5, 2.0 ) );
printf( "%f\n", fmod( 4.5, -2.0 ) );
printf( "%f\n", fmod( -4.5, -2.0 ) );
return EXIT_SUCCESS;
}
produces the output:
0.500000 -0.500000 0.500000 -0.500000
| Safety: | |
|---|---|
| Cancellation point | No |
| Interrupt handler | No |
| Signal handler | No |
| Thread | Yes |