mirror of
https://github.com/reactos/reactos.git
synced 2026-05-30 23:33:24 +08:00
[CRT:MATH] Implement _finite, _finitef
This commit is contained in:
@@ -371,7 +371,7 @@
|
||||
@ cdecl _findnext64(long ptr)
|
||||
@ cdecl _findnext64i32(long ptr)
|
||||
@ cdecl _finite(double)
|
||||
@ cdecl -stub -arch=!i386 _finitef(float)
|
||||
@ cdecl -arch=!i386 _finitef(float)
|
||||
@ cdecl _flushall()
|
||||
@ cdecl _fpclass(double)
|
||||
@ cdecl -stub -arch=!i386 _fpclassf(float)
|
||||
|
||||
@@ -36,19 +36,3 @@ int CDECL _isnan(double __x)
|
||||
x.__x = &__x;
|
||||
return ( x.x->exponent == 0x7ff && ( x.x->mantissah != 0 || x.x->mantissal != 0 ));
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
int CDECL _finite(double __x)
|
||||
{
|
||||
union
|
||||
{
|
||||
double* __x;
|
||||
double_s* x;
|
||||
} x;
|
||||
|
||||
x.__x = &__x;
|
||||
|
||||
return ((x.x->exponent & 0x7ff) != 0x7ff);
|
||||
}
|
||||
|
||||
19
sdk/lib/crt/math/_finite.c
Normal file
19
sdk/lib/crt/math/_finite.c
Normal file
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* PROJECT: ReactOS CRT
|
||||
* LICENSE: MIT (https://spdx.org/licenses/MIT)
|
||||
* PURPOSE: Implementation of _finite.
|
||||
* COPYRIGHT: Copyright 2025 Timo Kreuzer <timo.kreuzer@reactos.org>
|
||||
*/
|
||||
|
||||
#include <float.h>
|
||||
#include <stdint.h>
|
||||
|
||||
_Check_return_
|
||||
int
|
||||
__cdecl
|
||||
_finite(_In_ double _X)
|
||||
{
|
||||
union { double f; uint64_t ui64; } u = { _X };
|
||||
uint64_t exp = u.ui64 & 0x7FF0000000000000;
|
||||
return (exp != 0x7FF0000000000000);
|
||||
}
|
||||
19
sdk/lib/crt/math/_finitef.c
Normal file
19
sdk/lib/crt/math/_finitef.c
Normal file
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* PROJECT: ReactOS CRT
|
||||
* LICENSE: MIT (https://spdx.org/licenses/MIT)
|
||||
* PURPOSE: Implementation of _finitef.
|
||||
* COPYRIGHT: Copyright 2025 Timo Kreuzer <timo.kreuzer@reactos.org>
|
||||
*/
|
||||
|
||||
#include <float.h>
|
||||
#include <stdint.h>
|
||||
|
||||
_Check_return_
|
||||
int
|
||||
__cdecl
|
||||
_finitef(_In_ float _X)
|
||||
{
|
||||
union { float f; uint32_t ui32; } u = { _X };
|
||||
uint32_t exp = u.ui32 & 0x7F800000;
|
||||
return (exp != 0x7F800000);
|
||||
}
|
||||
@@ -5,6 +5,8 @@ list(APPEND LIBCNTPR_MATH_SOURCE
|
||||
math/_chgsignf.c
|
||||
math/_dsign.c
|
||||
math/_fdsign.c
|
||||
math/_finite.c
|
||||
math/_finitef.c
|
||||
math/_invoke_matherr.c
|
||||
math/abs.c
|
||||
math/div.c
|
||||
|
||||
Reference in New Issue
Block a user