# 9.11 ComplexΒΆ

The Complex constructor implements complex objects over a commutative ring R. Typically, the ring R is Integer, Fraction Integer, Float or DoubleFloat. R can also be a symbolic type, like Polynomial Integer. For more information about the numerical and graphical aspects of complex numbers, see ugProblemNumeric .

Complex objects are created by the complexcomplexComplex operation.

a := complex(4/3,5/2)


 43+52i

Type: Complex Fraction Integer

b := complex(4/3,-5/2)


 43-52i

Type: Complex Fraction Integer

The standard arithmetic operations are available.

a + b


 83

Type: Complex Fraction Integer

a - b


 5i

Type: Complex Fraction Integer

a * b


 28936

Type: Complex Fraction Integer

If R is a field, you can also divide the complex objects.

a / b


 -161289+240289i

Type: Complex Fraction Integer

Use a conversion (ugTypesConvertPage in Section ugTypesConvertNumber ) to view the last object as a fraction of complex integers.

% :: Fraction Complex Integer


 -15+8i15+8i

Type: Fraction Complex Integer

The predefined macro %i is defined to be complex(0,1).

3.4 + 6.7 * %i


 3.4+6.7i

Type: Complex Float

You can also compute the conjugateconjugateComplex and normnormComplex of a complex number.

conjugate a


 43-52i

Type: Complex Fraction Integer

norm a


 28936

Type: Fraction Integer

The realrealComplex and imagimagComplex operations are provided to extract the real and imaginary parts, respectively.

real a


 43

Type: Fraction Integer

imag a


 52

Type: Fraction Integer

The domain Complex Integer is also called the Gaussian integers. If R is the integers (or, more generally, a EuclideanDomain), you can compute greatest common divisors.

gcd(13 - 13*%i,31 + 27*%i)


 5+i

Type: Complex Integer

You can also compute least common multiples.

lcm(13 - 13*%i,31 + 27*%i)


 143-39i

Type: Complex Integer

You can factorfactorComplex Gaussian integers.

factor(13 - 13*%i)


 -(1+i)(2+3i)(3+2i)

Type: Factored Complex Integer

factor complex(2,0)


 -i(1+i)2

Type: Factored Complex Integer