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 |