From 361143252bf23b6f29eead49a3715fdd6d552e8a Mon Sep 17 00:00:00 2001 From: Martin Storsjo Date: Wed, 28 Jul 2021 14:41:51 +0200 Subject: [PATCH] msvcrt: Make the coshf function NAN preserving. Signed-off-by: Martin Storsjo Signed-off-by: Piotr Caban Signed-off-by: Alexandre Julliard --- dlls/msvcrt/math.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c index 4e5dedd3576..92bf12b4d54 100644 --- a/dlls/msvcrt/math.c +++ b/dlls/msvcrt/math.c @@ -1137,6 +1137,7 @@ static float __expo2f(float x, float sign) float CDECL coshf( float x ) { UINT32 ui = *(UINT32*)&x; + UINT32 sign = ui & 0x80000000; float t; /* |x| */ @@ -1160,7 +1161,10 @@ float CDECL coshf( float x ) } /* |x| > log(FLT_MAX) or nan */ - t = __expo2f(x, 1.0f); + if (ui > 0x7f800000) + *(UINT32*)&t = ui | sign | 0x400000; + else + t = __expo2f(x, 1.0f); return t; }