(libc.info.gz) Complex Numbers
Info Catalog
(libc.info.gz) Arithmetic Functions
(libc.info.gz) Arithmetic
(libc.info.gz) Operations on Complex
20.9 Complex Numbers
====================
ISO C99 introduces support for complex numbers in C. This is done with a
new type qualifier, 'complex'. It is a keyword if and only if
'complex.h' has been included. There are three complex types,
corresponding to the three real types: 'float complex', 'double
complex', and 'long double complex'.
To construct complex numbers you need a way to indicate the imaginary
part of a number. There is no standard notation for an imaginary
floating point constant. Instead, 'complex.h' defines two macros that
can be used to create complex numbers.
-- Macro: const float complex _Complex_I
This macro is a representation of the complex number "0+1i".
Multiplying a real floating-point value by '_Complex_I' gives a
complex number whose value is purely imaginary. You can use this
to construct complex constants:
3.0 + 4.0i = 3.0 + 4.0 * _Complex_I
Note that '_Complex_I * _Complex_I' has the value '-1', but the
type of that value is 'complex'.
'_Complex_I' is a bit of a mouthful. 'complex.h' also defines a shorter
name for the same constant.
-- Macro: const float complex I
This macro has exactly the same value as '_Complex_I'. Most of the
time it is preferable. However, it causes problems if you want to
use the identifier 'I' for something else. You can safely write
#include <complex.h>
#undef I
if you need 'I' for your own purposes. (In that case we recommend
you also define some other short name for '_Complex_I', such as
'J'.)
Info Catalog
(libc.info.gz) Arithmetic Functions
(libc.info.gz) Arithmetic
(libc.info.gz) Operations on Complex
automatically generated by
info2html