1 /* 2 * PROJECT: ReactOS CRT library 3 * LICENSE: MIT (https://spdx.org/licenses/MIT) 4 * PURPOSE: Portable implementation of fabsf 5 * COPYRIGHT: Copyright 2021 Timo Kreuzer <timo.kreuzer@reactos.org> 6 */ 7 8 #include <math.h> 9 10 _Check_return_ 11 float 12 __cdecl 13 fabsf( 14 _In_ float x) 15 { 16 /* Load the value as uint */ 17 unsigned int u32 = *(unsigned int*)&x; 18 19 /* Clear the sign bit */ 20 u32 &= ~(1 << 31); 21 22 /* Check for NAN */ 23 if (u32 > 0x7F800000) 24 { 25 /* Set error bit */ 26 *(unsigned int*)&x |= 0x00400000; 27 return x; 28 } 29 30 /* Convert back to float */ 31 return *(float*)&u32; 32 } 33