==================================================================== 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. Complex objects are created by the complex operation. :: a := complex(4/3,5/2) 4 5 - + - %i 3 2 Type: Complex Fraction Integer b := complex(4/3,-5/2) 4 5 - - - %i 3 2 Type: Complex Fraction Integer The standard arithmetic operations are available. :: a + b 8 - 3 Type: Complex Fraction Integer a - b 5%i Type: Complex Fraction Integer a * b 289 --- 36 Type: Complex Fraction Integer If R is a field, you can also divide the complex objects. :: a / b 161 240 - --- + --- %i 289 289 Type: Complex Fraction Integer We can view the last object as a fraction of complex integers. :: % :: Fraction Complex Integer - 15 + 8%i ---------- 15 + 8%i Type: Fraction Complex Integer The predefined macro %i is defined to be complex(0,1). :: 3.4 + 6.7 * %i 3.4 + 6.7 %i Type: Complex Float You can also compute the conjugate and norm of a complex number. :: conjugate a 4 5 - - - %i 3 2 Type: Complex Fraction Integer norm a 289 --- 36 Type: Fraction Integer The real and imag operations are provided to extract the real and imaginary parts, respectively. :: real a 4 - 3 Type: Fraction Integer imag a 5 - 2 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 - 39%i Type: Complex Integer You can factor Gaussian integers. :: factor(13 - 13*%i) - (1 + %i)(2 + 3%i)(3 + 2%i) Type: Factored Complex Integer factor complex(2,0) 2 - %i (1 + %i) Type: Factored Complex Integer See Also * ``)show Complex``