header

<ctgmath> (tgmath.h)

Type-generic math
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).
This header simply includes <cmath> and <ccomplex>.

The functionality provided by this C header is already provided by the proper overloads in <cmath> and <ccomplex> in C++.