# C Programming/complex.h

## Summary[edit | edit source]

**complex.h** is a header file that defines functionality for complex arithmetic.^{[1]} These functions use the built-in type `complex`

which was introduced with the C99 revision of C.

This header should not be confused with the C++ standard library header `<complex>`

, which implements complex numbers in a completely different way (as a template class, `complex<T>`

).

## Macros[edit | edit source]

Universal macro:

- complex - alias of _Complex
- _Complex_I - constant, which has type "const float _Complex" and value of imaginary unit I, I*I=-1

Defined only for `C99 Annex G`-compatible compiler modes - native support of imaginary types (it is very rare because Annex G is mathematically incorrect^{[2]}):

- imaginary - alias of _Imaginary
- _Imaginary_I Expands to a constant expression of type const float _Imaginary with the value of the imaginary unit.

Universal alias of I:

- I - alias of _Imaginary_I if it is defined else - alias of _Complex_I

Application may undefine complex, imaginary, and I macros if they interfere with internal values.

## Functions Overview[edit | edit source]

Each function declared in `complex.h`

has three versions, each of which works with a different floating-point type (`double`

, `float`

and `long double`

). Only the `double`

version of each function is listed here; to use the `float`

(or `long double`

) version, append an `f`

(or an `l`

, respectively) to the function's name (e.g., `cabsf`

and `cabsl`

).

Note that all angles are in radians.

- Basic operations

cabs |
computes absolute value |

carg |
computes argument of a complex number |

cimag |
computes imaginary part of a complex number |

creal |
computes real part of a complex number |

conj |
computes complex conjugate |

cproj |
computes complex projection into the Riemann sphere |

- Exponentiation operations

cexp |
computes complex exponential |

clog |
computes complex logarithm |

csqrt |
computes complex square root |

cpow |
computes complex power |

- Trigonometric operations

csin |
computes complex sine |

ccos |
computes complex cosine |

ctan |
computes complex tangent |

casin |
computes complex arc sine |

cacos |
computes complex arc cosine |

catan |
computes complex arc tangent |

- Hyperbolic operations

csinh |
computes complex hyperbolic sine |

ccosh |
computes complex hyperbolic cosine |

ctanh |
computes complex hyperbolic tangent |

casinh |
computes complex hyperbolic arc sine |

cacosh |
computes complex hyperbolic arc cosine |

catanh |
computes complex hyperbolic arc tangent |

## References[edit | edit source]

- ↑ The Single UNIX® Specification, Issue 7 from The Open Group : complex arithmetic – Base Definitions Reference,
- ↑ Dr. Dobb's journal: software tools for the professional programmer, Volume 27 "many results in Annex G are pure invention and mathematically incorrect"