Struct num::Complex [] [src]

pub struct Complex<T> {
    pub re: T,
    pub im: T,
}

A complex number in Cartesian form.

Fields

re

Real portion of the complex number

im

Imaginary portion of the complex number

Methods

impl<T> Complex<T> where T: Clone + Num

fn new(re: T, im: T) -> Complex<T>

Create a new Complex

fn i() -> Complex<T>

Returns imaginary unit

fn norm_sqr(&self) -> T

Returns the square of the norm (since T doesn't necessarily have a sqrt function), i.e. re^2 + im^2.

fn scale(&self, t: T) -> Complex<T>

Multiplies self by the scalar t.

fn unscale(&self, t: T) -> Complex<T>

Divides self by the scalar t.

impl<T> Complex<T> where T: Neg<Output=T> + Clone + Num

fn conj(&self) -> Complex<T>

Returns the complex conjugate. i.e. re - i im

fn inv(&self) -> Complex<T>

Returns 1/self

impl<T> Complex<T> where T: Clone + Float

fn norm(&self) -> T

Calculate |self|

fn arg(&self) -> T

Calculate the principal Arg of self.

fn to_polar(&self) -> (T, T)

Convert to polar form (r, theta), such that self = r * exp(i * theta)

fn from_polar(r: &T, theta: &T) -> Complex<T>

Convert a polar representation into a complex number.

fn exp(&self) -> Complex<T>

Computes e^(self), where e is the base of the natural logarithm.

fn ln(&self) -> Complex<T>

Computes the principal value of natural logarithm of self.

This function has one branch cut:

  • (-∞, 0], continuous from above.

The branch satisfies -π ≤ arg(ln(z)) ≤ π.

fn sqrt(&self) -> Complex<T>

Computes the principal value of the square root of self.

This function has one branch cut:

  • (-∞, 0), continuous from above.

The branch satisfies -π/2 ≤ arg(sqrt(z)) ≤ π/2.

fn sin(&self) -> Complex<T>

Computes the sine of self.

fn cos(&self) -> Complex<T>

Computes the cosine of self.

fn tan(&self) -> Complex<T>

Computes the tangent of self.

fn asin(&self) -> Complex<T>

Computes the principal value of the inverse sine of self.

This function has two branch cuts:

  • (-∞, -1), continuous from above.
  • (1, ∞), continuous from below.

The branch satisfies -π/2 ≤ Re(asin(z)) ≤ π/2.

fn acos(&self) -> Complex<T>

Computes the principal value of the inverse cosine of self.

This function has two branch cuts:

  • (-∞, -1), continuous from above.
  • (1, ∞), continuous from below.

The branch satisfies 0 ≤ Re(acos(z)) ≤ π.

fn atan(&self) -> Complex<T>

Computes the principal value of the inverse tangent of self.

This function has two branch cuts:

  • (-∞i, -i], continuous from the left.
  • [i, ∞i), continuous from the right.

The branch satisfies -π/2 ≤ Re(atan(z)) ≤ π/2.

fn sinh(&self) -> Complex<T>

Computes the hyperbolic sine of self.

fn cosh(&self) -> Complex<T>

Computes the hyperbolic cosine of self.

fn tanh(&self) -> Complex<T>

Computes the hyperbolic tangent of self.

fn asinh(&self) -> Complex<T>

Computes the principal value of inverse hyperbolic sine of self.

This function has two branch cuts:

  • (-∞i, -i), continuous from the left.
  • (i, ∞i), continuous from the right.

The branch satisfies -π/2 ≤ Im(asinh(z)) ≤ π/2.

fn acosh(&self) -> Complex<T>

Computes the principal value of inverse hyperbolic cosine of self.

This function has one branch cut:

  • (-∞, 1), continuous from above.

The branch satisfies -π ≤ Im(acosh(z)) ≤ π and 0 ≤ Re(acosh(z)) < ∞.

fn atanh(&self) -> Complex<T>

Computes the principal value of inverse hyperbolic tangent of self.

This function has two branch cuts:

  • (-∞, -1], continuous from above.
  • [1, ∞), continuous from below.

The branch satisfies -π/2 ≤ Im(atanh(z)) ≤ π/2.

fn is_nan(self) -> bool

Checks if the given complex number is NaN

fn is_infinite(self) -> bool

Checks if the given complex number is infinite

fn is_finite(self) -> bool

Checks if the given complex number is finite

fn is_normal(self) -> bool

Checks if the given complex number is normal

Trait Implementations

impl<T> Display for Complex<T> where T: Display + Num + PartialOrd<T> + Clone

fn fmt(&self, f: &mut Formatter) -> Result<(), Error>

impl<T> One for Complex<T> where T: Clone + Num

fn one() -> Complex<T>

impl<T> Zero for Complex<T> where T: Clone + Num

fn zero() -> Complex<T>

fn is_zero(&self) -> bool

impl<T> Div<T> for Complex<T> where T: Clone + Num

type Output = Complex<T>

fn div(self, other: T) -> Complex<T>

impl<T> Mul<T> for Complex<T> where T: Clone + Num

type Output = Complex<T>

fn mul(self, other: T) -> Complex<T>

impl<T> Sub<T> for Complex<T> where T: Clone + Num

type Output = Complex<T>

fn sub(self, other: T) -> Complex<T>

impl<T> Add<T> for Complex<T> where T: Clone + Num

type Output = Complex<T>

fn add(self, other: T) -> Complex<T>

impl<'a, T> Div<&'a T> for Complex<T> where T: Clone + Num

type Output = Complex<T>

fn div(self, other: &T) -> Complex<T>

impl<'a, T> Mul<&'a T> for Complex<T> where T: Clone + Num

type Output = Complex<T>

fn mul(self, other: &T) -> Complex<T>

impl<'a, T> Sub<&'a T> for Complex<T> where T: Clone + Num

type Output = Complex<T>

fn sub(self, other: &T) -> Complex<T>

impl<'a, T> Add<&'a T> for Complex<T> where T: Clone + Num

type Output = Complex<T>

fn add(self, other: &T) -> Complex<T>

impl<T> Neg for Complex<T> where T: Neg<Output=T> + Clone + Num

type Output = Complex<T>

fn neg(self) -> Complex<T>

impl<T> Div<Complex<T>> for Complex<T> where T: Clone + Num

type Output = Complex<T>

fn div(self, other: Complex<T>) -> Complex<T>

impl<'a, T> Div<&'a Complex<T>> for Complex<T> where T: Clone + Num

type Output = Complex<T>

fn div(self, other: &Complex<T>) -> Complex<T>

impl<T> Mul<Complex<T>> for Complex<T> where T: Clone + Num

type Output = Complex<T>

fn mul(self, other: Complex<T>) -> Complex<T>

impl<'a, T> Mul<&'a Complex<T>> for Complex<T> where T: Clone + Num

type Output = Complex<T>

fn mul(self, other: &Complex<T>) -> Complex<T>

impl<T> Sub<Complex<T>> for Complex<T> where T: Clone + Num

type Output = Complex<T>

fn sub(self, other: Complex<T>) -> Complex<T>

impl<'a, T> Sub<&'a Complex<T>> for Complex<T> where T: Clone + Num

type Output = Complex<T>

fn sub(self, other: &Complex<T>) -> Complex<T>

impl<T> Add<Complex<T>> for Complex<T> where T: Clone + Num

type Output = Complex<T>

fn add(self, other: Complex<T>) -> Complex<T>

impl<'a, T> Add<&'a Complex<T>> for Complex<T> where T: Clone + Num

type Output = Complex<T>

fn add(self, other: &Complex<T>) -> Complex<T>

impl<'a, T> From<&'a T> for Complex<T> where T: Clone + Num

fn from(re: &T) -> Complex<T>

impl<T> From<T> for Complex<T> where T: Clone + Num

fn from(re: T) -> Complex<T>

Derived Implementations

impl<T> Encodable for Complex<T> where T: Encodable

fn encode<__ST>(&self, __arg_0: &mut __ST) -> Result<(), __ST::Error> where __ST: Encoder

impl<T> Decodable for Complex<T> where T: Decodable

fn decode<__DT>(__arg_0: &mut __DT) -> Result<Complex<T>, __DT::Error> where __DT: Decoder

impl<T> PartialEq<Complex<T>> for Complex<T> where T: PartialEq<T>

fn eq(&self, __arg_0: &Complex<T>) -> bool

fn ne(&self, __arg_0: &Complex<T>) -> bool

impl<T> Copy for Complex<T> where T: Copy

impl<T> Clone for Complex<T> where T: Clone

fn clone(&self) -> Complex<T>

1.0.0fn clone_from(&mut self, source: &Self)

impl<T> Hash for Complex<T> where T: Hash

fn hash<__HT>(&self, __arg_0: &mut __HT) where __HT: Hasher

impl<T> Debug for Complex<T> where T: Debug

fn fmt(&self, __arg_0: &mut Formatter) -> Result<(), Error>