# [−][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 + 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<'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.

#### `fn rem(self, other: &T) -> <&'b Complex<T> as Rem<&'a T>>::Output`[src]

Performs the `%` operation.

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

#### `type Output = Complex<T>`

The resulting type after applying the `%` operator.

#### `fn rem(self, other: T) -> <Complex<T> as Rem<T>>::Output`[src]

Performs the `%` operation.

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

#### `type Output = Complex<T>`

The resulting type after applying the `%` operator.

#### `fn rem(self, modulus: Complex<T>) -> <Complex<T> as Rem<Complex<T>>>::Output`[src]

Performs the `%` operation.

### `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.

#### `fn rem(self, other: Complex<T>) -> <&'a Complex<T> as Rem<Complex<T>>>::Output`[src]

Performs the `%` operation.

### `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.

#### `fn rem(self, other: &Complex<T>) -> <Complex<T> as Rem<&'a Complex<T>>>::Output`[src]

Performs the `%` operation.

### `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.

#### `fn rem(self, other: &T) -> <Complex<T> as Rem<&'a T>>::Output`[src]

Performs the `%` operation.

### `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.

#### `fn rem(
self,
other: &Complex<T>
) -> <&'a Complex<T> as Rem<&'b Complex<T>>>::Output`[src]

Performs the `%` operation.

### `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.

#### `fn rem(self, other: T) -> <&'a Complex<T> as Rem<T>>::Output`[src]

Performs the `%` operation.

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

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`[src]

Formats the value using the given formatter.

### `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<T> LowerHex for Complex<T> where
T: LowerHex + Num + PartialOrd<T> + Clone,` [src]

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`[src]

Formats the value using the given formatter.

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

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`[src]

Formats the value using the given formatter.

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

#### `fn sum<I>(iter: I) -> Complex<T> where
I: Iterator<Item = Complex<T>>,` [src]

Method which takes an iterator and generates `Self` from the elements by "summing up" the items. Read more

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

#### `fn sum<I>(iter: I) -> Complex<T> where
I: Iterator<Item = &'a Complex<T>>,` [src]

Method which takes an iterator and generates `Self` from the elements by "summing up" the items. Read more

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

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

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`[src]

Formats the value using the given formatter. Read more

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

#### `fn product<I>(iter: I) -> Complex<T> where
I: Iterator<Item = Complex<T>>,` [src]

Method which takes an iterator and generates `Self` from the elements by multiplying the items. Read more

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

#### `fn product<I>(iter: I) -> Complex<T> where
I: Iterator<Item = &'a Complex<T>>,` [src]

Method which takes an iterator and generates `Self` from the elements by multiplying the items. Read more

### `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.

#### `fn pow(self, exp: &i16) -> <&'a Complex<T> as Pow<&'b i16>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: i128) -> <&'a Complex<T> as Pow<i128>>::Output`[src]

Returns `self` to the power `rhs`. Read more

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

#### `type Output = Complex<T>`

The result after applying the operator.

#### `fn pow(self, exp: u8) -> <&'a Complex<T> as Pow<u8>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: &u128) -> <&'a Complex<T> as Pow<&'b u128>>::Output`[src]

Returns `self` to the power `rhs`. Read more

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

#### `type Output = Complex<T>`

The result after applying the operator.

#### `fn pow(self, exp: u128) -> <&'a Complex<T> as Pow<u128>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: i32) -> <&'a Complex<T> as Pow<i32>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: &i8) -> <&'a Complex<T> as Pow<&'b i8>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: isize) -> <&'a Complex<T> as Pow<isize>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: &isize) -> <&'a Complex<T> as Pow<&'b isize>>::Output`[src]

Returns `self` to the power `rhs`. Read more

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

#### `type Output = Complex<T>`

The result after applying the operator.

#### `fn pow(self, exp: u16) -> <&'a Complex<T> as Pow<u16>>::Output`[src]

Returns `self` to the power `rhs`. Read more

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

#### `type Output = Complex<T>`

The result after applying the operator.

#### `fn pow(self, exp: u32) -> <&'a Complex<T> as Pow<u32>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: i8) -> <&'a Complex<T> as Pow<i8>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: i16) -> <&'a Complex<T> as Pow<i16>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: &u32) -> <&'a Complex<T> as Pow<&'b u32>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: &i64) -> <&'a Complex<T> as Pow<&'b i64>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: i64) -> <&'a Complex<T> as Pow<i64>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: &u16) -> <&'a Complex<T> as Pow<&'b u16>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: &i128) -> <&'a Complex<T> as Pow<&'b i128>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: &u8) -> <&'a Complex<T> as Pow<&'b u8>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: &u64) -> <&'a Complex<T> as Pow<&'b u64>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: &usize) -> <&'a Complex<T> as Pow<&'b usize>>::Output`[src]

Returns `self` to the power `rhs`. Read more

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

#### `type Output = Complex<T>`

The result after applying the operator.

#### `fn pow(self, exp: usize) -> <&'a Complex<T> as Pow<usize>>::Output`[src]

Returns `self` to the power `rhs`. Read more

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

#### `type Output = Complex<T>`

The result after applying the operator.

#### `fn pow(self, exp: u64) -> <&'a Complex<T> as Pow<u64>>::Output`[src]

Returns `self` to the power `rhs`. Read more

### `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.

#### `fn pow(self, exp: &i32) -> <&'a Complex<T> as Pow<&'b i32>>::Output`[src]

Returns `self` to the power `rhs`. Read more

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

#### `fn sub_assign(&mut self, other: Complex<T>)`[src]

Performs the `-=` operation.

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

#### `fn sub_assign(&mut self, other: T)`[src]

Performs the `-=` operation.

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

#### `fn sub_assign(&mut self, other: &Complex<T>)`[src]

Performs the `-=` operation.

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

#### `fn sub_assign(&mut self, other: &T)`[src]

Performs the `-=` operation.

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

#### `fn from(re: T) -> Complex<T>`[src]

Performs the conversion.

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

#### `fn from(re: &T) -> Complex<T>`[src]

Performs the conversion.

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

#### `fn from<U>(n: U) -> Option<Complex<T>> where
U: ToPrimitive,` [src]

Creates a number from another value that can be converted into a primitive via the `ToPrimitive` trait. Read more

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

#### `fn hash<__H>(&self, state: &mut __H) where
__H: Hasher,` [src]

Feeds this value into the given [`Hasher`]. Read more

#### `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<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<T> Mul<T> for Complex<T> where
T: Clone + Num,` [src]

#### `type Output = Complex<T>`

The resulting type after applying the `*` operator.

#### `fn mul(self, other: T) -> <Complex<T> as Mul<T>>::Output`[src]

Performs the `*` operation.

### `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.

#### `fn mul(self, other: T) -> <&'a Complex<T> as Mul<T>>::Output`[src]

Performs the `*` operation.

### `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.

#### `fn mul(self, other: &T) -> <&'b Complex<T> as Mul<&'a T>>::Output`[src]

Performs the `*` operation.

### `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.

#### `fn mul(
self,
other: &Complex<T>
) -> <&'a Complex<T> as Mul<&'b Complex<T>>>::Output`[src]

Performs the `*` operation.

### `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.

#### `fn mul(self, other: &Complex<T>) -> <Complex<T> as Mul<&'a Complex<T>>>::Output`[src]

Performs the `*` operation.

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

#### `type Output = Complex<T>`

The resulting type after applying the `*` operator.

#### `fn mul(self, other: Complex<T>) -> <Complex<T> as Mul<Complex<T>>>::Output`[src]

Performs the `*` operation.

### `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.

#### `fn mul(self, other: &T) -> <Complex<T> as Mul<&'a T>>::Output`[src]

Performs the `*` operation.

### `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.

#### `fn mul(self, other: Complex<T>) -> <&'a Complex<T> as Mul<Complex<T>>>::Output`[src]

Performs the `*` operation.

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

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

#### `fn clone(&self) -> Complex<T>`[src]

Returns a copy of the value. Read more

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

Performs copy-assignment from `source`. Read more

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

#### `fn zero() -> Complex<T>`[src]

Returns the additive identity element of `Self`, `0`. # Purity Read more

#### `fn is_zero(&self) -> bool`[src]

Returns `true` if `self` is equal to the additive identity.

#### `fn set_zero(&mut self)`[src]

Sets `self` to the additive identity element of `Self`, `0`.

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

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`[src]

Formats the value using the given formatter.

### `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.

#### `fn mul_add(self, other: &Complex<T>, add: &Complex<T>) -> Complex<T>`[src]

Performs the fused multiply-add operation.

### `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.

#### `fn mul_add(self, other: Complex<T>, add: Complex<T>) -> Complex<T>`[src]

Performs the fused multiply-add operation.

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

#### `fn eq(&self, other: &Complex<T>) -> bool`[src]

This method tests for `self` and `other` values to be equal, and is used by `==`. Read more

#### `fn ne(&self, other: &Complex<T>) -> bool`[src]

This method tests for `!=`.

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

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`[src]

Formats the value using the given formatter. Read more

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

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`[src]

Formats the value using the given formatter.

### `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.

#### `fn add(self, other: &Complex<T>) -> <Complex<T> as Add<&'a Complex<T>>>::Output`[src]

Performs the `+` operation.

### `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.

#### `fn add(self, other: &T) -> <Complex<T> as Add<&'a T>>::Output`[src]

Performs the `+` operation.

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

#### `type Output = Complex<T>`

The resulting type after applying the `+` operator.

#### `fn add(self, other: T) -> <Complex<T> as Add<T>>::Output`[src]

Performs the `+` operation.

### `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.

#### `fn add(self, other: Complex<T>) -> <&'a Complex<T> as Add<Complex<T>>>::Output`[src]

Performs the `+` operation.

### `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.

#### `fn add(
self,
other: &Complex<T>
) -> <&'a Complex<T> as Add<&'b Complex<T>>>::Output`[src]

Performs the `+` operation.

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

#### `type Output = Complex<T>`

The resulting type after applying the `+` operator.

#### `fn add(self, other: Complex<T>) -> <Complex<T> as Add<Complex<T>>>::Output`[src]

Performs the `+` operation.

### `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.

#### `fn add(self, other: &T) -> <&'b Complex<T> as Add<&'a T>>::Output`[src]

Performs the `+` operation.

### `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.

#### `fn add(self, other: T) -> <&'a Complex<T> as Add<T>>::Output`[src]

Performs the `+` operation.

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

#### `fn mul_assign(&mut self, other: &Complex<T>)`[src]

Performs the `*=` operation.

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

#### `fn mul_assign(&mut self, other: T)`[src]

Performs the `*=` operation.

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

#### `fn mul_assign(&mut self, other: &T)`[src]

Performs the `*=` operation.

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

#### `fn mul_assign(&mut self, other: Complex<T>)`[src]

Performs the `*=` operation.

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

#### `type Output = Complex<T>`

The result after applying the operator.

#### `fn inv(self) -> <Complex<T> as Inv>::Output`[src]

Returns the multiplicative inverse of `self`. 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.

#### `fn inv(self) -> <&'a Complex<T> as Inv>::Output`[src]

Returns the multiplicative inverse of `self`. Read more

### `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.

#### `fn div(self, other: &T) -> <Complex<T> as Div<&'a T>>::Output`[src]

Performs the `/` operation.

### `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.

#### `fn div(
self,
other: &Complex<T>
) -> <&'a Complex<T> as Div<&'b Complex<T>>>::Output`[src]

Performs the `/` operation.

### `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.

#### `fn div(self, other: &Complex<T>) -> <Complex<T> as Div<&'a Complex<T>>>::Output`[src]

Performs the `/` operation.

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

#### `type Output = Complex<T>`

The resulting type after applying the `/` operator.

#### `fn div(self, other: T) -> <Complex<T> as Div<T>>::Output`[src]

Performs the `/` operation.

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

#### `type Output = Complex<T>`

The resulting type after applying the `/` operator.

#### `fn div(self, other: Complex<T>) -> <Complex<T> as Div<Complex<T>>>::Output`[src]

Performs the `/` operation.

### `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.

#### `fn div(self, other: Complex<T>) -> <&'a Complex<T> as Div<Complex<T>>>::Output`[src]

Performs the `/` operation.

### `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.

#### `fn div(self, other: T) -> <&'a Complex<T> as Div<T>>::Output`[src]

Performs the `/` operation.

### `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.

#### `fn div(self, other: &T) -> <&'b Complex<T> as Div<&'a T>>::Output`[src]

Performs the `/` operation.

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

#### `fn div_assign(&mut self, other: &T)`[src]

Performs the `/=` operation.

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

#### `fn div_assign(&mut self, other: Complex<T>)`[src]

Performs the `/=` operation.

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

#### `fn div_assign(&mut self, other: T)`[src]

Performs the `/=` operation.

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

#### `fn div_assign(&mut self, other: &Complex<T>)`[src]

Performs the `/=` operation.

### `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.

#### `fn neg(self) -> <Complex<T> as Neg>::Output`[src]

Performs the unary `-` operation.

### `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.

#### `fn neg(self) -> <&'a Complex<T> as Neg>::Output`[src]

Performs the unary `-` operation.

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

#### `fn add_assign(&mut self, other: &Complex<T>)`[src]

Performs the `+=` operation.

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

#### `fn add_assign(&mut self, other: &T)`[src]

Performs the `+=` operation.

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

#### `fn add_assign(&mut self, other: T)`[src]

Performs the `+=` operation.

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

#### `fn add_assign(&mut self, other: Complex<T>)`[src]

Performs the `+=` operation.

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

#### `fn default() -> Complex<T>`[src]

Returns the "default value" for a type. Read more

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

#### `fn as_(self) -> U`[src]

Convert a value to another, using the `as` operator.

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

#### `fn one() -> Complex<T>`[src]

Returns the multiplicative identity element of `Self`, `1`. Read more

#### `fn is_one(&self) -> bool`[src]

Returns `true` if `self` is equal to the multiplicative identity. Read more

#### `fn set_one(&mut self)`[src]

Sets `self` to the multiplicative identity element of `Self`, `1`.

### `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.

#### `fn sub(self, other: Complex<T>) -> <&'a Complex<T> as Sub<Complex<T>>>::Output`[src]

Performs the `-` operation.

### `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.

#### `fn sub(
self,
other: &Complex<T>
) -> <&'a Complex<T> as Sub<&'b Complex<T>>>::Output`[src]

Performs the `-` operation.

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

#### `type Output = Complex<T>`

The resulting type after applying the `-` operator.

#### `fn sub(self, other: T) -> <Complex<T> as Sub<T>>::Output`[src]

Performs the `-` operation.

### `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.

#### `fn sub(self, other: &T) -> <Complex<T> as Sub<&'a T>>::Output`[src]

Performs the `-` operation.

### `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.

#### `fn sub(self, other: &T) -> <&'b Complex<T> as Sub<&'a T>>::Output`[src]

Performs the `-` operation.

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

#### `type Output = Complex<T>`

The resulting type after applying the `-` operator.

#### `fn sub(self, other: Complex<T>) -> <Complex<T> as Sub<Complex<T>>>::Output`[src]

Performs the `-` operation.

### `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.

#### `fn sub(self, other: &Complex<T>) -> <Complex<T> as Sub<&'a Complex<T>>>::Output`[src]

Performs the `-` operation.

### `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.

#### `fn sub(self, other: T) -> <&'a Complex<T> as Sub<T>>::Output`[src]

Performs the `-` operation.

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

#### `fn fmt(&self, f: &mut Formatter) -> Result<(), Error>`[src]

Formats the value using the given formatter.

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

#### `fn from_usize(n: usize) -> Option<Complex<T>>`[src]

Convert a `usize` to return an optional value of this type. If the type cannot be represented by this value, then `None` is returned. Read more

#### `fn from_isize(n: isize) -> Option<Complex<T>>`[src]

Convert an `isize` to return an optional value of this type. If the value cannot be represented by this value, then `None` is returned. Read more

#### `fn from_u8(n: u8) -> Option<Complex<T>>`[src]

Convert an `u8` to return an optional value of this type. If the type cannot be represented by this value, then `None` is returned. Read more

#### `fn from_u16(n: u16) -> Option<Complex<T>>`[src]

Convert an `u16` to return an optional value of this type. If the type cannot be represented by this value, then `None` is returned. Read more

#### `fn from_u32(n: u32) -> Option<Complex<T>>`[src]

Convert an `u32` to return an optional value of this type. If the type cannot be represented by this value, then `None` is returned. Read more

#### `fn from_u64(n: u64) -> Option<Complex<T>>`[src]

Convert an `u64` to return an optional value of this type. If the type cannot be represented by this value, then `None` is returned. Read more

#### `fn from_i8(n: i8) -> Option<Complex<T>>`[src]

Convert an `i8` to return an optional value of this type. If the type cannot be represented by this value, then `None` is returned. Read more

#### `fn from_i16(n: i16) -> Option<Complex<T>>`[src]

Convert an `i16` to return an optional value of this type. If the type cannot be represented by this value, then `None` is returned. Read more

#### `fn from_i32(n: i32) -> Option<Complex<T>>`[src]

Convert an `i32` to return an optional value of this type. If the type cannot be represented by this value, then `None` is returned. Read more

#### `fn from_i64(n: i64) -> Option<Complex<T>>`[src]

Convert an `i64` to return an optional value of this type. If the type cannot be represented by this value, then `None` is returned. Read more

#### `fn from_u128(n: u128) -> Option<Complex<T>>`[src]

Convert an `u128` to return an optional value of this type. If the type cannot be represented by this value, then `None` is returned. Read more

#### `fn from_i128(n: i128) -> Option<Complex<T>>`[src]

Convert an `i128` to return an optional value of this type. If the type cannot be represented by this value, then `None` is returned. Read more

#### `fn from_f32(n: f32) -> Option<Complex<T>>`[src]

Convert a `f32` to return an optional value of this type. If the type cannot be represented by this value, then `None` is returned. Read more

#### `fn from_f64(n: f64) -> Option<Complex<T>>`[src]

Convert a `f64` to return an optional value of this type. If the type cannot be represented by this value, then `None` is returned. Read more

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

#### `fn mul_add_assign(&mut self, other: Complex<T>, add: Complex<T>)`[src]

Performs the fused multiply-add operation.

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

#### `fn mul_add_assign(&mut self, other: &Complex<T>, add: &Complex<T>)`[src]

Performs the fused multiply-add operation.

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

#### `fn to_usize(&self) -> Option<usize>`[src]

Converts the value of `self` to a `usize`.

#### `fn to_isize(&self) -> Option<isize>`[src]

Converts the value of `self` to an `isize`.

#### `fn to_u8(&self) -> Option<u8>`[src]

Converts the value of `self` to an `u8`.

#### `fn to_u16(&self) -> Option<u16>`[src]

Converts the value of `self` to an `u16`.

#### `fn to_u32(&self) -> Option<u32>`[src]

Converts the value of `self` to an `u32`.

#### `fn to_u64(&self) -> Option<u64>`[src]

Converts the value of `self` to an `u64`.

#### `fn to_i8(&self) -> Option<i8>`[src]

Converts the value of `self` to an `i8`.

#### `fn to_i16(&self) -> Option<i16>`[src]

Converts the value of `self` to an `i16`.

#### `fn to_i32(&self) -> Option<i32>`[src]

Converts the value of `self` to an `i32`.

#### `fn to_i64(&self) -> Option<i64>`[src]

Converts the value of `self` to an `i64`.

#### `fn to_u128(&self) -> Option<u128>`[src]

Converts the value of `self` to an `u128`. Read more

#### `fn to_i128(&self) -> Option<i128>`[src]

Converts the value of `self` to an `i128`. Read more

#### `fn to_f32(&self) -> Option<f32>`[src]

Converts the value of `self` to an `f32`.

#### `fn to_f64(&self) -> Option<f64>`[src]

Converts the value of `self` to an `f64`.

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

#### `fn rem_assign(&mut self, other: Complex<T>)`[src]

Performs the `%=` operation.

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

#### `fn rem_assign(&mut self, other: T)`[src]

Performs the `%=` operation.

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

#### `fn rem_assign(&mut self, other: &Complex<T>)`[src]

Performs the `%=` operation.

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

#### `fn rem_assign(&mut self, other: &T)`[src]

Performs the `%=` operation.

### `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.

#### `fn norm_squared(&self) -> <Complex<N> as NormedSpace>::RealField`[src]

The squared norm of this vector.

#### `fn norm(&self) -> <Complex<N> as NormedSpace>::RealField`[src]

The norm of this vector.

#### `fn normalize(&self) -> Complex<N>`[src]

Returns a normalized version of this vector.

#### `fn normalize_mut(&mut self) -> <Complex<N> as NormedSpace>::RealField`[src]

Normalizes this vector in-place and returns its norm.

#### `fn try_normalize(
&self,
eps: <Complex<N> as NormedSpace>::RealField
) -> Option<Complex<N>>`[src]

Returns a normalized version of this vector unless its norm as smaller or equal to `eps`.

#### `fn try_normalize_mut(
&mut self,
eps: <Complex<N> as NormedSpace>::RealField
) -> Option<<Complex<N> as NormedSpace>::RealField>`[src]

Normalizes this vector in-place or does nothing if its norm is smaller or equal to `eps`. Read more

### `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> Module for Complex<N> where
N: RingCommutative + NumAssign,` [src]

#### `type Ring = N`

The underlying scalar field.

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

#### `type RealField = N`

Type of the coefficients of a complex number.

#### `fn from_real(re: <Complex<N> as ComplexField>::RealField) -> Complex<N>`[src]

Builds a pure-real complex number from the given value.

#### `fn real(self) -> <Complex<N> as ComplexField>::RealField`[src]

The real part of this complex number.

#### `fn imaginary(self) -> <Complex<N> as ComplexField>::RealField`[src]

The imaginary part of this complex number.

#### `fn argument(self) -> <Complex<N> as ComplexField>::RealField`[src]

The argument of this complex number.

#### `fn modulus(self) -> <Complex<N> as ComplexField>::RealField`[src]

The modulus of this complex number.

#### `fn modulus_squared(self) -> <Complex<N> as ComplexField>::RealField`[src]

The squared modulus of this complex number.

#### `fn norm1(self) -> <Complex<N> as ComplexField>::RealField`[src]

The sum of the absolute value of this complex number's real and imaginary part.

#### `fn recip(self) -> Complex<N>`[src]

#### `fn conjugate(self) -> Complex<N>`[src]

#### `fn scale(self, factor: <Complex<N> as ComplexField>::RealField) -> Complex<N>`[src]

Multiplies this complex number by `factor`.

#### `fn unscale(self, factor: <Complex<N> as ComplexField>::RealField) -> Complex<N>`[src]

Multiplies this complex number by `factor`.

#### `fn floor(self) -> Complex<N>`[src]

#### `fn ceil(self) -> Complex<N>`[src]

#### `fn round(self) -> Complex<N>`[src]

#### `fn trunc(self) -> Complex<N>`[src]

#### `fn fract(self) -> Complex<N>`[src]

#### `fn mul_add(self, a: Complex<N>, b: Complex<N>) -> Complex<N>`[src]

#### `fn abs(self) -> <Complex<N> as ComplexField>::RealField`[src]

The absolute value of this complex number: `self / self.signum()`. Read more

#### `fn exp2(self) -> Complex<N>`[src]

#### `fn exp_m1(self) -> Complex<N>`[src]

#### `fn ln_1p(self) -> Complex<N>`[src]

#### `fn log2(self) -> Complex<N>`[src]

#### `fn log10(self) -> Complex<N>`[src]

#### `fn cbrt(self) -> Complex<N>`[src]

#### `fn powi(self, n: i32) -> Complex<N>`[src]

#### `fn is_finite(&self) -> bool`[src]

#### `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 try_sqrt(self) -> Option<Complex<N>>`[src]

#### `fn hypot(self, b: Complex<N>) -> <Complex<N> as ComplexField>::RealField`[src]

Computes (self.conjugate() * self + other.conjugate() * other).sqrt()

#### `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 sin_cos(self) -> (Complex<N>, Complex<N>)`[src]

#### `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 sinh_cosh(self) -> (Complex<N>, Complex<N>)`[src]

#### `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<Additive> for Complex<N> where
N: TwoSidedInverse<Additive>,` [src]

#### `fn two_sided_inverse(&self) -> Complex<N>`[src]

Returns the two_sided_inverse of `self`, relative to the operator `O`. Read more

#### `fn two_sided_inverse_mut(&mut self)`[src]

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

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

#### `fn two_sided_inverse(&self) -> Complex<N>`[src]

Returns the two_sided_inverse of `self`, relative to the operator `O`. Read more

#### `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 operate(&self, lhs: &Complex<N>) -> Complex<N>`[src]

Performs an operation.

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

Performs specific operation.

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

#### `fn operate(&self, lhs: &Complex<N>) -> Complex<N>`[src]

Performs an operation.

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

Performs specific operation.

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

#### `fn meet(&self, other: &Complex<N>) -> Complex<N>`[src]

Returns the meet (aka. infimum) of two values.

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

#### `fn to_superset(&self) -> Complex<N2>`[src]

The inclusion map: converts `self` to the equivalent element of its superset.

#### `unsafe fn from_superset_unchecked(element: &Complex<N2>) -> Complex<N1>`[src]

Use with care! Same as `self.to_superset` but without any property checks. Always succeeds.

#### `fn is_in_subset(c: &Complex<N2>) -> bool`[src]

Checks if `element` is actually part of the subset `Self` (and can be converted to it).

#### `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> 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<N> AbstractField<Additive, Multiplicative> for Complex<N> where
N: ClosedNeg + AbstractField<Additive, Multiplicative> + Clone + Num,` [src]

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

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

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

#### `fn identity() -> Complex<N>`[src]

The identity element.

#### `fn id(O) -> Self`[src]

Specific identity.

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

#### `fn identity() -> Complex<N>`[src]

The identity element.

#### `fn id(O) -> Self`[src]

Specific identity.

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

#### `fn join(&self, other: &Complex<N>) -> Complex<N>`[src]

Returns the join (aka. supremum) of two values.

### `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<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> 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> 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.

#### `fn multiply_by(&self, r: N) -> Complex<N>`[src]

Multiplies an element of the ring with an element of the module.

### `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

### `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

## Auto Trait Implementations

### `impl<T> Send for Complex<T> where
T: Send,`

### `impl<T> Unpin for Complex<T> where
T: Unpin,`

### `impl<T> Sync for Complex<T> where
T: Sync,`

### `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.

#### `fn to_owned(&self) -> T`[src]

Creates owned data from borrowed data, usually by cloning. Read more

#### `fn clone_into(&self, target: &mut T)`[src]

🔬 This is a nightly-only experimental API. (`toowned_clone_into`)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

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

#### `fn into(self) -> U`[src]

Performs the conversion.

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

#### `fn from(t: T) -> T`[src]

Performs the conversion.

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

#### `default fn to_string(&self) -> String`[src]

Converts the given value to a `String`. Read more

### `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.

#### `fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>`[src]

Performs the conversion.

### `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.

#### `fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>`[src]

Performs the conversion.

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

#### `fn borrow_mut(&mut self) -> &mut T`[src]

Mutably borrows from an owned value. Read more

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

#### `fn borrow(&self) -> &T`[src]

Immutably borrows from an owned value. Read more

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

#### `fn type_id(&self) -> TypeId`[src]

Gets the `TypeId` of `self`. Read more

### `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<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,` [src]

#### `fn to_subset(&self) -> Option<SS>`[src]

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

#### `fn is_in_subset(&self) -> bool`[src]

Checks if `self` is actually part of its subset `T` (and can be converted to it).

#### `unsafe fn to_subset_unchecked(&self) -> SS`[src]

Use with care! Same as `self.to_subset` but without any property checks. Always succeeds.

#### `fn from_subset(element: &SS) -> SP`[src]

The inclusion map: converts `self` to the equivalent element of its superset.

### `impl<T> Field for T where
T: AbstractField<Additive, Multiplicative> + MultiplicativeGroupAbelian + RingCommutative,` [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]

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g., `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g., `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g., `str,u8` or `String,struct:Vec,test`)