prev up next   top/contents search

comp.lang.c FAQ list · Question 14.11

Q: What's a good way to implement complex numbers in C?


A: It is straightforward to define a simple structure and some arithmetic functions to manipulate them. C99 supports complex as a standard type. [footnote] Here is a tiny example, to give you a feel for it:

typedef struct {
	double real;
	double imag;
	} complex;

#define Real(c) (c).real
#define Imag(c) (c).imag

complex cpx_make(double real, double imag)
{
	complex ret;
	ret.real = real;
	ret.imag = imag;
	return ret;
}

complex cpx_add(complex a, complex b)
{
	return cpx_make(Real(a) + Real(b), Imag(a) + Imag(b));
}
You can use these routines with code like
	complex a = cpx_make(1, 2);
	complex b = cpx_make(3, 4);
	complex c = cpx_add(a, b);
or, even more simply,
	complex c = cpx_add(cpx_make(1, 2), cpx_make(3, 4));

See also questions 2.7, 2.10, and 14.12.

References: C9X Sec. 6.1.2.5, Sec. 7.8


prev up next   contents search
about this FAQ list   about eskimo   search   feedback   copyright

Hosted by Eskimo North