Reactos
1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 */
4#ifndef _INC_MATH
5#define _INC_MATH
6
7#include <corecrt.h>
8
9#pragma pack(push,_CRT_PACKING)
10
11#ifdef __cplusplus
12extern "C" {
13#endif
14
15typedef float float_t;
16typedef double double_t;
17
18#ifndef _EXCEPTION_DEFINED
19#define _EXCEPTION_DEFINED
20 struct _exception {
21 int type;
22 char *name;
23 double arg1;
24 double arg2;
25 double retval;
26 };
27#endif
28
29#ifndef _COMPLEX_DEFINED
30#define _COMPLEX_DEFINED
31 struct _complex {
32 double x,y;
33 };
34#if !__STDC__ && !defined(__cplusplus)
35#define complex _complex
36#endif /* __STDC__ */
37#endif /* _COMPLEX_DEFINED */
38
39#define _DOMAIN 1
40#define _SING 2
41#define _OVERFLOW 3
42#define _UNDERFLOW 4
43#define _TLOSS 5
44#define _PLOSS 6
45
46#define EDOM 33
47#define ERANGE 34
48
49 _CRTIMP extern double const _HUGE;
50
51#define HUGE_VAL _HUGE
52
53#ifndef _HUGE_ENUF
54#define _HUGE_ENUF 1e+300
55#endif
56#define INFINITY ((float)(_HUGE_ENUF * _HUGE_ENUF))
57#define HUGE_VALD ((double)INFINITY)
58#define HUGE_VALF ((float)INFINITY)
59#define HUGE_VALL ((long double)INFINITY)
60#ifndef _UCRT_NEGATIVE_NAN
61// This operation creates a negative NAN adding a - to make it positive
62#ifdef _MSC_VER
63#define NAN (-(float)(INFINITY * 0.0F))
64#else
65#define NAN (__builtin_nanf(""))
66#endif
67#else
68// Keep this for backwards compatibility
69#ifdef _MSC_VER
70#define NAN ((float)(INFINITY * 0.0F))
71#else
72#define NAN (-__builtin_nanf(""))
73#endif
74#endif
75
76#define _DENORM (-2)
77#define _FINITE (-1)
78#define _INFCODE 1
79#define _NANCODE 2
80
81#define FP_INFINITE _INFCODE
82#define FP_NAN _NANCODE
83#define FP_NORMAL _FINITE
84#define FP_SUBNORMAL _DENORM
85#define FP_ZERO 0
86
87#ifndef __cplusplus
88#define _matherrl _matherr
89#endif
90
91#ifndef _CRT_ABS_DEFINED
92#define _CRT_ABS_DEFINED
93_Check_return_ int __cdecl abs(_In_ int x);
94_Check_return_ long __cdecl labs(_In_ long x);
95_Check_return_ long long __cdecl llabs(_In_ long long x);
96#endif
97
98_Check_return_ double __cdecl acos(_In_ double x);
99_Check_return_ double __cdecl asin(_In_ double x);
100_Check_return_ double __cdecl atan(_In_ double x);
101_Check_return_ double __cdecl atan2(_In_ double y, _In_ double x);
102_Check_return_ double __cdecl cos(_In_ double x);
103_Check_return_ double __cdecl cosh(_In_ double x);
104_Check_return_ double __cdecl exp(_In_ double x);
105_Check_return_ _CRT_JIT_INTRINSIC double __cdecl fabs(_In_ double x);
106_Check_return_ double __cdecl fmod(_In_ double x, _In_ double y);
107_Check_return_ double __cdecl log(_In_ double x);
108_Check_return_ double __cdecl log10(_In_ double x);
109_Check_return_ double __cdecl pow(_In_ double x, double y);
110_Check_return_ double __cdecl sin(_In_ double x);
111_Check_return_ double __cdecl sinh(_In_ double x);
112_Check_return_ _CRT_JIT_INTRINSIC double __cdecl sqrt(_In_ double x);
113_Check_return_ double __cdecl tan(_In_ double x);
114_Check_return_ double __cdecl tanh(_In_ double x);
115
116#if defined(_MSC_VER) && !defined(__clang__)
117/* Prevent the compiler from generating calls to _CIatan2 */
118#pragma function(atan2)
119#ifdef _M_AMD64
120/* Prevent the compiler from generating calls to __vdecl_xxx */
121#pragma function(cos,pow,sin,tan)
122#endif
123#endif
124
125#ifndef _CRT_MATHERR_DEFINED
126#define _CRT_MATHERR_DEFINED
127int __CRTDECL _matherr(_Inout_ struct _exception *exception);
128#endif
129
130#ifndef _CRT_ATOF_DEFINED
131#define _CRT_ATOF_DEFINED
132_Check_return_ _CRTIMP double __cdecl atof(_In_z_ const char *str);
133_Check_return_ _CRTIMP double __cdecl _atof_l(_In_z_ const char *str, _In_opt_ _locale_t locale); // vista+
134#endif /* _CRT_ATOF_DEFINED */
135
136#ifndef _SIGN_DEFINED
137#define _SIGN_DEFINED
138_Check_return_ _CRTIMP double __cdecl _copysign(_In_ double x, _In_ double sgn);
139_Check_return_ _CRTIMP double __cdecl _chgsign(_In_ double x);
140#endif
141
142_Check_return_ _CRTIMP double __cdecl _cabs(_In_ struct _complex a);
143_Check_return_ _CRTIMP double __cdecl _hypot(_In_ double x, _In_ double y);
144_Check_return_ _CRTIMP double __cdecl _j0(_In_ double x);
145_Check_return_ _CRTIMP double __cdecl _j1(_In_ double x);
146_Check_return_ _CRTIMP double __cdecl _jn(_In_ int x, _In_ double y);
147_Check_return_ _CRTIMP double __cdecl _nextafter(_In_ double x, _In_ double y);
148_Check_return_ _CRTIMP double __cdecl _y0(_In_ double x);
149_Check_return_ _CRTIMP double __cdecl _y1(_In_ double x);
150_Check_return_ _CRTIMP double __cdecl _yn(_In_ int x, _In_ double y);
151_Check_return_ _CRTIMP double __cdecl ceil(_In_ double x);
152_Check_return_ _CRTIMP double __cdecl floor(_In_ double x);
153_Check_return_ _CRTIMP double __cdecl frexp(_In_ double x, _Out_ int *y);
154_Check_return_ _CRTIMP double __cdecl ldexp(_In_ double x, _In_ int y);
155_Check_return_ _CRTIMP double __cdecl modf(_In_ double x, _Out_ double *y);
156
157#if defined(__i386__) || defined(_M_IX86)
158_Check_return_ _CRTIMP int __cdecl _set_SSE2_enable(_In_ int flag);
159#endif
160
161#if defined(__x86_64) || defined(_M_AMD64)
162_Check_return_ _CRTIMP float __cdecl _nextafterf(_In_ float x, _In_ float y);
163_Check_return_ _CRTIMP int __cdecl _isnanf(_In_ float x);
164_Check_return_ _CRTIMP int __cdecl _fpclassf(_In_ float x);
165#if defined(_MSC_VER) && !defined(__clang__)
166/* Prevent the compiler from generating calls to __vdecl_floor2 */
167#pragma function(floor)
168#endif
169#endif
170
171#if defined(__x86_64) || defined(_M_AMD64) || \
172 defined(__arm__) || defined(_M_ARM) || \
173 defined(__arm64__) || defined(_M_ARM64)
174_Check_return_ _CRTIMP int __cdecl _finitef(_In_ float x);
175_Check_return_ _CRTIMP float __cdecl _logbf(_In_ float x);
176#endif /* _M_AMD64 || _M_ARM || _M_ARM64 */
177
178#if defined(__ia64__) || defined (_M_IA64)
179_Check_return_ _CRTIMP float __cdecl ldexpf(_In_ float x, _In_ int y);
180_Check_return_ _CRTIMP long double __cdecl tanl(_In_ long double x);
181#else
182_Check_return_ __CRT_INLINE float __CRTDECL ldexpf(_In_ float x, _In_ int y) { return (float)ldexp(x, y); }
183_Check_return_ __CRT_INLINE long double __CRTDECL tanl(_In_ long double x) { return (tan((double)x)); }
184#endif
185
186#if defined(_CRTBLD)
187_Check_return_ float __cdecl fabsf(_In_ float x);
188#elif defined(__ia64__) || defined(_M_IA64) || \
189 defined(__arm__) || defined(_M_ARM) || \
190 defined(__arm64__) || defined(_M_ARM64)
191_Check_return_ _CRT_JIT_INTRINSIC _CRTIMP float __cdecl fabsf(_In_ float x);
192#else
193_Check_return_ __CRT_INLINE float __CRTDECL fabsf(_In_ float x) { return ((float)fabs((double)x)); }
194#endif /* _M_IA64 || _M_ARM || _M_ARM64 */
195
196_Check_return_ float __cdecl _chgsignf(_In_ float x);
197_Check_return_ float __cdecl _copysignf(_In_ float x, _In_ float y);
198_Check_return_ float __cdecl _hypotf(_In_ float x, _In_ float y);
199_Check_return_ float __cdecl acosf(_In_ float x);
200_Check_return_ float __cdecl asinf(_In_ float x);
201_Check_return_ float __cdecl atanf(_In_ float x);
202_Check_return_ float __cdecl atan2f(_In_ float x, _In_ float y);
203_Check_return_ float __cdecl ceilf(_In_ float x);
204_Check_return_ float __cdecl cosf(_In_ float x);
205_Check_return_ float __cdecl coshf(_In_ float x);
206_Check_return_ float __cdecl expf(_In_ float x);
207_Check_return_ float __cdecl floorf(_In_ float x);
208_Check_return_ float __cdecl fmodf(_In_ float x, _In_ float y);
209_Check_return_ float __cdecl logf(_In_ float x);
210_Check_return_ float __cdecl log10f(_In_ float x);
211_Check_return_ float __cdecl modff(_In_ float x, _Out_ float *y);
212_Check_return_ float __cdecl powf(_In_ float b, _In_ float e);
213_Check_return_ float __cdecl sinf(_In_ float x);
214_Check_return_ float __cdecl sinhf(_In_ float x);
215_Check_return_ float __cdecl sqrtf(_In_ float x);
216_Check_return_ float __cdecl tanf(_In_ float x);
217_Check_return_ float __cdecl tanhf(_In_ float x);
218
219#if defined(_MSC_VER) && !defined(__clang__)
220/* Make sure intrinsics don't get in our way */
221#if defined(_M_AMD64) || defined(_M_ARM) || defined(_M_ARM64)
222#pragma function(acosf,asinf,atanf,atan2f,ceilf,cosf,coshf,expf,floorf,fmodf,logf,log10f,powf,sinf,sinhf,sqrtf,tanf,tanhf)
223#endif /* defined(_M_AMD64) || defined(_M_ARM) || defined(_M_ARM64) */
224#if (_MSC_VER >= 1920)
225#pragma function(_hypotf)
226#endif
227#endif /* _MSC_VER */
228
229#if !defined(_CRTBLD)
230_Check_return_ __CRT_INLINE float _chgsignf(_In_ float x) { return (float)_chgsign((double)x); }
231_Check_return_ __CRT_INLINE float _copysignf(_In_ float x, _In_ float y) { return (float)_copysign((double)x, (double)y); }
232_Check_return_ __CRT_INLINE float _hypotf(_In_ float x, _In_ float y) { return (float)_hypot((double)x, (double)y); }
233_Check_return_ __CRT_INLINE float acosf(_In_ float x) { return (float)acos((double)x); }
234_Check_return_ __CRT_INLINE float asinf(_In_ float x) { return (float)asin((double)x); }
235_Check_return_ __CRT_INLINE float atanf(_In_ float x) { return (float)atan((double)x); }
236_Check_return_ __CRT_INLINE float atan2f(_In_ float x, _In_ float y) { return (float)atan2((double)x,(double)y); }
237_Check_return_ __CRT_INLINE float ceilf(_In_ float x) { return (float)ceil((double)x); }
238_Check_return_ __CRT_INLINE float cosf(_In_ float x) { return (float)cos((double)x); }
239_Check_return_ __CRT_INLINE float coshf(_In_ float x) { return (float)cosh((double)x); }
240_Check_return_ __CRT_INLINE float expf(_In_ float x) { return (float)exp((double)x); }
241_Check_return_ __CRT_INLINE float floorf(_In_ float x) { return (float)floor((double)x); }
242_Check_return_ __CRT_INLINE float fmodf(_In_ float x, _In_ float y) { return (float)fmod((double)x,(double)y); }
243_Check_return_ __CRT_INLINE float logf(_In_ float x) { return (float)log((double)x); }
244_Check_return_ __CRT_INLINE float log10f(_In_ float x) { return (float)log10((double)x); }
245_Check_return_ __CRT_INLINE float modff(_In_ float x, _Out_ float *y) { double _Di,_Df = modf((double)x,&_Di); *y = (float)_Di; return (float)_Df; }
246_Check_return_ __CRT_INLINE float powf(_In_ float x, _In_ float y) { return (float)pow((double)x,(double)y); }
247_Check_return_ __CRT_INLINE float sinf(_In_ float x) { return (float)sin((double)x); }
248_Check_return_ __CRT_INLINE float sinhf(_In_ float x) { return (float)sinh((double)x); }
249_Check_return_ __CRT_INLINE float sqrtf(_In_ float x) { return (float)sqrt((double)x); }
250_Check_return_ __CRT_INLINE float tanf(_In_ float x) { return (float)tan((double)x); }
251_Check_return_ __CRT_INLINE float tanhf(_In_ float x) { return (float)tanh((double)x); }
252#endif /* !defined(_CRTBLD) */
253
254_Check_return_ __CRT_INLINE double hypot(_In_ double x, _In_ double y) { return _hypot(x, y); }
255_Check_return_ __CRT_INLINE float hypotf(_In_ float x, _In_ float y) { return _hypotf(x, y); }
256_Check_return_ __CRT_INLINE float frexpf(_In_ float x, _Out_ int *y) { return ((float)frexp((double)x,y)); }
257
258/* long double equals double, so just use inline wrappers */
259_Check_return_ __CRT_INLINE long double acosl(_In_ long double x) { return (acos((double)x)); }
260_Check_return_ __CRT_INLINE long double asinl(_In_ long double x) { return (asin((double)x)); }
261_Check_return_ __CRT_INLINE long double atanl(_In_ long double x) { return (atan((double)x)); }
262_Check_return_ __CRT_INLINE long double atan2l(_In_ long double y, _In_ long double x) { return (atan2((double)y, (double)x)); }
263_Check_return_ __CRT_INLINE long double ceill(_In_ long double x) { return (ceil((double)x)); }
264_Check_return_ __CRT_INLINE long double cosl(_In_ long double x) { return (cos((double)x)); }
265_Check_return_ __CRT_INLINE long double coshl(_In_ long double x) { return (cosh((double)x)); }
266_Check_return_ __CRT_INLINE long double expl(_In_ long double x) { return (exp((double)x)); }
267_Check_return_ __CRT_INLINE long double fabsl(_In_ long double x) { return fabs((double)x); }
268_Check_return_ __CRT_INLINE long double floorl(_In_ long double x) { return (floor((double)x)); }
269_Check_return_ __CRT_INLINE long double fmodl(_In_ long double x, _In_ long double y) { return (fmod((double)x, (double)y)); }
270_Check_return_ __CRT_INLINE long double frexpl(_In_ long double x, _Out_ int *y) { return (frexp((double)x, y)); }
271_Check_return_ __CRT_INLINE long double hypotl(_In_ long double x, _In_ long double y) { return _hypot((double)x, (double)y); }
272_Check_return_ __CRT_INLINE long double logl(_In_ long double x) { return (log((double)x)); }
273_Check_return_ __CRT_INLINE long double log10l(_In_ long double x) { return (log10((double)x)); }
274_Check_return_ __CRT_INLINE long double powl(_In_ long double x, _In_ long double y) { return (pow((double)x, (double)y)); }
275_Check_return_ __CRT_INLINE long double sinl(_In_ long double x) { return (sin((double)x)); }
276_Check_return_ __CRT_INLINE long double sinhl(_In_ long double x) { return (sinh((double)x)); }
277_Check_return_ __CRT_INLINE long double sqrtl(_In_ long double x) { return (sqrt((double)x)); }
278_Check_return_ __CRT_INLINE long double tanhl(_In_ long double x) {return (tanh((double)x)); }
279_Check_return_ __CRT_INLINE long double _chgsignl(_In_ long double number) { return _chgsign((double)number); }
280_Check_return_ __CRT_INLINE long double _copysignl(_In_ long double number, _In_ long double sign) { return _copysign((double)number, (double)sign); }
281_Check_return_ __CRT_INLINE long double _hypotl(_In_ long double x, _In_ long double y) { return _hypot((double)x, (double)y); }
282_Check_return_ __CRT_INLINE long double ldexpl(_In_ long double x, _In_ int y) { return ldexp((double)x, y); }
283_Check_return_ __CRT_INLINE long double modfl(_In_ long double x, _Out_ long double *y) { return (long double)modf((double)x, (double *)y); }
284
285/* Support for some functions, not exported in MSVCRT */
286#if (_MSC_VER >= 1929) && !defined(__clang__)
287_Check_return_ long lrint(_In_ double x);
288_Check_return_ long lrintf(_In_ float x);
289_Check_return_ long lrintl(_In_ long double x);
290#pragma function(lrint, lrintf, lrintl)
291#endif
292
293#ifndef _CRTBLD
294_Check_return_ __CRT_INLINE double round(_In_ double x) { return (x < 0) ? ceil(x - 0.5f) : floor(x + 0.5); }
295_Check_return_ __CRT_INLINE float roundf(_In_ float x) { return (x < 0) ? ceilf(x - 0.5f) : floorf(x + 0.5); }
296_Check_return_ __CRT_INLINE long double roundl(_In_ long double x) { return (x < 0) ? ceill(x - 0.5f) : floorl(x + 0.5); }
297_Check_return_ __CRT_INLINE long lround(_In_ double x) { return (long)((x < 0) ? (x - 0.5f) : (x + 0.5)); }
298_Check_return_ __CRT_INLINE long lroundf(_In_ float x) { return (long)((x < 0) ? (x - 0.5f) : (x + 0.5)); }
299_Check_return_ __CRT_INLINE long lroundl(_In_ long double x) { return (long)((x < 0) ? (x - 0.5f) : (x + 0.5)); }
300_Check_return_ __CRT_INLINE long long llround(_In_ double x) { return (long long)((x < 0) ? (x - 0.5f) : (x + 0.5)); }
301_Check_return_ __CRT_INLINE long long llroundf(_In_ float x) { return (long long)((x < 0) ? (x - 0.5f) : (x + 0.5)); }
302_Check_return_ __CRT_INLINE long long llroundl(_In_ long double x) { return (long long)((x < 0) ? (x - 0.5f) : (x + 0.5)); }
303_Check_return_ __CRT_INLINE double rint(_In_ double x) { return round(x); }
304_Check_return_ __CRT_INLINE float rintf(_In_ float x) { return roundf(x); }
305_Check_return_ __CRT_INLINE long double rintl(_In_ long double x) { return roundl(x); }
306_Check_return_ __CRT_INLINE long lrint(_In_ double x) { return (long)((x < 0) ? (x - 0.5f) : (x + 0.5)); }
307_Check_return_ __CRT_INLINE long lrintf(_In_ float x) { return (long)((x < 0) ? (x - 0.5f) : (x + 0.5)); }
308_Check_return_ __CRT_INLINE long lrintl(_In_ long double x) { return (long)((x < 0) ? (x - 0.5f) : (x + 0.5)); }
309_Check_return_ __CRT_INLINE long long llrint(_In_ double x) { return (long long)((x < 0) ? (x - 0.5f) : (x + 0.5)); }
310_Check_return_ __CRT_INLINE long long llrintf(_In_ float x) { return (long long)((x < 0) ? (x - 0.5f) : (x + 0.5)); }
311_Check_return_ __CRT_INLINE long long llrintl(_In_ long double x) { return (long long)((x < 0) ? (x - 0.5f) : (x + 0.5)); }
312#ifdef _MSC_VER
313#define log2 _log2 // nasty hack, see CORE-18255
314#endif
315_Check_return_ __CRT_INLINE double log2(_In_ double x) { return log(x) / log(2); }
316#endif /* !_CRTBLD */
317
318#ifndef NO_OLDNAMES /* !__STDC__ */
319
320#define DOMAIN _DOMAIN
321#define SING _SING
322#define OVERFLOW _OVERFLOW
323#define UNDERFLOW _UNDERFLOW
324#define TLOSS _TLOSS
325#define PLOSS _PLOSS
326#define matherr _matherr
327//_CRTIMP extern double HUGE;
328#define HUGE _HUGE
329//_CRT_NONSTDC_DEPRECATE(_cabs) _CRTIMP double __cdecl cabs(_In_ struct _complex x);
330#define cabs _cabs
331
332_CRT_NONSTDC_DEPRECATE(_j0) _CRTIMP double __cdecl j0(_In_ double x);
333_CRT_NONSTDC_DEPRECATE(_j1) _CRTIMP double __cdecl j1(_In_ double x);
334_CRT_NONSTDC_DEPRECATE(_jn) _CRTIMP double __cdecl jn(_In_ int x, _In_ double y);
335_CRT_NONSTDC_DEPRECATE(_y0) _CRTIMP double __cdecl y0(_In_ double x);
336_CRT_NONSTDC_DEPRECATE(_y1) _CRTIMP double __cdecl y1(_In_ double x);
337_CRT_NONSTDC_DEPRECATE(_yn) _CRTIMP double __cdecl yn(_In_ int x, _In_ double y);
338
339#endif /* NO_OLDNAMES */
340
341#ifdef __cplusplus
342}
343#ifndef _CMATH_
344extern "C++" {
345
346//inline long abs(_In_ long x) { return labs(x); }
347_Check_return_ inline double abs(_In_ double x) throw() { return fabs(x); }
348
349_Check_return_ inline float abs(_In_ float x) throw() { return fabsf(x); }
350_Check_return_ inline float acos(_In_ float x) throw() { return acosf(x); }
351_Check_return_ inline float asin(_In_ float x) throw() { return asinf(x); }
352_Check_return_ inline float atan(_In_ float x) throw() { return atanf(x); }
353_Check_return_ inline float atan2(_In_ float y, _In_ float x) throw() { return atan2f(y, x); }
354_Check_return_ inline float ceil(_In_ float x) throw() { return ceilf(x); }
355_Check_return_ inline float copysign(_In_ float x, _In_ float y) throw() { return _copysignf(x, y); }
356_Check_return_ inline float cos(_In_ float x) throw() { return cosf(x); }
357_Check_return_ inline float cosh(_In_ float x) throw() { return coshf(x); }
358_Check_return_ inline float exp(_In_ float x) throw() { return expf(x); }
359_Check_return_ inline float fabs(_In_ float x) throw() { return fabsf(x); }
360_Check_return_ inline float floor(_In_ float x) throw() { return floorf(x); }
361_Check_return_ inline float fmod(_In_ float x, _In_ float y) throw() { return fmodf(x, y); }
362_Check_return_ inline float frexp(_In_ float x, _Out_ int * y) throw() { return frexpf(x, y); }
363_Check_return_ inline float hypot(_In_ float x, _In_ float y) throw() { return _hypotf(x, y); }
364_Check_return_ inline float ldexp(_In_ float x, _In_ int y) throw() { return ldexpf(x, y); }
365_Check_return_ inline float log(_In_ float x) throw() { return logf(x); }
366_Check_return_ inline float log10(_In_ float x) throw() { return log10f(x); }
367_Check_return_ inline float modf(_In_ float x, _Out_ float * y) throw() { return modff(x, y); }
368_Check_return_ inline float pow(_In_ float x, _In_ float y) throw() { return powf(x, y); }
369_Check_return_ inline float sin(_In_ float x) throw() { return sinf(x); }
370_Check_return_ inline float sinh(_In_ float x) throw() { return sinhf(x); }
371_Check_return_ inline float sqrt(_In_ float x) throw() { return sqrtf(x); }
372_Check_return_ inline float tan(_In_ float x) throw() { return tanf(x); }
373_Check_return_ inline float tanh(_In_ float x) throw() { return tanhf(x); }
374
375_Check_return_ inline long double abs(_In_ long double x) throw() { return fabsl(x); }
376_Check_return_ inline long double acos(_In_ long double x) throw() { return acosl(x); }
377_Check_return_ inline long double asin(_In_ long double x) throw() { return asinl(x); }
378_Check_return_ inline long double atan(_In_ long double x) throw() { return atanl(x); }
379_Check_return_ inline long double atan2(_In_ long double y, _In_ long double x) throw() { return atan2l(y, x); }
380_Check_return_ inline long double ceil(_In_ long double x) throw() { return ceill(x); }
381_Check_return_ inline long double copysign(_In_ long double x, _In_ long double y) throw() { return _copysignl(x, y); }
382_Check_return_ inline long double cos(_In_ long double x) throw() { return cosl(x); }
383_Check_return_ inline long double cosh(_In_ long double x) throw() { return coshl(x); }
384_Check_return_ inline long double exp(_In_ long double x) throw() { return expl(x); }
385_Check_return_ inline long double fabs(_In_ long double x) throw() { return fabsl(x); }
386_Check_return_ inline long double floor(_In_ long double x) throw() { return floorl(x); }
387_Check_return_ inline long double fmod(_In_ long double x, _In_ long double y) throw() { return fmodl(x, y); }
388_Check_return_ inline long double frexp(_In_ long double x, _Out_ int * y) throw() { return frexpl(x, y); }
389_Check_return_ inline long double hypot(_In_ long double x, _In_ long double y) throw() { return hypotl(x, y); }
390_Check_return_ inline long double ldexp(_In_ long double x, _In_ int y) throw() { return ldexpl(x, y); }
391_Check_return_ inline long double log(_In_ long double x) throw() { return logl(x); }
392_Check_return_ inline long double log10(_In_ long double x) throw() { return log10l(x); }
393_Check_return_ inline long double modf(_In_ long double x, _Out_ long double * y) throw() { return modfl(x, y); }
394_Check_return_ inline long double pow(_In_ long double x, _In_ long double y) throw() { return powl(x, y); }
395_Check_return_ inline long double sin(_In_ long double x) throw() { return sinl(x); }
396_Check_return_ inline long double sinh(_In_ long double x) throw() { return sinhl(x); }
397_Check_return_ inline long double sqrt(_In_ long double x) throw() { return sqrtl(x); }
398_Check_return_ inline long double tan(_In_ long double x) throw() { return tanl(x); }
399_Check_return_ inline long double tanh(_In_ long double x) throw() { return tanhl(x); }
400}
401#endif /* !_CMATH_ */
402#endif /* __cplusplus */
403
404#pragma pack(pop)
405
406#endif /* !_INC_MATH */
407
408#if defined(_USE_MATH_DEFINES) && !defined(_MATH_DEFINES_DEFINED)
409#define _MATH_DEFINES_DEFINED
410
411#define M_E 2.71828182845904523536
412#define M_LOG2E 1.44269504088896340736
413#define M_LOG10E 0.434294481903251827651
414#define M_LN2 0.693147180559945309417
415#define M_LN10 2.30258509299404568402
416#define M_PI 3.14159265358979323846
417#define M_PI_2 1.57079632679489661923
418#define M_PI_4 0.785398163397448309616
419#define M_1_PI 0.318309886183790671538
420#define M_2_PI 0.636619772367581343076
421#define M_2_SQRTPI 1.12837916709551257390
422#define M_SQRT2 1.41421356237309504880
423#define M_SQRT1_2 0.707106781186547524401
424
425#endif /* _USE_MATH_DEFINES */