GNU Scientific Library Reference Manual - Third Edition (v1.12)by M. Galassi, J. Davies, J. Theiler, B. Gough, G. Jungman, P. Alken, M. Booth, F. Rossi Paperback (6"x9"), 592 pages, 60 figures ISBN 0954612078 RRP £24.95 ($39.95) |

## 5.1 Representation of complex numbers

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 z = x + i y.

__Function:__gsl_complex**gsl_complex_polar***(double*`r`, double`theta`)- This function returns the complex number 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 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.

ISBN 0954612078 | GNU Scientific Library Reference Manual - Third Edition (v1.12) | See the print edition |