mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 22:02:58 +00:00
[CRT:MATH] Implement _finite, _finitef
This commit is contained in:
parent
50028685dc
commit
e01231bd49
5 changed files with 41 additions and 17 deletions
|
@ -371,7 +371,7 @@
|
||||||
@ cdecl _findnext64(long ptr)
|
@ cdecl _findnext64(long ptr)
|
||||||
@ cdecl _findnext64i32(long ptr)
|
@ cdecl _findnext64i32(long ptr)
|
||||||
@ cdecl _finite(double)
|
@ cdecl _finite(double)
|
||||||
@ cdecl -stub -arch=!i386 _finitef(float)
|
@ cdecl -arch=!i386 _finitef(float)
|
||||||
@ cdecl _flushall()
|
@ cdecl _flushall()
|
||||||
@ cdecl _fpclass(double)
|
@ cdecl _fpclass(double)
|
||||||
@ cdecl -stub -arch=!i386 _fpclassf(float)
|
@ cdecl -stub -arch=!i386 _fpclassf(float)
|
||||||
|
|
|
@ -36,19 +36,3 @@ int CDECL _isnan(double __x)
|
||||||
x.__x = &__x;
|
x.__x = &__x;
|
||||||
return ( x.x->exponent == 0x7ff && ( x.x->mantissah != 0 || x.x->mantissal != 0 ));
|
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/_chgsignf.c
|
||||||
math/_dsign.c
|
math/_dsign.c
|
||||||
math/_fdsign.c
|
math/_fdsign.c
|
||||||
|
math/_finite.c
|
||||||
|
math/_finitef.c
|
||||||
math/_invoke_matherr.c
|
math/_invoke_matherr.c
|
||||||
math/abs.c
|
math/abs.c
|
||||||
math/div.c
|
math/div.c
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue