]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man7/complex.7
Various pages: retitle EXAMPLE section heading to EXAMPLES
[thirdparty/man-pages.git] / man7 / complex.7
CommitLineData
481aaca1 1.\" Copyright 2002 Walter Harms (walter.harms@informatik.uni-oldenburg.de)
2297bf0e 2.\"
38f20bb9 3.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
481aaca1 4.\" Distributed under GPL
38f20bb9 5.\" %%%LICENSE_END
481aaca1 6.\"
9ba01802 7.TH COMPLEX 7 2019-03-06 "" "Linux Programmer's Manual"
481aaca1
MK
8.SH NAME
9complex \- basics of complex mathematics
10.SH SYNOPSIS
11.B #include <complex.h>
12.SH DESCRIPTION
13Complex numbers are numbers of the form z = a+b*i, where a and b are
14real numbers and i = sqrt(\-1), so that i*i = \-1.
fa814524 15.PP
c13182ef
MK
16There are other ways to represent that number.
17The pair (a,b) of real
481aaca1 18numbers may be viewed as a point in the plane, given by X- and
c13182ef
MK
19Y-coordinates.
20This same point may also be described by giving
481aaca1 21the pair of real numbers (r,phi), where r is the distance to the origin O,
c13182ef
MK
22and phi the angle between the X-axis and the line Oz.
23Now
481aaca1
MK
24z = r*exp(i*phi) = r*(cos(phi)+i*sin(phi)).
25.PP
26The basic operations are defined on z = a+b*i and w = c+d*i as:
27.TP
28.B addition: z+w = (a+c) + (b+d)*i
29.TP
30.B multiplication: z*w = (a*c \- b*d) + (a*d + b*c)*i
31.TP
32.B division: z/w = ((a*c + b*d)/(c*c + d*d)) + ((b*c \- a*d)/(c*c + d*d))*i
33.PP
34Nearly all math function have a complex counterpart but there are
faebe20b 35some complex-only functions.
a14af333 36.SH EXAMPLES
481aaca1 37Your C-compiler can work with complex numbers if it supports the C99 standard.
20c58d70 38Link with \fI\-lm\fP.
c13182ef 39The imaginary unit is represented by I.
bdd915e2
MK
40.PP
41.EX
cf0a9ace 42/* check that exp(i * pi) == \-1 */
7295b7ed 43#include <math.h> /* for atan */
9935c43c 44#include <stdio.h>
481aaca1 45#include <complex.h>
cf0a9ace
MK
46
47int
c13182ef 48main(void)
cf0a9ace 49{
9a77f5ef 50 double pi = 4 * atan(1.0);