Complex numbers are represented using the type `gsl_complex`

. The
internal representation of this type may vary across platforms and
should not be accessed directly. The functions and macros described
below allow complex numbers to be manipulated in a portable way.

For reference, the default form of the `gsl_complex`

type is
given by the following struct,

typedef struct { double dat[2]; } gsl_complex;

The real and imaginary part are stored in contiguous elements of a two
element array. This eliminates any padding between the real and
imaginary parts, `dat[0]`

and `dat[1]`

, allowing the struct to
be mapped correctly onto packed complex arrays.

__Function:__gsl_complex**gsl_complex_rect***(double*`x`, double`y`)-
This function uses the rectangular cartesian components
(
`x`,`y`) to return the complex number @math{z = x + i y}.

__Function:__gsl_complex**gsl_complex_polar***(double*`r`, double`theta`)-
This function returns the complex number @math{z = r \exp(i \theta) = r
(\cos(\theta) + i \sin(\theta))} from the polar representation
(
`r`,`theta`).

__Macro:__**GSL_REAL***(*`z`)__Macro:__**GSL_IMAG***(*`z`)-
These macros return the real and imaginary parts of the complex number
`z`.

__Macro:__**GSL_SET_COMPLEX***(*`zp`,`x`,`y`)-
This macro uses the cartesian components (
`x`,`y`) to set the real and imaginary parts of the complex number pointed to by`zp`. For example,GSL_SET_COMPLEX(&z, 3, 4)

sets

`z`to be @math{3 + 4i}.

__Macro:__**GSL_SET_REAL***(*`zp`,`x`)__Macro:__**GSL_SET_IMAG***(*`zp`,`y`)-
These macros allow the real and imaginary parts of the complex number
pointed to by
`zp`to be set independently.

Go to the first, previous, next, last section, table of contents.