Struct num::complex::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: Clone + Num> Complex<T>

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

Create a new Complex

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: Clone + Num + Neg<Output=T>> Complex<T>

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

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

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

Returns 1/self

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

fn norm(&self) -> T

Calculate |self|

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

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.

Trait Implementations

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

type Output = Complex<T>

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

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

type Output = Complex<T>

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

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

type Output = Complex<T>

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

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

type Output = Complex<T>

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

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

type Output = Complex<T>

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

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

type Output = Complex<T>

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

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

type Output = Complex<T>

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

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

type Output = Complex<T>

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

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

type Output = Complex<T>

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

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

type Output = Complex<T>

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

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

type Output = Complex<T>

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

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

type Output = Complex<T>

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

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

type Output = Complex<T>

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

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

type Output = Complex<T>

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

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

type Output = Complex<T>

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

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

type Output = Complex<T>

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

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

type Output = Complex<T>

fn neg(self) -> Complex<T>

impl<'a, T: Clone + Num + Neg<Output=T>> Neg for &'a Complex<T>

type Output = Complex<T>

fn neg(self) -> Complex<T>

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

fn zero() -> Complex<T>

fn is_zero(&self) -> bool

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

fn one() -> Complex<T>

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

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

Derived Implementations

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

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

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

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

fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher

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

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

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

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

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

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

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

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

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

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

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