[][src]Struct nalgebra::Complex

#[repr(C)]
pub struct Complex<T> {
    pub re: T,
    pub im: T,
}

A complex number in Cartesian form.

Representation and Foreign Function Interface Compatibility

Complex<T> is memory layout compatible with an array [T; 2].

Note that Complex<F> where F is a floating point type is only memory layout compatible with C's complex types, not necessarily calling convention compatible. This means that for FFI you can only pass Complex<F> behind a pointer, not as a value.

Examples

Example of extern function declaration.

use num_complex::Complex;
use std::os::raw::c_int;

extern "C" {
    fn zaxpy_(n: *const c_int, alpha: *const Complex<f64>,
              x: *const Complex<f64>, incx: *const c_int,
              y: *mut Complex<f64>, incy: *const c_int);
}

Fields

re: T

Real portion of the complex number

im: T

Imaginary portion of the complex number

Methods

impl<T> Complex<T> where
    T: Clone + Num
[src]

pub fn new(re: T, im: T) -> Complex<T>[src]

Create a new Complex

pub fn i() -> Complex<T>[src]

Returns imaginary unit

pub fn norm_sqr(&self) -> T[src]

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

pub fn scale(&self, t: T) -> Complex<T>[src]

Multiplies self by the scalar t.

pub fn unscale(&self, t: T) -> Complex<T>[src]

Divides self by the scalar t.

pub fn powu(&self, exp: u32) -> Complex<T>[src]

Raises self to an unsigned integer power.

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

pub fn conj(&self) -> Complex<T>[src]

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

pub fn inv(&self) -> Complex<T>[src]

Returns 1/self

pub fn powi(&self, exp: i32) -> Complex<T>[src]

Raises self to a signed integer power.

impl<T> Complex<T> where
    T: Clone + Signed
[src]

pub fn l1_norm(&self) -> T[src]

Returns the L1 norm |re| + |im| -- the Manhattan distance from the origin.

impl<T> Complex<T> where
    T: Clone + Float
[src]

pub fn norm(&self) -> T[src]

Calculate |self|

pub fn arg(&self) -> T[src]

Calculate the principal Arg of self.

pub fn to_polar(&self) -> (T, T)[src]

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

pub fn from_polar(r: &T, theta: &T) -> Complex<T>[src]

Convert a polar representation into a complex number.

pub fn exp(&self) -> Complex<T>[src]

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

pub fn ln(&self) -> Complex<T>[src]

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)) ≤ π.

pub fn sqrt(&self) -> Complex<T>[src]

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.

pub fn cbrt(&self) -> Complex<T>[src]

Computes the principal value of the cube root of self.

This function has one branch cut:

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

The branch satisfies -π/3 ≤ arg(cbrt(z)) ≤ π/3.

Note that this does not match the usual result for the cube root of negative real numbers. For example, the real cube root of -8 is -2, but the principal complex cube root of -8 is 1 + i√3.

pub fn powf(&self, exp: T) -> Complex<T>[src]

Raises self to a floating point power.

pub fn log(&self, base: T) -> Complex<T>[src]

Returns the logarithm of self with respect to an arbitrary base.

pub fn powc(&self, exp: Complex<T>) -> Complex<T>[src]

Raises self to a complex power.

pub fn expf(&self, base: T) -> Complex<T>[src]

Raises a floating point number to the complex power self.

pub fn sin(&self) -> Complex<T>[src]

Computes the sine of self.

pub fn cos(&self) -> Complex<T>[src]

Computes the cosine of self.

pub fn tan(&self) -> Complex<T>[src]

Computes the tangent of self.

pub fn asin(&self) -> Complex<T>[src]

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.

pub fn acos(&self) -> Complex<T>[src]

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)) ≤ π.

pub fn atan(&self) -> Complex<T>[src]

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.

pub fn sinh(&self) -> Complex<T>[src]

Computes the hyperbolic sine of self.

pub fn cosh(&self) -> Complex<T>[src]

Computes the hyperbolic cosine of self.

pub fn tanh(&self) -> Complex<T>[src]

Computes the hyperbolic tangent of self.

pub fn asinh(&self) -> Complex<T>[src]

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.

pub fn acosh(&self) -> Complex<T>[src]

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)) < ∞.

pub fn atanh(&self) -> Complex<T>[src]

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.

pub fn finv(&self) -> Complex<T>[src]

Returns 1/self using floating-point operations.

This may be more accurate than the generic self.inv() in cases where self.norm_sqr() would overflow to ∞ or underflow to 0.

Examples

use num_complex::Complex64;
let c = Complex64::new(1e300, 1e300);

// The generic `inv()` will overflow.
assert!(!c.inv().is_normal());

// But we can do better for `Float` types.
let inv = c.finv();
assert!(inv.is_normal());
println!("{:e}", inv);

let expected = Complex64::new(5e-301, -5e-301);
assert!((inv - expected).norm() < 1e-315);

pub fn fdiv(&self, other: Complex<T>) -> Complex<T>[src]

Returns self/other using floating-point operations.

This may be more accurate than the generic Div implementation in cases where other.norm_sqr() would overflow to ∞ or underflow to 0.

Examples

use num_complex::Complex64;
let a = Complex64::new(2.0, 3.0);
let b = Complex64::new(1e300, 1e300);

// Generic division will overflow.
assert!(!(a / b).is_normal());

// But we can do better for `Float` types.
let quotient = a.fdiv(b);
assert!(quotient.is_normal());
println!("{:e}", quotient);

let expected = Complex64::new(2.5e-300, 5e-301);
assert!((quotient - expected).norm() < 1e-315);

impl<T> Complex<T> where
    T: Clone + FloatCore
[src]

pub fn is_nan(self) -> bool[src]

Checks if the given complex number is NaN

pub fn is_infinite(self) -> bool[src]

Checks if the given complex number is infinite

pub fn is_finite(self) -> bool[src]

Checks if the given complex number is finite

pub fn is_normal(self) -> bool[src]

Checks if the given complex number is normal

Trait Implementations

impl<T> Rem<Complex<T>> for Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The resulting type after applying the % operator.

impl<'a, T> Rem<Complex<T>> for &'a Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The resulting type after applying the % operator.

impl<'a, 'b, T> Rem<&'b Complex<T>> for &'a Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The resulting type after applying the % operator.

impl<'a, T> Rem<T> for &'a Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The resulting type after applying the % operator.

impl<'a, T> Rem<&'a Complex<T>> for Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The resulting type after applying the % operator.

impl<'a, 'b, T> Rem<&'a T> for &'b Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The resulting type after applying the % operator.

impl<'a, T> Rem<&'a T> for Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The resulting type after applying the % operator.

impl<T> Rem<T> for Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The resulting type after applying the % operator.

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

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

impl<T> PartialEq<Complex<T>> for Complex<T> where
    T: PartialEq<T>, 
[src]

impl<T> DivAssign<T> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<'a, T> DivAssign<&'a Complex<T>> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<T> DivAssign<Complex<T>> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<'a, T> DivAssign<&'a T> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<T> Serialize for Complex<T> where
    T: Serialize
[src]

impl<T> MulAddAssign<Complex<T>, Complex<T>> for Complex<T> where
    T: Clone + MulAddAssign<T, T> + NumAssign
[src]

impl<'a, 'b, T> MulAddAssign<&'a Complex<T>, &'b Complex<T>> for Complex<T> where
    T: Clone + MulAddAssign<T, T> + NumAssign
[src]

impl<T> Clone for Complex<T> where
    T: Clone
[src]

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

Performs copy-assignment from source. Read more

impl<'a, T> AddAssign<&'a Complex<T>> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<'a, T> AddAssign<&'a T> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<T> AddAssign<Complex<T>> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<T> AddAssign<T> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<'de, T> Deserialize<'de> for Complex<T> where
    T: Deserialize<'de> + Num + Clone
[src]

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

impl<T> FromPrimitive for Complex<T> where
    T: FromPrimitive + Num
[src]

impl<T> SubAssign<T> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<'a, T> SubAssign<&'a Complex<T>> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<'a, T> SubAssign<&'a T> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<T> SubAssign<Complex<T>> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<T> LowerExp for Complex<T> where
    T: LowerExp + Num + PartialOrd<T> + Clone
[src]

impl<T> Default for Complex<T> where
    T: Default
[src]

impl<T> Binary for Complex<T> where
    T: Binary + Num + PartialOrd<T> + Clone
[src]

impl<T> Eq for Complex<T> where
    T: Eq
[src]

impl<T> Hash for Complex<T> where
    T: Hash
[src]

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

Feeds a slice of this type into the given [Hasher]. Read more

impl<'a, T> Inv for &'a Complex<T> where
    T: Neg<Output = T> + Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<T> Inv for Complex<T> where
    T: Neg<Output = T> + Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

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

type Output = Complex<T>

The resulting type after applying the * operator.

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

type Output = Complex<T>

The resulting type after applying the * operator.

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

type Output = Complex<T>

The resulting type after applying the * operator.

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

type Output = Complex<T>

The resulting type after applying the * operator.

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

type Output = Complex<T>

The resulting type after applying the * operator.

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

type Output = Complex<T>

The resulting type after applying the * operator.

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

type Output = Complex<T>

The resulting type after applying the * operator.

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

type Output = Complex<T>

The resulting type after applying the * operator.

impl<'a, T> RemAssign<&'a Complex<T>> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<T> RemAssign<Complex<T>> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<'a, T> RemAssign<&'a T> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<T> RemAssign<T> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<T> FromStr for Complex<T> where
    T: FromStr + Num + Clone
[src]

type Err = ParseComplexError<<T as FromStr>::Err>

The associated error which can be returned from parsing.

fn from_str(s: &str) -> Result<Complex<T>, <Complex<T> as FromStr>::Err>[src]

Parses a +/- bi; ai +/- b; a; or bi where a and b are of type T

impl<'a, 'b, T> Pow<&'b isize> for &'a Complex<T> where
    T: Neg<Output = T> + Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'b, T> Pow<&'b f32> for Complex<T> where
    T: Float,
    f32: Into<T>, 
[src]

type Output = Complex<T>

The result after applying the operator.

impl<T> Pow<f32> for Complex<T> where
    T: Float,
    f32: Into<T>, 
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, T> Pow<isize> for &'a Complex<T> where
    T: Neg<Output = T> + Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, 'b, T> Pow<&'b f64> for &'a Complex<T> where
    T: Float,
    f64: Into<T>, 
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, 'b, T> Pow<&'b u16> for &'a Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, 'b, T> Pow<&'b u32> for &'a Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, 'b, T> Pow<&'b i8> for &'a Complex<T> where
    T: Neg<Output = T> + Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, 'b, T> Pow<&'b i16> for &'a Complex<T> where
    T: Neg<Output = T> + Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, 'b, T> Pow<&'b u64> for &'a Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, 'b, T> Pow<&'b i64> for &'a Complex<T> where
    T: Neg<Output = T> + Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, T> Pow<u64> for &'a Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, T> Pow<f32> for &'a Complex<T> where
    T: Float,
    f32: Into<T>, 
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, 'b, T> Pow<&'b i128> for &'a Complex<T> where
    T: Neg<Output = T> + Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, T> Pow<u32> for &'a Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, 'b, T> Pow<&'b usize> for &'a Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, 'b, T> Pow<&'b f32> for &'a Complex<T> where
    T: Float,
    f32: Into<T>, 
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, T> Pow<Complex<T>> for &'a Complex<T> where
    T: Float
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, T> Pow<usize> for &'a Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'b, T> Pow<&'b Complex<T>> for Complex<T> where
    T: Float
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, T> Pow<u16> for &'a Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, T> Pow<i32> for &'a Complex<T> where
    T: Neg<Output = T> + Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, T> Pow<i16> for &'a Complex<T> where
    T: Neg<Output = T> + Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, T> Pow<u8> for &'a Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<T> Pow<Complex<T>> for Complex<T> where
    T: Float
[src]

type Output = Complex<T>

The result after applying the operator.

impl<T> Pow<f64> for Complex<T> where
    T: Float,
    f64: Into<T>, 
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, T> Pow<i8> for &'a Complex<T> where
    T: Neg<Output = T> + Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, T> Pow<u128> for &'a Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, 'b, T> Pow<&'b Complex<T>> for &'a Complex<T> where
    T: Float
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, 'b, T> Pow<&'b i32> for &'a Complex<T> where
    T: Neg<Output = T> + Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, 'b, T> Pow<&'b u8> for &'a Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, 'b, T> Pow<&'b u128> for &'a Complex<T> where
    T: Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, T> Pow<i64> for &'a Complex<T> where
    T: Neg<Output = T> + Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, T> Pow<f64> for &'a Complex<T> where
    T: Float,
    f64: Into<T>, 
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'b, T> Pow<&'b f64> for Complex<T> where
    T: Float,
    f64: Into<T>, 
[src]

type Output = Complex<T>

The result after applying the operator.

impl<'a, T> Pow<i128> for &'a Complex<T> where
    T: Neg<Output = T> + Clone + Num
[src]

type Output = Complex<T>

The result after applying the operator.

impl<T> LowerHex for Complex<T> where
    T: LowerHex + Num + PartialOrd<T> + Clone
[src]

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

type Output = Complex<T>

The resulting type after applying the - operator.

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

type Output = Complex<T>

The resulting type after applying the - operator.

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

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

impl<T> MulAssign<Complex<T>> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<T> MulAssign<T> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<'a, T> MulAssign<&'a T> for Complex<T> where
    T: Clone + NumAssign
[src]

impl<'a, T> MulAssign<&'a Complex<T>> for Complex<T> where
    T: Clone + NumAssign
[src]

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

type Output = Complex<T>

The resulting type after applying the / operator.

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

type Output = Complex<T>

The resulting type after applying the / operator.

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

type Output = Complex<T>

The resulting type after applying the / operator.

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

type Output = Complex<T>

The resulting type after applying the / operator.

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

type Output = Complex<T>

The resulting type after applying the / operator.

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

type Output = Complex<T>

The resulting type after applying the / operator.

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

type Output = Complex<T>

The resulting type after applying the / operator.

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

type Output = Complex<T>

The resulting type after applying the / operator.

impl<T> NumCast for Complex<T> where
    T: NumCast + Num
[src]

impl<T> Num for Complex<T> where
    T: Clone + Num
[src]

type FromStrRadixErr = ParseComplexError<<T as Num>::FromStrRadixErr>

fn from_str_radix(
    s: &str,
    radix: u32
) -> Result<Complex<T>, <Complex<T> as Num>::FromStrRadixErr>
[src]

Parses a +/- bi; ai +/- b; a; or bi where a and b are of type T

impl<'a, T> Sum<&'a Complex<T>> for Complex<T> where
    T: 'a + Clone + Num
[src]

impl<T> Sum<Complex<T>> for Complex<T> where
    T: Clone + Num
[src]

impl<T> Debug for Complex<T> where
    T: Debug
[src]

impl<T> ToPrimitive for Complex<T> where
    T: ToPrimitive + Num
[src]

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

type Output = Complex<T>

The resulting type after applying the + operator.

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

type Output = Complex<T>

The resulting type after applying the + operator.

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

type Output = Complex<T>

The resulting type after applying the + operator.

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

type Output = Complex<T>

The resulting type after applying the + operator.

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

type Output = Complex<T>

The resulting type after applying the + operator.

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

type Output = Complex<T>

The resulting type after applying the + operator.

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

type Output = Complex<T>

The resulting type after applying the + operator.

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

type Output = Complex<T>

The resulting type after applying the + operator.

impl<T> Product<Complex<T>> for Complex<T> where
    T: Clone + Num
[src]

impl<'a, T> Product<&'a Complex<T>> for Complex<T> where
    T: 'a + Clone + Num
[src]

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

type Output = Complex<T>

The resulting type after applying the - operator.

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

type Output = Complex<T>

The resulting type after applying the - operator.

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

type Output = Complex<T>

The resulting type after applying the - operator.

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

type Output = Complex<T>

The resulting type after applying the - operator.

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

type Output = Complex<T>

The resulting type after applying the - operator.

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

type Output = Complex<T>

The resulting type after applying the - operator.

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

type Output = Complex<T>

The resulting type after applying the - operator.

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

type Output = Complex<T>

The resulting type after applying the - operator.

impl<'a, 'b, T> MulAdd<&'b Complex<T>, &'a Complex<T>> for &'a Complex<T> where
    T: Clone + MulAdd<T, T, Output = T> + Num
[src]

type Output = Complex<T>

The resulting type after applying the fused multiply-add.

impl<T> MulAdd<Complex<T>, Complex<T>> for Complex<T> where
    T: Clone + MulAdd<T, T, Output = T> + Num
[src]

type Output = Complex<T>

The resulting type after applying the fused multiply-add.

impl<T> UpperHex for Complex<T> where
    T: UpperHex + Num + PartialOrd<T> + Clone
[src]

impl<T> UpperExp for Complex<T> where
    T: UpperExp + Num + PartialOrd<T> + Clone
[src]

impl<T> Copy for Complex<T> where
    T: Copy
[src]

impl<T> Octal for Complex<T> where
    T: Octal + Num + PartialOrd<T> + Clone
[src]

impl<T, U> AsPrimitive<U> for Complex<T> where
    T: AsPrimitive<U>,
    U: 'static + Copy
[src]

impl<N> NormedSpace for Complex<N> where
    N: RealField
[src]

type RealField = N

The result of the norm (not necessarily the same same as the field used by this vector space).

type ComplexField = N

The field of this space must be this complex number.

impl<N> Module for Complex<N> where
    N: RingCommutative + NumAssign
[src]

type Ring = N

The underlying scalar field.

impl<N> AbstractMonoid<Multiplicative> for Complex<N> where
    N: Num + Clone + ClosedNeg
[src]

fn prop_operating_identity_element_is_noop_approx(args: (Self,)) -> bool where
    Self: RelativeEq<Self>, 
[src]

Checks whether operating with the identity element is a no-op for the given argument. Approximate equality is used for verifications. Read more

fn prop_operating_identity_element_is_noop(args: (Self,)) -> bool where
    Self: Eq
[src]

Checks whether operating with the identity element is a no-op for the given argument. Read more

impl<N> AbstractMonoid<Additive> for Complex<N> where
    N: AbstractGroupAbelian<Additive>, 
[src]

fn prop_operating_identity_element_is_noop_approx(args: (Self,)) -> bool where
    Self: RelativeEq<Self>, 
[src]

Checks whether operating with the identity element is a no-op for the given argument. Approximate equality is used for verifications. Read more

fn prop_operating_identity_element_is_noop(args: (Self,)) -> bool where
    Self: Eq
[src]

Checks whether operating with the identity element is a no-op for the given argument. Read more

impl<N> ComplexField for Complex<N> where
    N: RealField
[src]

type RealField = N

Type of the coefficients of a complex number.

fn exp(self) -> Complex<N>[src]

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

fn ln(self) -> Complex<N>[src]

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<N>[src]

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 powf(self, exp: <Complex<N> as ComplexField>::RealField) -> Complex<N>[src]

Raises self to a floating point power.

fn log(self, base: N) -> Complex<N>[src]

Returns the logarithm of self with respect to an arbitrary base.

fn powc(self, exp: Complex<N>) -> Complex<N>[src]

Raises self to a complex power.

fn sin(self) -> Complex<N>[src]

Computes the sine of self.

fn cos(self) -> Complex<N>[src]

Computes the cosine of self.

fn tan(self) -> Complex<N>[src]

Computes the tangent of self.

fn asin(self) -> Complex<N>[src]

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<N>[src]

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<N>[src]

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<N>[src]

Computes the hyperbolic sine of self.

fn cosh(self) -> Complex<N>[src]

Computes the hyperbolic cosine of self.

fn tanh(self) -> Complex<N>[src]

Computes the hyperbolic tangent of self.

fn asinh(self) -> Complex<N>[src]

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<N>[src]

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<N>[src]

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 to_polar(self) -> (Self::RealField, Self::RealField)[src]

The polar form of this complex number: (modulus, arg)

fn to_exp(self) -> (Self::RealField, Self)[src]

The exponential form of this complex number: (modulus, e^{i arg})

fn signum(self) -> Self[src]

The exponential part of this complex number: self / self.modulus()

fn sinc(self) -> Self[src]

Cardinal sine

fn sinhc(self) -> Self[src]

fn cosc(self) -> Self[src]

Cardinal cos

fn coshc(self) -> Self[src]

impl<N> TwoSidedInverse<Multiplicative> for Complex<N> where
    N: ClosedNeg + Clone + Num
[src]

fn two_sided_inverse_mut(&mut self)[src]

In-place inversion of self, relative to the operator O. Read more

impl<N> TwoSidedInverse<Additive> for Complex<N> where
    N: TwoSidedInverse<Additive>, 
[src]

fn two_sided_inverse_mut(&mut self)[src]

In-place inversion of self, relative to the operator O. Read more

impl<N> AbstractMagma<Multiplicative> for Complex<N> where
    N: Clone + Num
[src]

fn op(&self, O, lhs: &Self) -> Self[src]

Performs specific operation.

impl<N> AbstractMagma<Additive> for Complex<N> where
    N: AbstractMagma<Additive>, 
[src]

fn op(&self, O, lhs: &Self) -> Self[src]

Performs specific operation.

impl<N> MeetSemilattice for Complex<N> where
    N: MeetSemilattice
[src]

impl<N> AbstractGroupAbelian<Additive> for Complex<N> where
    N: AbstractGroupAbelian<Additive>, 
[src]

fn prop_is_commutative_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq<Self>, 
[src]

Returns true if the operator is commutative for the given argument tuple. Approximate equality is used for verifications. Read more

fn prop_is_commutative(args: (Self, Self)) -> bool where
    Self: Eq
[src]

Returns true if the operator is commutative for the given argument tuple.

impl<N> AbstractGroupAbelian<Multiplicative> for Complex<N> where
    N: Num + Clone + ClosedNeg
[src]

fn prop_is_commutative_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq<Self>, 
[src]

Returns true if the operator is commutative for the given argument tuple. Approximate equality is used for verifications. Read more

fn prop_is_commutative(args: (Self, Self)) -> bool where
    Self: Eq
[src]

Returns true if the operator is commutative for the given argument tuple.

impl<N1, N2> SubsetOf<Complex<N2>> for Complex<N1> where
    N2: SupersetOf<N1>, 
[src]

fn from_superset(element: &T) -> Option<Self>[src]

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more

impl<N> AbstractField<Additive, Multiplicative> for Complex<N> where
    N: ClosedNeg + AbstractField<Additive, Multiplicative> + Clone + Num
[src]

impl<N> Identity<Additive> for Complex<N> where
    N: Identity<Additive>, 
[src]

fn id(O) -> Self[src]

Specific identity.

impl<N> Identity<Multiplicative> for Complex<N> where
    N: Clone + Num
[src]

fn id(O) -> Self[src]

Specific identity.

impl<N> AbstractLoop<Multiplicative> for Complex<N> where
    N: Num + Clone + ClosedNeg
[src]

impl<N> AbstractLoop<Additive> for Complex<N> where
    N: AbstractGroupAbelian<Additive>, 
[src]

impl<N> JoinSemilattice for Complex<N> where
    N: JoinSemilattice
[src]

impl<N> VectorSpace for Complex<N> where
    N: Field + NumAssign
[src]

type Field = N

The underlying scalar field.

impl<N> AbstractRingCommutative<Additive, Multiplicative> for Complex<N> where
    N: ClosedNeg + AbstractRingCommutative<Additive, Multiplicative> + Clone + Num
[src]

fn prop_mul_is_commutative_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq<Self>, 
[src]

Returns true if the multiplication operator is commutative for the given argument tuple. Approximate equality is used for verifications. Read more

fn prop_mul_is_commutative(args: (Self, Self)) -> bool where
    Self: Eq
[src]

Returns true if the multiplication operator is commutative for the given argument tuple.

impl<N> AbstractSemigroup<Multiplicative> for Complex<N> where
    N: Num + Clone + ClosedNeg
[src]

fn prop_is_associative_approx(args: (Self, Self, Self)) -> bool where
    Self: RelativeEq<Self>, 
[src]

Returns true if associativity holds for the given arguments. Approximate equality is used for verifications. Read more

fn prop_is_associative(args: (Self, Self, Self)) -> bool where
    Self: Eq
[src]

Returns true if associativity holds for the given arguments.

impl<N> AbstractSemigroup<Additive> for Complex<N> where
    N: AbstractGroupAbelian<Additive>, 
[src]

fn prop_is_associative_approx(args: (Self, Self, Self)) -> bool where
    Self: RelativeEq<Self>, 
[src]

Returns true if associativity holds for the given arguments. Approximate equality is used for verifications. Read more

fn prop_is_associative(args: (Self, Self, Self)) -> bool where
    Self: Eq
[src]

Returns true if associativity holds for the given arguments.

impl<N> AbstractRing<Additive, Multiplicative> for Complex<N> where
    N: ClosedNeg + AbstractRing<Additive, Multiplicative> + Clone + Num
[src]

fn prop_mul_and_add_are_distributive_approx(args: (Self, Self, Self)) -> bool where
    Self: RelativeEq<Self>, 
[src]

Returns true if the multiplication and addition operators are distributive for the given argument tuple. Approximate equality is used for verifications. Read more

fn prop_mul_and_add_are_distributive(args: (Self, Self, Self)) -> bool where
    Self: Eq
[src]

Returns true if the multiplication and addition operators are distributive for the given argument tuple. Read more

impl<N> AbstractGroup<Additive> for Complex<N> where
    N: AbstractGroupAbelian<Additive>, 
[src]

impl<N> AbstractGroup<Multiplicative> for Complex<N> where
    N: Num + Clone + ClosedNeg
[src]

impl<N> AbstractModule<Additive, Additive, Multiplicative> for Complex<N> where
    N: ClosedNeg + AbstractRingCommutative<Additive, Multiplicative> + Num
[src]

type AbstractRing = N

The underlying scalar field.

impl<N> AbstractQuasigroup<Multiplicative> for Complex<N> where
    N: Num + Clone + ClosedNeg
[src]

fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq<Self>, 
[src]

Returns true if latin squareness holds for the given arguments. Approximate equality is used for verifications. Read more

fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where
    Self: Eq
[src]

Returns true if latin squareness holds for the given arguments. Read more

impl<N> AbstractQuasigroup<Additive> for Complex<N> where
    N: AbstractGroupAbelian<Additive>, 
[src]

fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq<Self>, 
[src]

Returns true if latin squareness holds for the given arguments. Approximate equality is used for verifications. Read more

fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where
    Self: Eq
[src]

Returns true if latin squareness holds for the given arguments. Read more

Auto Trait Implementations

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

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

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

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

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

Blanket Implementations

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> DeserializeOwned for T where
    T: Deserialize<'de>, 
[src]

impl<T, Rhs, Output> NumOps<Rhs, Output> for T where
    T: Sub<Rhs, Output = Output> + Mul<Rhs, Output = Output> + Div<Rhs, Output = Output> + Add<Rhs, Output = Output> + Rem<Rhs, Output = Output>, 
[src]

impl<T> NumRef for T where
    T: Num + NumOps<&'r T, T>, 
[src]

impl<T, Base> RefNum<Base> for T where
    T: NumOps<Base, Base> + NumOps<&'r Base, Base>, 
[src]

impl<T, Rhs> NumAssignOps<Rhs> for T where
    T: AddAssign<Rhs> + SubAssign<Rhs> + MulAssign<Rhs> + DivAssign<Rhs> + RemAssign<Rhs>, 
[src]

impl<T> NumAssign for T where
    T: Num + NumAssignOps<T>, 
[src]

impl<T> NumAssignRef for T where
    T: NumAssign + NumAssignOps<&'r T>, 
[src]

impl<T> Same<T> for T[src]

type Output = T

Should always be Self

impl<T> ClosedNeg for T where
    T: Neg<Output = T>, 
[src]

impl<T> Field for T where
    T: AbstractField<Additive, Multiplicative> + MultiplicativeGroupAbelian + RingCommutative
[src]

impl<SS, SP> SupersetOf<SS> for SP where
    SS: SubsetOf<SP>, 
[src]

impl<T, Right> ClosedAdd<Right> for T where
    T: Add<Right, Output = T> + AddAssign<Right>, 
[src]

impl<T, Right> ClosedSub<Right> for T where
    T: Sub<Right, Output = T> + SubAssign<Right>, 
[src]

impl<T, Right> ClosedMul<Right> for T where
    T: Mul<Right, Output = T> + MulAssign<Right>, 
[src]

impl<T, Right> ClosedDiv<Right> for T where
    T: Div<Right, Output = T> + DivAssign<Right>, 
[src]

impl<T> AdditiveMagma for T where
    T: AbstractMagma<Additive>, 
[src]

impl<T> AdditiveQuasigroup for T where
    T: AbstractQuasigroup<Additive> + ClosedSub<T> + AdditiveMagma
[src]

impl<T> AdditiveLoop for T where
    T: AbstractLoop<Additive> + ClosedNeg + AdditiveQuasigroup + Zero
[src]

impl<T> AdditiveSemigroup for T where
    T: AbstractSemigroup<Additive> + ClosedAdd<T> + AdditiveMagma
[src]

impl<T> AdditiveMonoid for T where
    T: AbstractMonoid<Additive> + AdditiveSemigroup + Zero
[src]

impl<T> AdditiveGroup for T where
    T: AbstractGroup<Additive> + AdditiveLoop + AdditiveMonoid
[src]

impl<T> AdditiveGroupAbelian for T where
    T: AbstractGroupAbelian<Additive> + AdditiveGroup
[src]

impl<T> MultiplicativeMagma for T where
    T: AbstractMagma<Multiplicative>, 
[src]

impl<T> MultiplicativeQuasigroup for T where
    T: AbstractQuasigroup<Multiplicative> + ClosedDiv<T> + MultiplicativeMagma
[src]

impl<T> MultiplicativeLoop for T where
    T: AbstractLoop<Multiplicative> + MultiplicativeQuasigroup + One
[src]

impl<T> MultiplicativeSemigroup for T where
    T: AbstractSemigroup<Multiplicative> + ClosedMul<T> + MultiplicativeMagma
[src]

impl<T> MultiplicativeMonoid for T where
    T: AbstractMonoid<Multiplicative> + MultiplicativeSemigroup + One
[src]

impl<T> MultiplicativeGroup for T where
    T: AbstractGroup<Multiplicative> + MultiplicativeLoop + MultiplicativeMonoid
[src]

impl<T> MultiplicativeGroupAbelian for T where
    T: AbstractGroupAbelian<Multiplicative> + MultiplicativeGroup
[src]

impl<T> Ring for T where
    T: AbstractRing<Additive, Multiplicative> + AdditiveGroupAbelian + MultiplicativeMonoid
[src]

impl<T> RingCommutative for T where
    T: AbstractRingCommutative<Additive, Multiplicative> + Ring
[src]