Commit 3b1e2a7b authored by Alexandre Julliard's avatar Alexandre Julliard

msvcrt: Use the remainder()/remainderf() implementation from the bundled musl library.

parent 64eed89a
...@@ -2325,9 +2325,9 @@ ...@@ -2325,9 +2325,9 @@
@ cdecl rand() @ cdecl rand()
@ cdecl rand_s(ptr) @ cdecl rand_s(ptr)
@ cdecl realloc(ptr long) @ cdecl realloc(ptr long)
@ cdecl remainder(double double) @ cdecl remainder(double double) MSVCRT_remainder
@ cdecl remainderf(float float) @ cdecl remainderf(float float) MSVCRT_remainderf
@ cdecl remainderl(double double) remainder @ cdecl remainderl(double double) MSVCRT_remainder
@ cdecl remove(str) @ cdecl remove(str)
@ cdecl remquo(double double ptr) @ cdecl remquo(double double ptr)
@ cdecl remquof(float float ptr) @ cdecl remquof(float float ptr)
......
...@@ -3350,36 +3350,34 @@ float CDECL _scalbf(float num, __msvcrt_long power) ...@@ -3350,36 +3350,34 @@ float CDECL _scalbf(float num, __msvcrt_long power)
return ldexp(num, power); return ldexp(num, power);
} }
#if _MSVCR_VER>=120 #if _MSVCR_VER == 120 /* other versions call remainder() directly */
/********************************************************************* /*********************************************************************
* remainder (MSVCR120.@) * remainder (MSVCR120.@)
*
* Copied from musl: src/math/remainder.c
*/ */
double CDECL remainder(double x, double y) double CDECL MSVCRT_remainder(double x, double y)
{ {
int q; #ifdef __x86_64__
#if _MSVCR_VER == 120 && defined(__x86_64__)
if (isnan(x) || isnan(y)) *_errno() = EDOM; if (isnan(x) || isnan(y)) *_errno() = EDOM;
#endif #endif
return remquo(x, y, &q); return remainder(x, y);
} }
/********************************************************************* /*********************************************************************
* remainderf (MSVCR120.@) * remainderf (MSVCR120.@)
*
* Copied from musl: src/math/remainderf.c
*/ */
float CDECL remainderf(float x, float y) float CDECL MSVCRT_remainderf(float x, float y)
{ {
int q; #ifdef __x86_64__
#if _MSVCR_VER == 120 && defined(__x86_64__)
if (isnan(x) || isnan(y)) *_errno() = EDOM; if (isnan(x) || isnan(y)) *_errno() = EDOM;
#endif #endif
return remquof(x, y, &q); return remainderf(x, y);
} }
#endif /* _MSVCR_VER == 120 */
#if _MSVCR_VER>=120
/********************************************************************* /*********************************************************************
* _except1 (MSVCR120.@) * _except1 (MSVCR120.@)
* TODO: * TODO:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment