/* This is an X-Macro designed to be included with various definitions for UNARY_T, BINARY_T and INFIX_T */ #ifdef UNARY_T #define UNARY(fun) \ UNARY_T(double, m ## fun, fun) \ UNARY_T(float , m ## fun ## f, fun) \ UNARY_T(long double , m ## fun ## l, fun) #define BINARY(fun) \ BINARY_T(double, m ## fun, fun) \ BINARY_T(float , m ## fun ## f, fun) \ BINARY_T(long double , m ## fun ## l, fun) #define INFIX(fun, op) \ INFIX_T(double, m ## fun, op) \ INFIX_T(float , m ## fun ## f, op) \ INFIX_T(long double , m ## fun ## l, op) UNARY(fabs) UNARY(exp) UNARY(expm1) BINARY(pow) // UNARY(exp2) UNARY(log) UNARY(log1p) UNARY(sqrt) UNARY(cbrt) BINARY(hypot) UNARY(sin) UNARY(cos) UNARY(tan) UNARY(asin) UNARY(acos) UNARY(atan) UNARY(sinh) UNARY(cosh) UNARY(tanh) UNARY(asinh) UNARY(acosh) UNARY(atanh) UNARY(ceil) UNARY(floor) UNARY(round) UNARY(trunc) BINARY(fmod) BINARY(atan2) UNARY(erf) INFIX(add, (x + y)) INFIX(times, (x * y)) INFIX(div, (x / y)) INFIX(minus, (x - y)) #undef UNARY #undef BINARY #undef INFIX #endif