14#if (_CRT_HAS_CXX17 == 1) && !defined(_CRT_USE_C_TGMATH_H)
25#ifndef _CRT_SILENCE_NONCONFORMING_TGMATH_H
27#pragma message(_CRT_WARNING_MESSAGE("UCRT4000", \
28 "This header does not conform to the C99 standard. " \
29 "C99 functionality is available when compiling in C11 mode or higher (/std:c11). " \
30 "Functionality equivalent to the type-generic functions provided by tgmath.h is available " \
31 "in <ctgmath> when compiling as C++. " \
32 "If compiling in C++17 mode or higher (/std:c++17), this header will automatically include <ctgmath> instead. " \
33 "You can define _CRT_SILENCE_NONCONFORMING_TGMATH_H to acknowledge that you have received this warning."))
40#pragma warning(disable: _UCRT_DISABLED_WARNINGS)
44#define __tgmath_resolve_real_binary_op(X, Y) _Generic((X), \
47 default: _Generic((Y), \
52 float: _Generic((Y), \
59#define fabs(X) _Generic((X), \
68#define exp(X) _Generic((X), \
77#define log(X) _Generic((X), \
208#define pow(X, Y) _Generic((X), \
209 _Lcomplex: _Generic((Y), \
211 _Fcomplex: __cpowl_lc_fc, \
212 _Dcomplex: __cpowl_lc_dc, \
213 long double: __cpowl_lc_l, \
214 default: __cpowl_lc_d, \
215 float: __cpowl_lc_f \
218 _Fcomplex: _Generic((Y), \
219 _Lcomplex: __cpowl_fc_lc, \
221 _Dcomplex: __cpow_fc_dc, \
222 long double: __cpowl_fc_l, \
223 default: __cpow_fc_d, \
224 float: __cpowf_fc_f \
227 _Dcomplex: _Generic((Y), \
228 _Lcomplex: __cpowl_dc_lc, \
229 _Fcomplex: __cpow_dc_fc, \
231 long double: __cpowl_dc_l, \
232 default: __cpow_dc_d, \
236 long double: _Generic((Y), \
237 _Lcomplex: __cpowl_l_lc, \
238 _Fcomplex: __cpowl_l_fc, \
239 _Dcomplex: __cpowl_l_dc, \
243 float: _Generic((Y), \
244 _Lcomplex: __cpowl_f_lc, \
245 _Fcomplex: __cpowf_f_fc, \
246 _Dcomplex: __cpow_f_dc, \
252 default: _Generic((Y), \
253 _Lcomplex: __cpowl_d_lc, \
254 _Fcomplex: __cpow_d_fc, \
255 _Dcomplex: __cpow_d_dc, \
261#define sqrt(X) _Generic((X), \
265 long double: sqrtl, \
270#define sin(X) _Generic((X), \
279#define cos(X) _Generic((X), \
288#define tan(X) _Generic((X), \
297#define asin(X) _Generic((X), \
301 long double: asinl, \
306#define acos(X) _Generic((X), \
310 long double: acosl, \
315#define atan(X) _Generic((X), \
319 long double: atanl, \
324#define asinh(X) _Generic((X), \
325 _Lcomplex: casinhl, \
326 _Fcomplex: casinhf, \
328 long double: asinhl, \
333#define acosh(X) _Generic((X), \
334 _Lcomplex: cacoshl, \
335 _Fcomplex: cacoshf, \
337 long double: acoshl, \
342#define atanh(X) _Generic((X), \
343 _Lcomplex: catanhl, \
344 _Fcomplex: catanhf, \
346 long double: atanhl, \
351#define atan2(X, Y) _Generic(__tgmath_resolve_real_binary_op((X), (Y)), \
352 long double: atan2l, \
357#define cbrt(X) _Generic((X), \
358 long double: cbrtl, \
363#define ceil(X) _Generic((X), \
364 long double: ceill, \
369#define copysign(X, Y) _Generic(__tgmath_resolve_real_binary_op((X), (Y)), \
370 long double: copysignl, \
375#define erf(X) _Generic((X), \
381#define erfc(X) _Generic((X), \
382 long double: erfcl, \
387#define exp2(X) _Generic((X), \
388 long double: exp2l, \
393#define expm1(X) _Generic((X), \
394 long double: expm1l, \
399#define fdim(X, Y) _Generic(__tgmath_resolve_real_binary_op((X), (Y)), \
400 long double: fdiml, \
405#define floor(X) _Generic((X), \
406 long double: floorl, \
411#define fma(X, Y, Z) _Generic(__tgmath_resolve_real_binary_op((X), __tgmath_resolve_real_binary_op((Y), (Z))), \
417#define fmax(X, Y) _Generic(__tgmath_resolve_real_binary_op((X), (Y)), \
418 long double: fmaxl, \
423#define fmin(X, Y) _Generic(__tgmath_resolve_real_binary_op((X), (Y)), \
424 long double: fminl, \
429#define fmod(X, Y) _Generic(__tgmath_resolve_real_binary_op((X), (Y)), \
430 long double: fmodl, \
435#define frexp(X, INT_PTR) _Generic((X), \
436 long double: frexpl, \
441#define hypot(X, Y) _Generic(__tgmath_resolve_real_binary_op((X), (Y)), \
442 long double: hypotl, \
447#define ilogb(X) _Generic((X), \
448 long double: ilogbl, \
453#define ldexp(X, INT) _Generic((X), \
454 long double: ldexpl, \
459#define lgamma(X) _Generic((X), \
460 long double: lgammal, \
465#define llrint(X) _Generic((X), \
466 long double: llrintl, \
471#define llround(X) _Generic((X), \
472 long double: llroundl, \
477#define log10(X) _Generic((X), \
478 long double: log10l, \
483#define log1p(X) _Generic((X), \
484 long double: log1pl, \
489#define log2(X) _Generic((X), \
490 long double: log2l, \
495#define logb(X) _Generic((X), \
496 long double: logbl, \
501#define lrint(X) _Generic((X), \
502 long double: lrintl, \
507#define lround(X) _Generic((X), \
508 long double: lroundl, \
513#define nearbyint(X) _Generic((X), \
514 long double: nearbyintl, \
519#define nextafter(X, Y) _Generic(__tgmath_resolve_real_binary_op((X), (Y)), \
520 long double: nextafterl, \
525#define nexttoward(X, LONG_DOUBLE) _Generic((X), \
526 long double: nexttowardl, \
527 float: nexttowardf, \
528 default: nexttoward \
531#define remainder(X, Y) _Generic(__tgmath_resolve_real_binary_op((X), (Y)), \
532 long double: remainderl, \
537#define remquo(X, Y, INT_PTR) _Generic(__tgmath_resolve_real_binary_op((X), (Y)), \
538 long double: remquol, \
543#define rint(X) _Generic((X), \
544 long double: rintl, \
549#define round(X) _Generic((X), \
550 long double: roundl, \
555#define scalbln(X, LONG) _Generic((X), \
556 long double: scalblnl, \
561#define scalbn(X, INT) _Generic((X), \
562 long double: scalbnl, \
567#define tgamma(X) _Generic((X), \
568 long double: tgammal, \
573#define trunc(X) _Generic((X), \
574 long double: truncl, \
579inline double __carg_d(
double const __d)
584#define carg(X) _Generic((X), \
591inline _Dcomplex __conj_d(
double const __d)
596#define conj(X) _Generic((X), \
603inline double __creal_d(
double const __d)
609#define creal(X) _Generic((X), \
616inline double __cimag_d(
double const __d)
623#define cimag(X) _Generic((X), \
630inline _Dcomplex __cproj_d(
double const __d)
635#define cproj(X) _Generic((X), \
complex< _Tp > _STLP_CALL conj(const complex< _Tp > &__z)
double _Complex cpow(double _Complex, double _Complex)
double _Complex cproj(double _Complex)
double carg(double _Complex)
float _Complex cpowf(float _Complex, float _Complex)
long double _Complex cpowl(long double _Complex, long double _Complex)
_ACRTIMP _Lcomplex __cdecl _LCbuild(_In_ long double _Re, _In_ long double _Im)
_ACRTIMP _Fcomplex __cdecl _FCbuild(_In_ float _Re, _In_ float _Im)
_ACRTIMP _Dcomplex __cdecl _Cbuild(_In_ double _Re, _In_ double _Im)
#define _UCRT_DISABLE_CLANG_WARNINGS
#define _UCRT_RESTORE_CLANG_WARNINGS
#define _CRT_END_C_HEADER
#define _CRT_BEGIN_C_HEADER