msvcp: Add _Dtest implementation.
This commit is contained in:
parent
874c3f96f7
commit
1e9402124d
|
@ -2892,14 +2892,14 @@
|
||||||
@ extern _Denorm
|
@ extern _Denorm
|
||||||
@ stub _Dnorm
|
@ stub _Dnorm
|
||||||
@ stub _Dscale
|
@ stub _Dscale
|
||||||
@ stub _Dtest
|
@ cdecl _Dtest(ptr)
|
||||||
@ extern _Eps
|
@ extern _Eps
|
||||||
@ stub _Exp
|
@ stub _Exp
|
||||||
@ stub _FCosh
|
@ stub _FCosh
|
||||||
@ extern _FDenorm
|
@ extern _FDenorm
|
||||||
@ stub _FDnorm
|
@ stub _FDnorm
|
||||||
@ stub _FDscale
|
@ stub _FDscale
|
||||||
@ stub _FDtest
|
@ cdecl _FDtest(ptr)
|
||||||
@ extern _FEps
|
@ extern _FEps
|
||||||
@ stub _FExp
|
@ stub _FExp
|
||||||
@ extern _FInf
|
@ extern _FInf
|
||||||
|
@ -2920,7 +2920,7 @@
|
||||||
@ stub _LCosh
|
@ stub _LCosh
|
||||||
@ extern _LDenorm
|
@ extern _LDenorm
|
||||||
@ stub _LDscale
|
@ stub _LDscale
|
||||||
@ stub _LDtest
|
@ cdecl _LDtest(ptr) _Dtest
|
||||||
@ extern _LEps
|
@ extern _LEps
|
||||||
@ stub _LExp
|
@ stub _LExp
|
||||||
@ extern _LInf
|
@ extern _LInf
|
||||||
|
|
|
@ -3745,7 +3745,7 @@
|
||||||
@ cdecl _Do_call(ptr)
|
@ cdecl _Do_call(ptr)
|
||||||
@ stub _Dscale
|
@ stub _Dscale
|
||||||
@ stub _Dtento
|
@ stub _Dtento
|
||||||
@ stub _Dtest
|
@ cdecl _Dtest(ptr)
|
||||||
@ stub _Dunscale
|
@ stub _Dunscale
|
||||||
@ extern _Eps
|
@ extern _Eps
|
||||||
@ stub _Exp
|
@ stub _Exp
|
||||||
|
@ -3755,7 +3755,7 @@
|
||||||
@ stub _FDnorm
|
@ stub _FDnorm
|
||||||
@ stub _FDscale
|
@ stub _FDscale
|
||||||
@ stub _FDtento
|
@ stub _FDtento
|
||||||
@ stub _FDtest
|
@ cdecl _FDtest(ptr)
|
||||||
@ stub _FDunscale
|
@ stub _FDunscale
|
||||||
@ extern _FEps
|
@ extern _FEps
|
||||||
@ stub _FExp
|
@ stub _FExp
|
||||||
|
@ -3791,7 +3791,7 @@
|
||||||
@ stub _LDint
|
@ stub _LDint
|
||||||
@ stub _LDscale
|
@ stub _LDscale
|
||||||
@ stub _LDtento
|
@ stub _LDtento
|
||||||
@ stub _LDtest
|
@ cdecl _LDtest(ptr) _Dtest
|
||||||
@ stub _LDunscale
|
@ stub _LDunscale
|
||||||
@ extern _LEps
|
@ extern _LEps
|
||||||
@ stub _LExp
|
@ stub _LExp
|
||||||
|
|
|
@ -3686,7 +3686,7 @@
|
||||||
@ cdecl _Do_call(ptr)
|
@ cdecl _Do_call(ptr)
|
||||||
@ stub _Dscale
|
@ stub _Dscale
|
||||||
@ stub _Dtento
|
@ stub _Dtento
|
||||||
@ stub _Dtest
|
@ cdecl _Dtest(ptr)
|
||||||
@ stub _Dunscale
|
@ stub _Dunscale
|
||||||
@ extern _Eps
|
@ extern _Eps
|
||||||
@ stub _Exp
|
@ stub _Exp
|
||||||
|
@ -3696,7 +3696,7 @@
|
||||||
@ stub _FDnorm
|
@ stub _FDnorm
|
||||||
@ stub _FDscale
|
@ stub _FDscale
|
||||||
@ stub _FDtento
|
@ stub _FDtento
|
||||||
@ stub _FDtest
|
@ cdecl _FDtest(ptr)
|
||||||
@ stub _FDunscale
|
@ stub _FDunscale
|
||||||
@ extern _FEps
|
@ extern _FEps
|
||||||
@ stub _FExp
|
@ stub _FExp
|
||||||
|
@ -3734,7 +3734,7 @@
|
||||||
@ stub _LDint
|
@ stub _LDint
|
||||||
@ stub _LDscale
|
@ stub _LDscale
|
||||||
@ stub _LDtento
|
@ stub _LDtento
|
||||||
@ stub _LDtest
|
@ cdecl _LDtest(ptr) _Dtest
|
||||||
@ stub _LDunscale
|
@ stub _LDunscale
|
||||||
@ extern _LEps
|
@ extern _LEps
|
||||||
@ stub _LExp
|
@ stub _LExp
|
||||||
|
|
|
@ -18,10 +18,25 @@
|
||||||
|
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
#include "wine/test.h"
|
#include "wine/test.h"
|
||||||
#include "winbase.h"
|
#include "winbase.h"
|
||||||
|
|
||||||
|
static inline float __port_infinity(void)
|
||||||
|
{
|
||||||
|
static const unsigned __inf_bytes = 0x7f800000;
|
||||||
|
return *(const float *)&__inf_bytes;
|
||||||
|
}
|
||||||
|
#define INFINITY __port_infinity()
|
||||||
|
|
||||||
|
static inline float __port_nan(void)
|
||||||
|
{
|
||||||
|
static const unsigned __nan_bytes = 0x7fc00000;
|
||||||
|
return *(const float *)&__nan_bytes;
|
||||||
|
}
|
||||||
|
#define NAN __port_nan()
|
||||||
|
|
||||||
typedef int MSVCRT_long;
|
typedef int MSVCRT_long;
|
||||||
typedef unsigned char MSVCP_bool;
|
typedef unsigned char MSVCP_bool;
|
||||||
|
|
||||||
|
@ -70,6 +85,7 @@ static _Cvtvec* (__cdecl *p__Getcvt)(_Cvtvec*);
|
||||||
static void (CDECL *p__Call_once)(int *once, void (CDECL *func)(void));
|
static void (CDECL *p__Call_once)(int *once, void (CDECL *func)(void));
|
||||||
static void (CDECL *p__Call_onceEx)(int *once, void (CDECL *func)(void*), void *argv);
|
static void (CDECL *p__Call_onceEx)(int *once, void (CDECL *func)(void*), void *argv);
|
||||||
static void (CDECL *p__Do_call)(void *this);
|
static void (CDECL *p__Do_call)(void *this);
|
||||||
|
static short (__cdecl *p__Dtest)(double *d);
|
||||||
|
|
||||||
/* filesystem */
|
/* filesystem */
|
||||||
static ULONGLONG(__cdecl *p_tr2_sys__File_size)(char const*);
|
static ULONGLONG(__cdecl *p_tr2_sys__File_size)(char const*);
|
||||||
|
@ -119,6 +135,8 @@ static BOOL init(void)
|
||||||
"_Call_onceEx");
|
"_Call_onceEx");
|
||||||
SET(p__Do_call,
|
SET(p__Do_call,
|
||||||
"_Do_call");
|
"_Do_call");
|
||||||
|
SET(p__Dtest,
|
||||||
|
"_Dtest");
|
||||||
if(sizeof(void*) == 8) { /* 64-bit initialization */
|
if(sizeof(void*) == 8) { /* 64-bit initialization */
|
||||||
SET(p_tr2_sys__File_size,
|
SET(p_tr2_sys__File_size,
|
||||||
"?_File_size@sys@tr2@std@@YA_KPEBD@Z");
|
"?_File_size@sys@tr2@std@@YA_KPEBD@Z");
|
||||||
|
@ -407,6 +425,32 @@ static void test__Do_call(void)
|
||||||
ok(cnt == 1, "func was not called\n");
|
ok(cnt == 1, "func was not called\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test__Dtest(void)
|
||||||
|
{
|
||||||
|
double d;
|
||||||
|
short ret;
|
||||||
|
|
||||||
|
d = 0;
|
||||||
|
ret = p__Dtest(&d);
|
||||||
|
ok(ret == FP_ZERO, "_Dtest(0) returned %x\n", ret);
|
||||||
|
|
||||||
|
d = 1;
|
||||||
|
ret = p__Dtest(&d);
|
||||||
|
ok(ret == FP_NORMAL, "_Dtest(1) returned %x\n", ret);
|
||||||
|
|
||||||
|
d = -1;
|
||||||
|
ret = p__Dtest(&d);
|
||||||
|
ok(ret == FP_NORMAL, "_Dtest(-1) returned %x\n", ret);
|
||||||
|
|
||||||
|
d = INFINITY;
|
||||||
|
ret = p__Dtest(&d);
|
||||||
|
ok(ret == FP_INFINITE, "_Dtest(INF) returned %x\n", ret);
|
||||||
|
|
||||||
|
d = NAN;
|
||||||
|
ret = p__Dtest(&d);
|
||||||
|
ok(ret == FP_NAN, "_Dtest(NAN) returned %x\n", ret);
|
||||||
|
}
|
||||||
|
|
||||||
static void test_tr2_sys__File_size(void)
|
static void test_tr2_sys__File_size(void)
|
||||||
{
|
{
|
||||||
ULONGLONG val;
|
ULONGLONG val;
|
||||||
|
@ -910,6 +954,7 @@ START_TEST(msvcp120)
|
||||||
test__Getcvt();
|
test__Getcvt();
|
||||||
test__Call_once();
|
test__Call_once();
|
||||||
test__Do_call();
|
test__Do_call();
|
||||||
|
test__Dtest();
|
||||||
|
|
||||||
test_tr2_sys__File_size();
|
test_tr2_sys__File_size();
|
||||||
test_tr2_sys__Equivalent();
|
test_tr2_sys__Equivalent();
|
||||||
|
|
|
@ -3686,7 +3686,7 @@
|
||||||
@ cdecl _Do_call(ptr) msvcp120._Do_call
|
@ cdecl _Do_call(ptr) msvcp120._Do_call
|
||||||
@ stub _Dscale
|
@ stub _Dscale
|
||||||
@ stub _Dtento
|
@ stub _Dtento
|
||||||
@ stub _Dtest
|
@ cdecl _Dtest(ptr) msvcp120._Dtest
|
||||||
@ stub _Dunscale
|
@ stub _Dunscale
|
||||||
@ extern _Eps msvcp120._Eps
|
@ extern _Eps msvcp120._Eps
|
||||||
@ stub _Exp
|
@ stub _Exp
|
||||||
|
@ -3696,7 +3696,7 @@
|
||||||
@ stub _FDnorm
|
@ stub _FDnorm
|
||||||
@ stub _FDscale
|
@ stub _FDscale
|
||||||
@ stub _FDtento
|
@ stub _FDtento
|
||||||
@ stub _FDtest
|
@ cdecl _FDtest(ptr) msvcp120._FDtest
|
||||||
@ stub _FDunscale
|
@ stub _FDunscale
|
||||||
@ extern _FEps msvcp120._FEps
|
@ extern _FEps msvcp120._FEps
|
||||||
@ stub _FExp
|
@ stub _FExp
|
||||||
|
@ -3734,7 +3734,7 @@
|
||||||
@ stub _LDint
|
@ stub _LDint
|
||||||
@ stub _LDscale
|
@ stub _LDscale
|
||||||
@ stub _LDtento
|
@ stub _LDtento
|
||||||
@ stub _LDtest
|
@ cdecl _LDtest(ptr) msvcp120._LDtest
|
||||||
@ stub _LDunscale
|
@ stub _LDunscale
|
||||||
@ extern _LEps msvcp120._LEps
|
@ extern _LEps msvcp120._LEps
|
||||||
@ stub _LExp
|
@ stub _LExp
|
||||||
|
|
|
@ -4258,14 +4258,14 @@
|
||||||
@ extern _Denorm _Denorm
|
@ extern _Denorm _Denorm
|
||||||
@ stub _Dnorm
|
@ stub _Dnorm
|
||||||
@ stub _Dscale
|
@ stub _Dscale
|
||||||
@ stub _Dtest
|
@ cdecl _Dtest(ptr)
|
||||||
@ extern _Eps _Eps
|
@ extern _Eps _Eps
|
||||||
@ stub _Exp
|
@ stub _Exp
|
||||||
@ stub _FCosh
|
@ stub _FCosh
|
||||||
@ extern _FDenorm _FDenorm
|
@ extern _FDenorm _FDenorm
|
||||||
@ stub _FDnorm
|
@ stub _FDnorm
|
||||||
@ stub _FDscale
|
@ stub _FDscale
|
||||||
@ stub _FDtest
|
@ cdecl _FDtest(ptr)
|
||||||
@ extern _FEps _FEps
|
@ extern _FEps _FEps
|
||||||
@ stub _FExp
|
@ stub _FExp
|
||||||
@ extern _FInf _FInf
|
@ extern _FInf _FInf
|
||||||
|
@ -4282,7 +4282,7 @@
|
||||||
@ stub _LCosh
|
@ stub _LCosh
|
||||||
@ extern _LDenorm _LDenorm
|
@ extern _LDenorm _LDenorm
|
||||||
@ stub _LDscale
|
@ stub _LDscale
|
||||||
@ stub _LDtest
|
@ cdecl _LDtest(ptr) _Dtest
|
||||||
@ extern _LEps _LEps
|
@ extern _LEps _LEps
|
||||||
@ stub _LExp
|
@ stub _LExp
|
||||||
@ extern _LInf _LInf
|
@ extern _LInf _LInf
|
||||||
|
|
|
@ -5044,14 +5044,14 @@
|
||||||
@ extern _Denorm
|
@ extern _Denorm
|
||||||
@ stub _Dnorm
|
@ stub _Dnorm
|
||||||
@ stub _Dscale
|
@ stub _Dscale
|
||||||
@ stub _Dtest
|
@ cdecl _Dtest(ptr)
|
||||||
@ extern _Eps
|
@ extern _Eps
|
||||||
@ stub _Exp
|
@ stub _Exp
|
||||||
@ stub _FCosh
|
@ stub _FCosh
|
||||||
@ extern _FDenorm
|
@ extern _FDenorm
|
||||||
@ stub _FDnorm
|
@ stub _FDnorm
|
||||||
@ stub _FDscale
|
@ stub _FDscale
|
||||||
@ stub _FDtest
|
@ cdecl _FDtest(ptr)
|
||||||
@ extern _FEps
|
@ extern _FEps
|
||||||
@ stub _FExp
|
@ stub _FExp
|
||||||
@ extern _FInf
|
@ extern _FInf
|
||||||
|
@ -5069,7 +5069,7 @@
|
||||||
@ stub _LCosh
|
@ stub _LCosh
|
||||||
@ extern _LDenorm
|
@ extern _LDenorm
|
||||||
@ stub _LDscale
|
@ stub _LDscale
|
||||||
@ stub _LDtest
|
@ cdecl _LDtest(ptr) _Dtest
|
||||||
@ extern _LEps
|
@ extern _LEps
|
||||||
@ stub _LExp
|
@ stub _LExp
|
||||||
@ extern _LInf
|
@ extern _LInf
|
||||||
|
|
|
@ -5098,14 +5098,14 @@
|
||||||
@ extern _Denorm
|
@ extern _Denorm
|
||||||
@ stub _Dnorm
|
@ stub _Dnorm
|
||||||
@ stub _Dscale
|
@ stub _Dscale
|
||||||
@ stub _Dtest
|
@ cdecl _Dtest(ptr)
|
||||||
@ extern _Eps
|
@ extern _Eps
|
||||||
@ stub _Exp
|
@ stub _Exp
|
||||||
@ stub _FCosh
|
@ stub _FCosh
|
||||||
@ extern _FDenorm
|
@ extern _FDenorm
|
||||||
@ stub _FDnorm
|
@ stub _FDnorm
|
||||||
@ stub _FDscale
|
@ stub _FDscale
|
||||||
@ stub _FDtest
|
@ cdecl _FDtest(ptr)
|
||||||
@ extern _FEps
|
@ extern _FEps
|
||||||
@ stub _FExp
|
@ stub _FExp
|
||||||
@ extern _FInf
|
@ extern _FInf
|
||||||
|
@ -5125,7 +5125,7 @@
|
||||||
@ stub _LCosh
|
@ stub _LCosh
|
||||||
@ extern _LDenorm
|
@ extern _LDenorm
|
||||||
@ stub _LDscale
|
@ stub _LDscale
|
||||||
@ stub _LDtest
|
@ cdecl _LDtest(ptr) _Dtest
|
||||||
@ extern _LEps
|
@ extern _LEps
|
||||||
@ stub _LExp
|
@ stub _LExp
|
||||||
@ extern _LInf
|
@ extern _LInf
|
||||||
|
|
|
@ -5705,7 +5705,7 @@
|
||||||
@ stub _Dnorm
|
@ stub _Dnorm
|
||||||
@ stub _Dscale
|
@ stub _Dscale
|
||||||
@ stub _Dtentox
|
@ stub _Dtentox
|
||||||
@ stub _Dtest
|
@ cdecl _Dtest(ptr)
|
||||||
@ stub _Dunscale
|
@ stub _Dunscale
|
||||||
@ extern _Eps
|
@ extern _Eps
|
||||||
@ stub _Exp
|
@ stub _Exp
|
||||||
|
@ -5714,7 +5714,7 @@
|
||||||
@ stub _FDnorm
|
@ stub _FDnorm
|
||||||
@ stub _FDscale
|
@ stub _FDscale
|
||||||
@ stub _FDtentox
|
@ stub _FDtentox
|
||||||
@ stub _FDtest
|
@ cdecl _FDtest(ptr)
|
||||||
@ stub _FDunscale
|
@ stub _FDunscale
|
||||||
@ extern _FEps
|
@ extern _FEps
|
||||||
@ stub _FExp
|
@ stub _FExp
|
||||||
|
@ -5736,7 +5736,7 @@
|
||||||
@ extern _LDenorm
|
@ extern _LDenorm
|
||||||
@ stub _LDscale
|
@ stub _LDscale
|
||||||
@ stub _LDtentox
|
@ stub _LDtentox
|
||||||
@ stub _LDtest
|
@ cdecl _LDtest(ptr) _Dtest
|
||||||
@ stub _LDunscale
|
@ stub _LDunscale
|
||||||
@ extern _LEps
|
@ extern _LEps
|
||||||
@ stub _LExp
|
@ stub _LExp
|
||||||
|
|
|
@ -2226,3 +2226,37 @@ complex_double* __cdecl complex_double_sqrt(complex_double *ret, const complex_d
|
||||||
complex_double c = { 0.5, 0 };
|
complex_double c = { 0.5, 0 };
|
||||||
return complex_double_pow(ret, l, &c);
|
return complex_double_pow(ret, l, &c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static short dclass(double x)
|
||||||
|
{
|
||||||
|
switch(_fpclass(x)) {
|
||||||
|
case _FPCLASS_SNAN:
|
||||||
|
case _FPCLASS_QNAN:
|
||||||
|
return FP_NAN;
|
||||||
|
case _FPCLASS_NINF:
|
||||||
|
case _FPCLASS_PINF:
|
||||||
|
return FP_INFINITE;
|
||||||
|
case _FPCLASS_ND:
|
||||||
|
case _FPCLASS_PD:
|
||||||
|
return FP_SUBNORMAL;
|
||||||
|
case _FPCLASS_NN:
|
||||||
|
case _FPCLASS_PN:
|
||||||
|
default:
|
||||||
|
return FP_NORMAL;
|
||||||
|
case _FPCLASS_NZ:
|
||||||
|
case _FPCLASS_PZ:
|
||||||
|
return FP_ZERO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* _Dtest */
|
||||||
|
short __cdecl _Dtest(double *x)
|
||||||
|
{
|
||||||
|
return dclass(*x);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* _FDtest */
|
||||||
|
short __cdecl _FDtest(float *x)
|
||||||
|
{
|
||||||
|
return dclass(*x);
|
||||||
|
}
|
||||||
|
|
|
@ -6480,14 +6480,14 @@
|
||||||
@ extern _Denorm
|
@ extern _Denorm
|
||||||
@ stub _Dnorm
|
@ stub _Dnorm
|
||||||
@ stub _Dscale
|
@ stub _Dscale
|
||||||
@ stub _Dtest
|
@ cdecl _Dtest(ptr)
|
||||||
@ extern _Eps
|
@ extern _Eps
|
||||||
@ stub _Exp
|
@ stub _Exp
|
||||||
@ stub _FCosh
|
@ stub _FCosh
|
||||||
@ extern _FDenorm
|
@ extern _FDenorm
|
||||||
@ stub _FDnorm
|
@ stub _FDnorm
|
||||||
@ stub _FDscale
|
@ stub _FDscale
|
||||||
@ stub _FDtest
|
@ cdecl _FDtest(ptr)
|
||||||
@ extern _FEps
|
@ extern _FEps
|
||||||
@ stub _FExp
|
@ stub _FExp
|
||||||
@ extern _FInf
|
@ extern _FInf
|
||||||
|
@ -6507,7 +6507,7 @@
|
||||||
@ stub _LCosh
|
@ stub _LCosh
|
||||||
@ extern _LDenorm
|
@ extern _LDenorm
|
||||||
@ stub _LDscale
|
@ stub _LDscale
|
||||||
@ stub _LDtest
|
@ cdecl _LDtest(ptr) _Dtest
|
||||||
@ extern _LEps
|
@ extern _LEps
|
||||||
@ stub _LExp
|
@ stub _LExp
|
||||||
@ extern _LInf
|
@ extern _LInf
|
||||||
|
|
|
@ -146,6 +146,12 @@ static const union {
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define FP_INFINITE 1
|
||||||
|
#define FP_NAN 2
|
||||||
|
#define FP_NORMAL -1
|
||||||
|
#define FP_SUBNORMAL -2
|
||||||
|
#define FP_ZERO 0
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue