diff --git a/libs/libc/math/lib_fmod.c b/libs/libc/math/lib_fmod.c index c321086aeb1..7f6a789f917 100644 --- a/libs/libc/math/lib_fmod.c +++ b/libs/libc/math/lib_fmod.c @@ -43,10 +43,8 @@ double fmod(double x, double div) { double n0; - x /= div; - x = modf(x, &n0); - x *= div; + modf(x / div, &n0); - return x; + return x - n0 * div; } #endif diff --git a/libs/libc/math/lib_fmodf.c b/libs/libc/math/lib_fmodf.c index 9db337688d1..b907af9f52c 100644 --- a/libs/libc/math/lib_fmodf.c +++ b/libs/libc/math/lib_fmodf.c @@ -39,9 +39,7 @@ float fmodf(float x, float div) { float n0; - x /= div; - x = modff(x, &n0); - x *= div; + modff(x / div, &n0); - return x; + return x - n0 * div; } diff --git a/libs/libc/math/lib_fmodl.c b/libs/libc/math/lib_fmodl.c index eb2b6633308..593ba03d9ae 100644 --- a/libs/libc/math/lib_fmodl.c +++ b/libs/libc/math/lib_fmodl.c @@ -43,10 +43,8 @@ long double fmodl(long double x, long double div) { long double n0; - x /= div; - x = modfl(x, &n0); - x *= div; + modfl(x / div, &n0); - return x; + return x - n0 * div; } #endif diff --git a/libs/libc/math/lib_modf.c b/libs/libc/math/lib_modf.c index bbd45a1656f..e1ac2355080 100644 --- a/libs/libc/math/lib_modf.c +++ b/libs/libc/math/lib_modf.c @@ -46,12 +46,12 @@ double modf(double x, double *iptr) } else if (fabs(x) < 1.0) { - *iptr = (x * 0.0); + *iptr = 0.0; return x; } else { - *iptr = (double)(int64_t) x; + *iptr = (double)(int64_t)x; return (x - *iptr); } } diff --git a/libs/libc/math/lib_modff.c b/libs/libc/math/lib_modff.c index 8757c3ae01c..7c068509cd7 100644 --- a/libs/libc/math/lib_modff.c +++ b/libs/libc/math/lib_modff.c @@ -44,7 +44,7 @@ float modff(float x, float *iptr) } else if (fabsf(x) < 1.0F) { - *iptr = (x * 0.0F); + *iptr = 0.0F; return x; } else diff --git a/libs/libc/math/lib_modfl.c b/libs/libc/math/lib_modfl.c index b28f2aa124e..49fd4f11282 100644 --- a/libs/libc/math/lib_modfl.c +++ b/libs/libc/math/lib_modfl.c @@ -49,12 +49,12 @@ long double modfl(long double x, long double *iptr) } else if (fabsl(x) < 1.0) { - *iptr = (x * 0.0); + *iptr = 0.0; return x; } else { - *iptr = (long double)(int64_t) x; + *iptr = (long double)(int64_t)x; return (x - *iptr); } }