fmod(3) Library Functions Manual fmod(3) fmod, fmodf, fmodl - LIBRARY Math library (libm, -lm) #include double fmod(double x, double y); float fmodf(float x, float y); long double fmodl(long double x, long double y); glibc (. feature_test_macros(7)): fmodf(), fmodl(): _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L || /* glibc 2.19: */ _DEFAULT_SOURCE || /* Glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE x y. : x - n * y, n -- x / y, . To obtain the modulus, more specifically, the Least Positive Residue, you will need to adjust the result from fmod like so: z = fmod(x, y); if (z < 0) z += y; An alternate way to express this is with fmod(fmod(x, y) + y, y), but the second fmod() usually costs way more than the one branch. x - n*y n; x, y. x y NaN, NaN. x , , NaN. y 0, , NaN. x +0 (-0) y , +0 (-0). math_error(7), , . : : x errno EDOM ( . ). (FE_INVALID). : y 0 errno EDOM. (FE_INVALID). attributes(7). +----------------------------+----------------------------------------------------------+--------------------------+ | | | | +----------------------------+----------------------------------------------------------+--------------------------+ |fmod(), fmodf(), fmodl() | | MT-Safe | +----------------------------+----------------------------------------------------------+--------------------------+ C11, POSIX.1-2008. C99, POSIX.1-2001. , double, SVr4, 4.3BSD, C89. Before glibc 2.10, the glibc implementation did not set errno to EDOM when a domain error occurred for an infinite x. The call fmod(372, 360) returns 348. The call fmod(-372, 360) returns -12. The call fmod(-372, -360) also returns -12. . remainder(3) Azamat Hackimov , Dmitry Bolkhovskikh , Yuri Kozlov ; GNU 3 , . . , , . Linux man-pages 6.06 31 2023 . fmod(3)