diff options
Diffstat (limited to 'src/code/fmodf.c')
| -rw-r--r-- | src/code/fmodf.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/code/fmodf.c b/src/code/fmodf.c index 6cc69dd87..e1e386223 100644 --- a/src/code/fmodf.c +++ b/src/code/fmodf.c @@ -1,12 +1,27 @@ #include "global.h" +/** + * Computes one `x` modulo `y` for floats. + * + * Acts like the standard C fmodf except does not handle Infinity. See https://en.cppreference.com/w/c/numeric/math/fmod + * for the details. It summarizes this function as follows: + * "The floating-point remainder of the division operation x/y calculated by this function is exactly the value x - n*y, + * where n is x/y with its fractional part truncated. + * + * The returned value has the same sign as x and is less or equal to y in magnitude." + * + * @param x dividend + * @param y modulus + * + * @return f32 0.0f if y is 0.0f, or x modulo y otherwise + */ f32 fmodf(f32 x, f32 y) { - s32 quot; + s32 n; if (y == 0.0f) { return 0.0f; } - quot = x / y; + n = x / y; - return x - (quot * y); + return x - (n * y); } |
