I have recently been fortunate enough to venture back into the world of math, specifically dealing with the idea of complex numbers. I am not sure how many developers are really into math so I will recap some concepts of complex numbers.

One of the main properties of a real number is that it square is nonnegative. For example, there is no real number x for which the following equation is true:

x² = -1

To help solve this kind of problem, a number called the imaginary unit was introduced (** i**). The imaginary unit is the number whose square is –1, that is

i² = -1

The system that results from introducing the number * i *is called the complex number system. Complex numbers are numbers of the form

**a + b**, where a and b are real numbers . The real number

*i***a**is referred to as the real part of the number

**a + b**, while the real number

*i***b**is called the imaginary part of

**a + b**. For example the complex number -2 + 3i has the real part of -2 and the imaginary part of 3.

*i*Now there are some basic rules for adding, subtracting and multiplying complex numbers as follows:

- (a + b
*i*) + (c + d*i*) = (a + c) + (c + d)*i* - (a + b
*i*) - (c + d*i*) = (a - c) + (c - d)*i* - (a + b
*i*) * (c + d*i*) = (ac - db) + (ad - bc)*i*

In .NET 4.0 we saw the introduction of a new struct designed to represent the complex number called Complex. With this new type the complex number addition, and multiplication patterns become really easy.

using System.Numerics; Complex cpx1 = new Complex(2, 3); Complex cpx2 = new Complex(4, 6); Complex cpx3 = new Complex(1, 5); Complex cpxsum = cpx1 + cpx2 - cpx3; // produces 5 + 4i Complex cpxsum2 = cpx1 * cpx3; // produces -13 + 13i

Related Links: