1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-01-15 21:07:15 +00:00
oot/src/code/fmodf.c
mzxrules 8d83727429
Experiment: remove global.h dependency from sys_math, sys_math3d, z_lib (#1956)
* split sys_math, sys_math3d, z_lib from global.h

* suggestions

* forgot this

* more math stuff

* nit fix

* re-add ichain.h

* resolve tharo's comments
2024-06-19 00:00:23 -04:00

27 lines
754 B
C

#include "ultra64.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 n;
if (y == 0.0f) {
return 0.0f;
}
n = x / y;
return x - (n * y);
}