[−][src]Struct num::Complex
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
Implementations
impl<T> Complex<T>
[src][−]
impl<T> Complex<T> where
T: Clone + Num,
[src][−]
T: Clone + Num,
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: Clone + Neg<Output = T> + Num,
[src][−]
T: Clone + Neg<Output = T> + Num,
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][−]
T: Clone + Signed,
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: FloatCore,
[src][−]
T: FloatCore,
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, T> Add<&'a Complex<T>> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Add<&'a T> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, 'b, T> Add<&'a T> for &'b Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, 'b, T> Add<&'b Complex<T>> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<T> Add<Complex<T>> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Add<Complex<T>> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<T> Add<T> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Add<T> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> AddAssign<&'a Complex<T>> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<'a, T> AddAssign<&'a T> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<T> AddAssign<Complex<T>> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<T> AddAssign<T> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<T, U> AsPrimitive<U> for Complex<T> where
T: AsPrimitive<U>,
U: 'static + Copy,
[src][+]
T: AsPrimitive<U>,
U: 'static + Copy,
impl<T> Binary for Complex<T> where
T: Binary + Num + PartialOrd<T> + Clone,
[src][+]
T: Binary + Num + PartialOrd<T> + Clone,
impl<T> Clone for Complex<T> where
T: Clone,
[src][+]
T: Clone,
impl<T> Copy for Complex<T> where
T: Copy,
[src]
T: Copy,
impl<T> Debug for Complex<T> where
T: Debug,
[src][+]
T: Debug,
impl<T> Default for Complex<T> where
T: Default,
[src][+]
T: Default,
impl<T> Display for Complex<T> where
T: Display + Num + PartialOrd<T> + Clone,
[src][+]
T: Display + Num + PartialOrd<T> + Clone,
impl<'a, T> Div<&'a Complex<T>> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Div<&'a T> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, 'b, T> Div<&'a T> for &'b Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, 'b, T> Div<&'b Complex<T>> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Div<Complex<T>> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<T> Div<Complex<T>> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Div<T> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<T> Div<T> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> DivAssign<&'a Complex<T>> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<'a, T> DivAssign<&'a T> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<T> DivAssign<Complex<T>> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<T> DivAssign<T> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<T> Eq for Complex<T> where
T: Eq,
[src]
T: Eq,
impl<'a, T> From<&'a T> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<T> From<T> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<T> FromPrimitive for Complex<T> where
T: FromPrimitive + Num,
[src][+]
T: FromPrimitive + Num,
impl<T> FromStr for Complex<T> where
T: FromStr + Num + Clone,
[src][+]
T: FromStr + Num + Clone,
impl<T> Hash for Complex<T> where
T: Hash,
[src][+]
T: Hash,
impl<'a, T> Inv for &'a Complex<T> where
T: Clone + Neg<Output = T> + Num,
[src][+]
T: Clone + Neg<Output = T> + Num,
impl<T> Inv for Complex<T> where
T: Clone + Neg<Output = T> + Num,
[src][+]
T: Clone + Neg<Output = T> + Num,
impl<T> LowerExp for Complex<T> where
T: LowerExp + Num + PartialOrd<T> + Clone,
[src][+]
T: LowerExp + Num + PartialOrd<T> + Clone,
impl<T> LowerHex for Complex<T> where
T: LowerHex + Num + PartialOrd<T> + Clone,
[src][+]
T: LowerHex + Num + PartialOrd<T> + Clone,
impl<'a, T> Mul<&'a Complex<T>> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, 'b, T> Mul<&'a T> for &'b Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Mul<&'a T> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, 'b, T> Mul<&'b Complex<T>> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Mul<Complex<T>> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<T> Mul<Complex<T>> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Mul<T> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<T> Mul<T> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
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][+]
T: Clone + MulAdd<T, T, Output = T> + Num,
impl<T> MulAdd<Complex<T>, Complex<T>> for Complex<T> where
T: Clone + MulAdd<T, T, Output = T> + Num,
[src][+]
T: Clone + MulAdd<T, T, Output = T> + Num,
impl<'a, 'b, T> MulAddAssign<&'a Complex<T>, &'b Complex<T>> for Complex<T> where
T: Clone + MulAddAssign<T, T> + NumAssign,
[src][+]
T: Clone + MulAddAssign<T, T> + NumAssign,
impl<T> MulAddAssign<Complex<T>, Complex<T>> for Complex<T> where
T: Clone + MulAddAssign<T, T> + NumAssign,
[src][+]
T: Clone + MulAddAssign<T, T> + NumAssign,
impl<'a, T> MulAssign<&'a Complex<T>> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<'a, T> MulAssign<&'a T> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<T> MulAssign<Complex<T>> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<T> MulAssign<T> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<'a, T> Neg for &'a Complex<T> where
T: Clone + Neg<Output = T> + Num,
[src][+]
T: Clone + Neg<Output = T> + Num,
impl<T> Neg for Complex<T> where
T: Clone + Neg<Output = T> + Num,
[src][+]
T: Clone + Neg<Output = T> + Num,
impl<T> Num for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<T> NumCast for Complex<T> where
T: NumCast + Num,
[src][+]
T: NumCast + Num,
impl<T> Octal for Complex<T> where
T: Octal + Num + PartialOrd<T> + Clone,
[src][+]
T: Octal + Num + PartialOrd<T> + Clone,
impl<T> One for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<T> PartialEq<Complex<T>> for Complex<T> where
T: PartialEq<T>,
[src][+]
T: PartialEq<T>,
impl<'a, 'b, T> Pow<&'b i128> for &'a Complex<T> where
T: Clone + Neg<Output = T> + Num,
[src][+]
T: Clone + Neg<Output = T> + Num,
impl<'a, 'b, T> Pow<&'b i16> for &'a Complex<T> where
T: Clone + Neg<Output = T> + Num,
[src][+]
T: Clone + Neg<Output = T> + Num,
impl<'a, 'b, T> Pow<&'b i32> for &'a Complex<T> where
T: Clone + Neg<Output = T> + Num,
[src][+]
T: Clone + Neg<Output = T> + Num,
impl<'a, 'b, T> Pow<&'b i64> for &'a Complex<T> where
T: Clone + Neg<Output = T> + Num,
[src][+]
T: Clone + Neg<Output = T> + Num,
impl<'a, 'b, T> Pow<&'b i8> for &'a Complex<T> where
T: Clone + Neg<Output = T> + Num,
[src][+]
T: Clone + Neg<Output = T> + Num,
impl<'a, 'b, T> Pow<&'b isize> for &'a Complex<T> where
T: Clone + Neg<Output = T> + Num,
[src][+]
T: Clone + Neg<Output = T> + Num,
impl<'a, 'b, T> Pow<&'b u128> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, 'b, T> Pow<&'b u16> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, 'b, T> Pow<&'b u32> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, 'b, T> Pow<&'b u64> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, 'b, T> Pow<&'b u8> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, 'b, T> Pow<&'b usize> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Pow<i128> for &'a Complex<T> where
T: Clone + Neg<Output = T> + Num,
[src][+]
T: Clone + Neg<Output = T> + Num,
impl<'a, T> Pow<i16> for &'a Complex<T> where
T: Clone + Neg<Output = T> + Num,
[src][+]
T: Clone + Neg<Output = T> + Num,
impl<'a, T> Pow<i32> for &'a Complex<T> where
T: Clone + Neg<Output = T> + Num,
[src][+]
T: Clone + Neg<Output = T> + Num,
impl<'a, T> Pow<i64> for &'a Complex<T> where
T: Clone + Neg<Output = T> + Num,
[src][+]
T: Clone + Neg<Output = T> + Num,
impl<'a, T> Pow<i8> for &'a Complex<T> where
T: Clone + Neg<Output = T> + Num,
[src][+]
T: Clone + Neg<Output = T> + Num,
impl<'a, T> Pow<isize> for &'a Complex<T> where
T: Clone + Neg<Output = T> + Num,
[src][+]
T: Clone + Neg<Output = T> + Num,
impl<'a, T> Pow<u128> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Pow<u16> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Pow<u32> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Pow<u64> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Pow<u8> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Pow<usize> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Product<&'a Complex<T>> for Complex<T> where
T: 'a + Clone + Num,
[src][+]
T: 'a + Clone + Num,
impl<T> Product<Complex<T>> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Rem<&'a Complex<T>> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, 'b, T> Rem<&'a T> for &'b Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Rem<&'a T> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, 'b, T> Rem<&'b Complex<T>> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<T> Rem<Complex<T>> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Rem<Complex<T>> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<T> Rem<T> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Rem<T> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> RemAssign<&'a Complex<T>> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<'a, T> RemAssign<&'a T> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<T> RemAssign<Complex<T>> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<T> RemAssign<T> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<'a, T> Sub<&'a Complex<T>> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, 'b, T> Sub<&'a T> for &'b Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Sub<&'a T> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, 'b, T> Sub<&'b Complex<T>> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<T> Sub<Complex<T>> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Sub<Complex<T>> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> Sub<T> for &'a Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<T> Sub<T> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<'a, T> SubAssign<&'a Complex<T>> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<'a, T> SubAssign<&'a T> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<T> SubAssign<Complex<T>> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<T> SubAssign<T> for Complex<T> where
T: Clone + NumAssign,
[src][+]
T: Clone + NumAssign,
impl<'a, T> Sum<&'a Complex<T>> for Complex<T> where
T: 'a + Clone + Num,
[src][+]
T: 'a + Clone + Num,
impl<T> Sum<Complex<T>> for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
impl<T> ToPrimitive for Complex<T> where
T: ToPrimitive + Num,
[src][+]
T: ToPrimitive + Num,
impl<T> UpperExp for Complex<T> where
T: UpperExp + Num + PartialOrd<T> + Clone,
[src][+]
T: UpperExp + Num + PartialOrd<T> + Clone,
impl<T> UpperHex for Complex<T> where
T: UpperHex + Num + PartialOrd<T> + Clone,
[src][+]
T: UpperHex + Num + PartialOrd<T> + Clone,
impl<T> Zero for Complex<T> where
T: Clone + Num,
[src][+]
T: Clone + Num,
Auto Trait Implementations
impl<T> Send for Complex<T> where
T: Send,
T: Send,
impl<T> Sync for Complex<T> where
T: Sync,
T: Sync,
impl<T> Unpin for Complex<T> where
T: Unpin,
T: Unpin,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src][+]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> From<T> for T
[src][+]
impl<T, U> Into<U> for T where
U: From<T>,
[src][+]
U: From<T>,
impl<T> NumAssign for T where
T: Num + NumAssignOps<T>,
[src]
T: Num + NumAssignOps<T>,
impl<T, Rhs> NumAssignOps<Rhs> for T where
T: AddAssign<Rhs> + SubAssign<Rhs> + MulAssign<Rhs> + DivAssign<Rhs> + RemAssign<Rhs>,
[src]
T: AddAssign<Rhs> + SubAssign<Rhs> + MulAssign<Rhs> + DivAssign<Rhs> + RemAssign<Rhs>,
impl<T> NumAssignRef for T where
T: NumAssign + for<'r> NumAssignOps<&'r T>,
[src]
T: NumAssign + for<'r> NumAssignOps<&'r T>,
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]
T: Sub<Rhs, Output = Output> + Mul<Rhs, Output = Output> + Div<Rhs, Output = Output> + Add<Rhs, Output = Output> + Rem<Rhs, Output = Output>,
impl<T> NumRef for T where
T: Num + for<'r> NumOps<&'r T, T>,
[src]
T: Num + for<'r> NumOps<&'r T, T>,
impl<T, Base> RefNum<Base> for T where
T: NumOps<Base, Base> + for<'r> NumOps<&'r Base, Base>,
[src]
T: NumOps<Base, Base> + for<'r> NumOps<&'r Base, Base>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,