=begin pod

=TITLE class Complex

    class Complex is Cool does Numeric { ... }

Represents a number in the complex plane.

Complex objects are immutable.

Adding a trailing C<i> to a number literal makes it a Complex, for example:

    2i;     # same as Complex.new(0, 2);
    1-2e3i; # same as Complex.new(1, -2e3);

=head1 Methods

=head2 new

    proto method new(*@, *%) {*} returns Complex:D
    multi method new(Real $re, Real $im) returns Complex:D

Creates a new C<Complex> object from real and imaginary parts.

=head2 re

    method re(Complex:D:) returns Real:D

Returns the real part of the complex number.

=head2 im

    method im(Complex:D:) returns Real:D

Returns the imaginary part of the complex number.

=head2 isNaN

    method isNaN(Complex:D:) returns Bool:D

Returns true if the real or imaginary part is C<NaN> (not a number).

=head2 polar

    method polar(Complex:D:) returns Positional:D

Returns a two-element list of the polar coordinates for this value,
i.e. magnitude and angle in radians.

=end pod
