mirror of
https://github.com/reactos/reactos.git
synced 2025-07-24 16:33:49 +00:00
[CRT:MATH] Move some math functions from ucrt to crt
This commit is contained in:
parent
a9ee20cb9a
commit
b734e3ba63
8 changed files with 64 additions and 68 deletions
|
@ -1,48 +0,0 @@
|
|||
//
|
||||
// _dclass.c
|
||||
//
|
||||
// Copyright (c) 2024 Timo Kreuzer
|
||||
//
|
||||
// Implementation of _dclass.
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
//
|
||||
|
||||
#include <math.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1922)
|
||||
#pragma function(_dclass)
|
||||
#endif
|
||||
|
||||
//
|
||||
// Returns the floating-point classification of _X.
|
||||
//
|
||||
// FP_NAN - A quiet, signaling, or indeterminate NaN
|
||||
// FP_INFINITE - A positive or negative infinity
|
||||
// FP_NORMAL - A positive or negative normalized non-zero value
|
||||
// FP_SUBNORMAL - A positive or negative subnormal (denormalized) value
|
||||
// FP_ZERO - A positive or negative zero value
|
||||
//
|
||||
_Check_return_
|
||||
short
|
||||
__cdecl
|
||||
_dclass(_In_ double _X)
|
||||
{
|
||||
union { double f; uint64_t ui64; } u = { _X };
|
||||
uint64_t e = u.ui64 & 0x7FF0000000000000ull;
|
||||
uint64_t m = u.ui64 & 0x000FFFFFFFFFFFFFull;
|
||||
|
||||
if (e == 0x7FF0000000000000ull)
|
||||
{
|
||||
return m ? FP_NAN : FP_INFINITE;
|
||||
}
|
||||
else if (e == 0)
|
||||
{
|
||||
return m ? FP_SUBNORMAL : FP_ZERO;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FP_NORMAL;
|
||||
}
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
//
|
||||
// _dtest.c
|
||||
//
|
||||
// Copyright (c) 2024 Timo Kreuzer
|
||||
//
|
||||
// Implementation of _dtest.
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
//
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1922)
|
||||
#pragma function(_dtest)
|
||||
#endif
|
||||
|
||||
_Check_return_
|
||||
short
|
||||
__cdecl
|
||||
_dtest(_In_ double* _Px)
|
||||
{
|
||||
return _dclass(*_Px);
|
||||
}
|
|
@ -1,48 +0,0 @@
|
|||
//
|
||||
// _fdclass.c
|
||||
//
|
||||
// Copyright (c) 2024 Timo Kreuzer
|
||||
//
|
||||
// Implementation of _fdclass.
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
//
|
||||
|
||||
#include <math.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1922)
|
||||
#pragma function(_fdclass)
|
||||
#endif
|
||||
|
||||
//
|
||||
// Returns the floating-point classification of _X.
|
||||
//
|
||||
// FP_NAN - A quiet, signaling, or indeterminate NaN
|
||||
// FP_INFINITE - A positive or negative infinity
|
||||
// FP_NORMAL - A positive or negative normalized non-zero value
|
||||
// FP_SUBNORMAL - A positive or negative subnormal (denormalized) value
|
||||
// FP_ZERO - A positive or negative zero value
|
||||
//
|
||||
_Check_return_
|
||||
short
|
||||
__cdecl
|
||||
_fdclass(_In_ float _X)
|
||||
{
|
||||
union { float f; uint32_t ui32; } u = { _X };
|
||||
uint32_t e = u.ui32 & 0x7F800000u;
|
||||
uint32_t m = u.ui32 & 0x007FFFFFu;
|
||||
|
||||
if (e == 0x7F800000u)
|
||||
{
|
||||
return m ? FP_NAN : FP_INFINITE;
|
||||
}
|
||||
else if (e == 0)
|
||||
{
|
||||
return m ? FP_SUBNORMAL : FP_ZERO;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FP_NORMAL;
|
||||
}
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
//
|
||||
// _fdtest.c
|
||||
//
|
||||
// Copyright (c) 2024 Timo Kreuzer
|
||||
//
|
||||
// Implementation of _fdtest.
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
//
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1922)
|
||||
#pragma function(_fdtest)
|
||||
#endif
|
||||
|
||||
_Check_return_
|
||||
short
|
||||
__cdecl
|
||||
_fdtest(_In_ float* _Px)
|
||||
{
|
||||
return _fdclass(*_Px);
|
||||
}
|
|
@ -1,8 +1,4 @@
|
|||
|
||||
list(APPEND UCRT_MATH_SOURCES
|
||||
math/_dclass.c
|
||||
math/_dtest.c
|
||||
math/_fdclass.c
|
||||
math/_fdtest.c
|
||||
math/matherr.cpp
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue