| TGMATH.H(3HEAD) | Headers | TGMATH.H(3HEAD) |
tgmath.h, tgmath - type-generic macros
#include <tgmath.h>
The <tgmath.h> header includes the headers <math.h> and <complex.h> and defines several type-generic macros.
Of the functions contained within the <math.h> and <complex.h> headers without an f (float) or l (long double) suffix, several have one or more parameters whose corresponding real type is double. For each such function except modf(3M), there is a corresponding type-generic macro. The parameters whose corresponding real type is double in the function synopsis are generic parameters. Use of the macro invokes a function whose corresponding real type and type domain are determined by the arguments for the generic parameters.
Use of the macro invokes a function whose generic parameters have the corresponding real type determined as follows:
For each unsuffixed function in the <math.h> header for which there is a function in the <complex.h> header with the same name except for a c prefix, the corresponding type-generic macro (for both functions) has the same name as the function in the <math.h> header. The corresponding type-generic macro for fabs() and cabs() is fabs().
| <math.h> Function | <complex.h> Function | Type-Generic Macro |
| acos() | cacos() | acos() |
| asin() | casin() | asin() |
| atan() | catan() | atan() |
| acosh() | cacosh() | acosh() |
| asinh() | casinh() | asinh() |
| atanh() | catanh() | atanh() |
| cos() | ccos() | cos() |
| sin() | csin() | sin() |
| tan() | ctan() | tan() |
| cosh() | ccosh() | cosh() |
| sinh() | csinh() | sinh() |
| tanh() | ctanh() | tanh() |
| exp() | cexp() | exp() |
| log() | clog() | log() |
| pow() | cpow() | pow() |
| sqrt() | csqrt() | sqrt() |
| fabs() | cfabs() | fabs() |
If at least one argument for a generic parameter is complex, then use of the macro invokes a complex function; otherwise, use of the macro invokes a real function.
For each unsuffixed function in the <math.h> header without a c-prefixed counterpart in the <complex.h> header, the corresponding type-generic macro has the same name as the function. These type-generic macros are:
atan2() fma() llround() remainder() cbrt() fmax() log10() remquo() ceil() fmin() log1p() rint() copysign() fmod() log2() round() erf() frexp() logb() scalbn() erfc() hypot() lrint() scalbln() exp2() ilogb() lround() tgamma() expm1() ldexp() nearbyint() trunc() fdim() lgamma() nextafter() floor() llrint() nexttoward()
If all arguments for generic parameters are real, then use of the macro invokes a real function; otherwise, use of the macro results in undefined behavior.
For each unsuffixed function in the <complex.h> header that is not a c-prefixed counterpart to a function in the <math.h> header, the corresponding type-generic macro has the same name as the function. These type-generic macros are:
carg() cimag() conj() cproj() creal()
Use of the macro with any real or complex argument invokes a complex function.
Functions invoked by use of type-generic macros are invoked with the declarations listed below.
#include <tgmath.h> int n; float f; double d; long double ld; float complex fc; double complex dc; long double complex ldc;
The following are the type-generic macros that invoke the functions that are invoked with the preceding declarations.
| Macro | Use Invokes |
| exp(n) | exp(n), the function |
| acosh(f) | acoshf(f) |
| sin(d) | sin(d), the function |
| atan(ld) | atanl(ld) |
| log(fc) | clogf(fc) |
| sqrt(dc) | csqrt(dc) |
| pow(ldc,f) | cpowl(ldc, f) |
| remainder(n,n) | remainder(n, n), the function |
| nextafter(d,f) | nextafter(d, f), the function |
| nexttoward(f,ld) | nexttowardf(f, ld) |
| copysign(n,ld) | copysignl(n, ld) |
| ceil(fc) | undefined behavior |
| rint(dc) | undefined behavior |
| fmax(ldc,ld) | undefined behavior |
| carg(n) | carg(n), the function |
| cproj(f) | cprojf(f) |
| creal(d) | creal(d), the function |
| cimag(ld) | cimagl(ld) |
| cabs(fc) | cabsf(fc) |
| carg(dc) | carg(dc), the function |
| cproj(ldc) | cprojl(ldc) |
See attributes(7) for descriptions of the following attributes:
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
| Interface Stability | Standard |
complex.h(3HEAD), math.h(3HEAD), cabs(3M), fabs(3M), modf(3M), attributes(7), standards(7)
| December 17, 2003 | OmniOS |