This header defines macro functions that correspond to the functions in
<math.h>, but which can take other non-
floating point types as arguments:
Every function in
<math.h> that takes at least one
double as argument (except
modf) is defined in
<tgmath.h> as a macro with the same semantics but taking
generic parameters instead:
Each of the arguments provided for these
generic parameters that is of an integer type is casted to a
double; Arguments of
floating-point types are used without transformation (directly as
float,
double or
long double).
This header automatically includes
<math.h> and
<complex.h>: The type-generic function can also take
complex values if the function exists in
<complex.h> (prefixed with a
"c" character).