Complex
This is the Complex class version 1.0.
Represents a complex number.
Ferret has native support for complex numbers, including syntax for the
normal mathematic notation in rectangular form a + bi
, where a
and b
are real numbers and i
is the
imaginary unit.
a
and b
are commonly called the "real part" and "imaginary part"
respectively, despite both being real numbers.
Complex numbers can also be constructed from a polar representations
r(cosθ + isinθ)
or re^(iθ)
with Complex.polar()
.
Initializer
$z = Complex($a: Num, $b: Num)
Creates a complex number with the given real and imaginary parts. This is
only useful to create a complex number from variable parts, since Ferret
has native support for inline a + bi
notation.
If the given imaginary part is zero, the constructor returns the real part as a real number.
Initializer
$z = Complex($r: Num, $θ: Num)
Create a complex number in polar form given radius r
and angle θ
.
z = r(cosθ + isinθ)
.
Methods
abs
$z.abs
Computed property. Absolute value (or modulus) of the complex number. This is distance from the origin on the complex plane.
In polar form, this is r
.
arg
$z.arg
Computed property. Argument of
the complex number. On the
complex plane, this is the
angle θ
between the positive real axis and the position vector.
In polar form, this is θ
.
Addition operator (+)
$z + ($rhs: Complex)
Addition of complex numbers.
Addition operator (+)
$z + ($ehs: Num)
Addition of complex and real numbers.
Subtraction operator ()
$z  ($rhs: Complex)
Subtraction of complex numbers.
Subtraction operator ()
$z  ($rhs: Num)
Subtraction of real number from complex number.
Subtraction operator ()
$z  ($lhs: Num)
Subtraction of complex number from real number.
Multiplication operator (*)
$z * ($rhs: Complex)
Multiplication of complex numbers.
Multiplication operator (*)
$z * ($ehs: Num)
Multiplication of real and complex numbers.
Division operator (/)
$z / ($rhs: Complex)
Division of complex numbers.
Division operator (/)
$z / ($rhs: Num)
Division of complex number by real number.
Exponent operator (^)
$z ^ ($rhs: Num)
Complex number to real power.
This can get expensive for large powers.
For a quicker but less precise alternative, use .pow()
.
Exponent operator (^)
$z ^ ($lhs: Num)
Real number to a complex power.
Equality operator (==)
$z == ($ehs: Complex)
Equality of complex numbers.
Equality operator (==)
$z == ($ehs: Num)
Equality of complex number and real number.
pow
$z.pow($rhs: Num)
Complex number to real power. This is an alternative implementation to the power operator which is faster but less precise.
Arguments

rhs: Num
Class functions
polar
Complex.polar($r: Num, $θ: Num)
Create a complex number in polar form given radius r
and angle θ
.
z = r(cosθ + isinθ)
.