diff --git a/dll/win32/ucrtbase/ucrtbase.spec b/dll/win32/ucrtbase/ucrtbase.spec index 1c40d48a557..6a9c022622f 100644 --- a/dll/win32/ucrtbase/ucrtbase.spec +++ b/dll/win32/ucrtbase/ucrtbase.spec @@ -306,7 +306,7 @@ @ cdecl -stub _dpcomp(double double) @ cdecl -stub _dpoly(double ptr long) @ cdecl -stub _dscale(ptr long) -@ cdecl -stub _dsign(double) +@ cdecl _dsign(double) @ cdecl -stub _dsin(double long) @ cdecl _dtest(ptr) @ cdecl -stub _dunscale(ptr ptr) @@ -349,7 +349,7 @@ @ cdecl -stub _fdpcomp(float float) @ cdecl -stub _fdpoly(float ptr long) @ cdecl -stub _fdscale(ptr long) -@ cdecl -stub _fdsign(float) +@ cdecl _fdsign(float) @ cdecl -stub _fdsin(float long) @ cdecl _fdtest(ptr) @ cdecl -stub _fdunscale(ptr ptr) diff --git a/sdk/lib/crt/math/_dsign.c b/sdk/lib/crt/math/_dsign.c new file mode 100644 index 00000000000..c4f6698146d --- /dev/null +++ b/sdk/lib/crt/math/_dsign.c @@ -0,0 +1,20 @@ +/* + * PROJECT: ReactOS CRT + * LICENSE: MIT (https://spdx.org/licenses/MIT) + * PURPOSE: Implementation of _dsign. + * COPYRIGHT: Copyright 2025 Timo Kreuzer + */ + +#include +#include + +_Check_return_ +int +__cdecl +_dsign(_In_ double _X) +{ + union { double f; uint64_t ui64; } u = { _X }; + + // This is what Windows returns + return (u.ui64 >> 48) & 0x8000; +} diff --git a/sdk/lib/crt/math/_fdsign.c b/sdk/lib/crt/math/_fdsign.c new file mode 100644 index 00000000000..37ff525fd09 --- /dev/null +++ b/sdk/lib/crt/math/_fdsign.c @@ -0,0 +1,20 @@ +/* + * PROJECT: ReactOS CRT + * LICENSE: MIT (https://spdx.org/licenses/MIT) + * PURPOSE: Implementation of _fdsign. + * COPYRIGHT: Copyright 2025 Timo Kreuzer + */ + +#include +#include + +_Check_return_ +int +__cdecl +_fdsign(_In_ float _X) +{ + union { float f; uint32_t ui32; } u = { _X }; + + // This is what Windows returns + return (u.ui32 >> 16) & 0x8000; +} diff --git a/sdk/lib/crt/math/math.cmake b/sdk/lib/crt/math/math.cmake index 7a00709d8a5..54acb6845b4 100644 --- a/sdk/lib/crt/math/math.cmake +++ b/sdk/lib/crt/math/math.cmake @@ -3,6 +3,8 @@ include_directories(libm_sse2) list(APPEND LIBCNTPR_MATH_SOURCE math/_chgsignf.c + math/_dsign.c + math/_fdsign.c math/_invoke_matherr.c math/abs.c math/div.c