The fmod() function returns the value x - i * y, for some integer i such that, if y is non-zero,
the result has the same sign as x and magnitude less than the magnitude of y.
If x or y is NaN, NaN is returned. If y is 0, NaN is returned and errno is set to EDOM. If x is +-Inf, NaN is returned. If y is non-zero, fmod(+-0,y) returns the value
of x. If x is not +-Inf, fmod(x,+-Inf) returns the value of x.
Portable applications should not call fmod() with y equal to 0, because the result is implementation-dependent. The application should verify y is non-zero before calling fmod().
An application wishing to check for error situations should set errno to 0 before calling fmod(). If errno is non-zero on return, or the return
value is NaN, an error has occurred.