You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
4.2 KiB
111 lines
4.2 KiB
/* tgmath.h: ISO/IEC 9899:1999 (C99), section 7.22 */
|
|
|
|
/* Copyright (C) ARM Ltd., 2006
|
|
* All rights reserved
|
|
* RCS $Revision: 177844 $
|
|
* Checkin $Date: 2012-11-21 11:51:12 +0000 (Wed, 21 Nov 2012) $
|
|
* Revising $Author: statham $
|
|
*/
|
|
|
|
#ifndef __tgmath_h
|
|
#define __tgmath_h
|
|
#define __ARMCLIB_VERSION 5050106
|
|
|
|
#include <math.h>
|
|
|
|
#define _ARM_GENERIC1(F,x) __generic(x,,, F, F##f, F##l,,,)(x)
|
|
#define _ARM_GENERIC2(F,x,y) __generic(x,y,, F, F##f, F##l,,,)(x, y)
|
|
#define _ARM_GENERIC1I(F,x,i) __generic(x,,, F, F##f, F##l,,,)(x, i)
|
|
#define _ARM_GENERIC3(F,x,y,z) __generic(x,y,z, F, F##f, F##l,,,)(x, y, z)
|
|
#define _ARM_GENERIC2I(F,x,y,i) __generic(x,y,, F, F##f, F##l,,,)(x, y, i)
|
|
|
|
/* only do complex variants for --c99 */
|
|
#if __STDC_VERSION__ >= 199901L
|
|
# include <complex.h>
|
|
# define _ARM_GENERIC1C(F,x) __generic(x,,, F, F##f, F##l, c##F, c##F##f, c##F##l)(x)
|
|
# define _ARM_GENERIC2C(F,x,y) __generic(x,y,, F, F##f, F##l, c##F, c##F##f, c##F##l)(x,y)
|
|
# define _ARM_GENERIC1C_ONLY(F,x) __generic(x,,,,,,F, F##f, F##l)(x)
|
|
#else
|
|
# define _ARM_GENERIC1C(F,x) _ARM_GENERIC1(F,x)
|
|
# define _ARM_GENERIC2C(F,x,y) _ARM_GENERIC2(F,x,y)
|
|
#endif /* __STDC_VERSION__ */
|
|
|
|
/* 7.22#4: Functions with both real and complex variants */
|
|
#define acos(x) _ARM_GENERIC1C(acos, x)
|
|
#define asin(x) _ARM_GENERIC1C(asin, x)
|
|
#define atan(x) _ARM_GENERIC1C(atan, x)
|
|
#define acosh(x) _ARM_GENERIC1C(acosh, x)
|
|
#define asinh(x) _ARM_GENERIC1C(asinh, x)
|
|
#define atanh(x) _ARM_GENERIC1C(atanh, x)
|
|
#define cos(x) _ARM_GENERIC1C(cos, x)
|
|
#define sin(x) _ARM_GENERIC1C(sin, x)
|
|
#define tan(x) _ARM_GENERIC1C(tan, x)
|
|
#define cosh(x) _ARM_GENERIC1C(cosh, x)
|
|
#define sinh(x) _ARM_GENERIC1C(sinh, x)
|
|
#define tanh(x) _ARM_GENERIC1C(tanh, x)
|
|
#define exp(x) _ARM_GENERIC1C(exp, x)
|
|
#define log(x) _ARM_GENERIC1C(log, x)
|
|
#define pow(x, y) _ARM_GENERIC2C(pow, x, y)
|
|
#define sqrt(x) _ARM_GENERIC1C(sqrt, x)
|
|
/* special case - complex version of fabs is cabs (rather than cfabs) */
|
|
#if __STDC_VERSION__ >= 199901L
|
|
# define fabs(x) __generic(x,,, fabs, fabsf, fabsl, cabs, cabsf, cabsl)(x)
|
|
#else
|
|
# define fabs(x) _ARM_GENERIC1(fabs, x)
|
|
#endif /* __STDC_VERSION__ */
|
|
|
|
/* 7.22#5: Functions without complex variants */
|
|
#define atan2(x, y) _ARM_GENERIC2(atan2, x, y)
|
|
#define log10(x) _ARM_GENERIC1(log10, x)
|
|
#define cbrt(x) _ARM_GENERIC1(cbrt, x)
|
|
#define ceil(x) _ARM_GENERIC1(ceil, x)
|
|
#define copysign(x, y) _ARM_GENERIC2(copysign, x, y)
|
|
#define erf(x) _ARM_GENERIC1(erf, x)
|
|
#define erfc(x) _ARM_GENERIC1(erfc, x)
|
|
#define exp2(x) _ARM_GENERIC1(exp2, x)
|
|
#define expm1(x) _ARM_GENERIC1(expm1, x)
|
|
#define fdim(x, y) _ARM_GENERIC2(fdim, x, y)
|
|
#define floor(x) _ARM_GENERIC1(floor, x)
|
|
#define fma(x, y, z) _ARM_GENERIC3(fma, x, y, z)
|
|
#define fmax(x, y) _ARM_GENERIC2(fmax, x, y)
|
|
#define fmin(x, y) _ARM_GENERIC2(fmin, x, y)
|
|
#define fmod(x, y) _ARM_GENERIC2(fmod, x, y)
|
|
#define frexp(x, i) _ARM_GENERIC1I(frexp, x, i)
|
|
#define hypot(x, y) _ARM_GENERIC2(hypot, x, y)
|
|
#define ilogb(x) _ARM_GENERIC1(ilogb, x)
|
|
#define ldexp(x, i) _ARM_GENERIC1I(ldexp, x, i)
|
|
#define lgamma(x) _ARM_GENERIC1(lgamma, x)
|
|
#define llrint(x) _ARM_GENERIC1(llrint, x)
|
|
#define llround(x) _ARM_GENERIC1(llround, x)
|
|
#define log10(x) _ARM_GENERIC1(log10, x)
|
|
#define log1p(x) _ARM_GENERIC1(log1p, x)
|
|
#define log2(x) _ARM_GENERIC1(log2, x)
|
|
#define logb(x) _ARM_GENERIC1(logb, x)
|
|
#define lrint(x) _ARM_GENERIC1(lrint, x)
|
|
#define lround(x) _ARM_GENERIC1(lround, x)
|
|
#define nearbyint(x) _ARM_GENERIC1(nearbyint, x)
|
|
#define nextafter(x, y) _ARM_GENERIC2(nextafter, x, y)
|
|
#define nexttoward(x, y) _ARM_GENERIC1I(nexttoward, x, y)
|
|
#define remainder(x, y) _ARM_GENERIC2(remainder, x, y)
|
|
#define remquo(x, y, p) _ARM_GENERIC2I(remquo, x, y, p)
|
|
#define rint(x) _ARM_GENERIC1(rint, x)
|
|
#define round(x) _ARM_GENERIC1(round, x)
|
|
#define scalbn(x, i) _ARM_GENERIC1I(scalbn, x, i)
|
|
#define scalbln(x, i) _ARM_GENERIC1I(scalbln, x, i)
|
|
#define tgamma(x) _ARM_GENERIC1(tgamma, x)
|
|
#define trunc(x) _ARM_GENERIC1(trunc, x)
|
|
|
|
/* 7.22#6: Functions without real variants */
|
|
#if __STDC_VERSION__ >= 199901L
|
|
# define carg(x) _ARM_GENERIC1C_ONLY(carg, x)
|
|
# define cimag(x) _ARM_GENERIC1C_ONLY(cimag, x)
|
|
# define conj(x) _ARM_GENERIC1C_ONLY(conj, x)
|
|
# define cproj(x) _ARM_GENERIC1C_ONLY(cproj, x)
|
|
# define creal(x) _ARM_GENERIC1C_ONLY(creal, x)
|
|
#endif /* __STDC_VERSION__ */
|
|
|
|
#endif /* included */
|
|
|
|
/* end of tgmath.h */
|
|
|