Reactos
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_
11float
12__cdecl
13fabsf(
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}