Struct num_complex::Complex [−][src]
#[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
Implementations
impl<T: Clone + Num> Complex<T>
[src]
impl<T: Clone + Num> Complex<T>
[src]pub fn i() -> Self
[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) -> Self
[src]
Multiplies self
by the scalar t
.
pub fn unscale(&self, t: T) -> Self
[src]
Divides self
by the scalar t
.
pub fn powu(&self, exp: u32) -> Self
[src]
Raises self
to an unsigned integer power.
impl<T: Clone + Num + Neg<Output = T>> Complex<T>
[src]
impl<T: Clone + Num + Neg<Output = T>> Complex<T>
[src]impl<T: Clone + Signed> Complex<T>
[src]
impl<T: Clone + Signed> Complex<T>
[src]pub fn l1_norm(&self) -> T
[src]
Returns the L1 norm |re| + |im|
– the Manhattan distance from the origin.
impl<T: FloatCore> Complex<T>
[src]
impl<T: FloatCore> Complex<T>
[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, T: Clone + NumAssign> AddAssign<&'a Complex<T>> for Complex<T>
[src]
impl<'a, T: Clone + NumAssign> AddAssign<&'a Complex<T>> for Complex<T>
[src]fn add_assign(&mut self, other: &Self)
[src]
impl<'a, T: Clone + NumAssign> AddAssign<&'a T> for Complex<T>
[src]
impl<'a, T: Clone + NumAssign> AddAssign<&'a T> for Complex<T>
[src]fn add_assign(&mut self, other: &T)
[src]
impl<T: Clone + NumAssign> AddAssign<Complex<T>> for Complex<T>
[src]
impl<T: Clone + NumAssign> AddAssign<Complex<T>> for Complex<T>
[src]fn add_assign(&mut self, other: Self)
[src]
impl<T, U> AsPrimitive<U> for Complex<T> where
T: AsPrimitive<U>,
U: 'static + Copy,
[src]
impl<T, U> AsPrimitive<U> for Complex<T> where
T: AsPrimitive<U>,
U: 'static + Copy,
[src]impl<'de, T> Deserialize<'de> for Complex<T> where
T: Deserialize<'de> + Num + Clone,
[src]
impl<'de, T> Deserialize<'de> for Complex<T> where
T: Deserialize<'de> + Num + Clone,
[src]fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where
D: Deserializer<'de>,
[src]
D: Deserializer<'de>,
impl<'a, T: Clone + NumAssign> DivAssign<&'a Complex<T>> for Complex<T>
[src]
impl<'a, T: Clone + NumAssign> DivAssign<&'a Complex<T>> for Complex<T>
[src]fn div_assign(&mut self, other: &Self)
[src]
impl<'a, T: Clone + NumAssign> DivAssign<&'a T> for Complex<T>
[src]
impl<'a, T: Clone + NumAssign> DivAssign<&'a T> for Complex<T>
[src]fn div_assign(&mut self, other: &T)
[src]
impl<T: Clone + NumAssign> DivAssign<Complex<T>> for Complex<T>
[src]
impl<T: Clone + NumAssign> DivAssign<Complex<T>> for Complex<T>
[src]fn div_assign(&mut self, other: Self)
[src]
impl<T: FromPrimitive + Num> FromPrimitive for Complex<T>
[src]
impl<T: FromPrimitive + Num> FromPrimitive for Complex<T>
[src]fn from_usize(n: usize) -> Option<Self>
[src]
fn from_isize(n: isize) -> Option<Self>
[src]
fn from_u8(n: u8) -> Option<Self>
[src]
fn from_u16(n: u16) -> Option<Self>
[src]
fn from_u32(n: u32) -> Option<Self>
[src]
fn from_u64(n: u64) -> Option<Self>
[src]
fn from_i8(n: i8) -> Option<Self>
[src]
fn from_i16(n: i16) -> Option<Self>
[src]
fn from_i32(n: i32) -> Option<Self>
[src]
fn from_i64(n: i64) -> Option<Self>
[src]
fn from_u128(n: u128) -> Option<Self>
[src]
fn from_i128(n: i128) -> Option<Self>
[src]
fn from_f32(n: f32) -> Option<Self>
[src]
fn from_f64(n: f64) -> Option<Self>
[src]
impl<'a, 'b, T: Clone + Num + MulAdd<Output = T>> MulAdd<&'b Complex<T>, &'a Complex<T>> for &'a Complex<T>
[src]
impl<'a, 'b, T: Clone + Num + MulAdd<Output = T>> MulAdd<&'b Complex<T>, &'a Complex<T>> for &'a Complex<T>
[src]impl<'a, 'b, T: Clone + NumAssign + MulAddAssign> MulAddAssign<&'a Complex<T>, &'b Complex<T>> for Complex<T>
[src]
impl<'a, 'b, T: Clone + NumAssign + MulAddAssign> MulAddAssign<&'a Complex<T>, &'b Complex<T>> for Complex<T>
[src]fn mul_add_assign(&mut self, other: &Complex<T>, add: &Complex<T>)
[src]
impl<T: Clone + NumAssign + MulAddAssign> MulAddAssign<Complex<T>, Complex<T>> for Complex<T>
[src]
impl<T: Clone + NumAssign + MulAddAssign> MulAddAssign<Complex<T>, Complex<T>> for Complex<T>
[src]fn mul_add_assign(&mut self, other: Complex<T>, add: Complex<T>)
[src]
impl<'a, T: Clone + NumAssign> MulAssign<&'a Complex<T>> for Complex<T>
[src]
impl<'a, T: Clone + NumAssign> MulAssign<&'a Complex<T>> for Complex<T>
[src]fn mul_assign(&mut self, other: &Self)
[src]
impl<'a, T: Clone + NumAssign> MulAssign<&'a T> for Complex<T>
[src]
impl<'a, T: Clone + NumAssign> MulAssign<&'a T> for Complex<T>
[src]fn mul_assign(&mut self, other: &T)
[src]
impl<T: Clone + NumAssign> MulAssign<Complex<T>> for Complex<T>
[src]
impl<T: Clone + NumAssign> MulAssign<Complex<T>> for Complex<T>
[src]fn mul_assign(&mut self, other: Self)
[src]
impl<T: Num + Clone> Num for Complex<T>
[src]
impl<T: Num + Clone> Num for Complex<T>
[src]type FromStrRadixErr = ParseComplexError<T::FromStrRadixErr>
fn from_str_radix(s: &str, radix: u32) -> Result<Self, Self::FromStrRadixErr>
[src]
Parses a +/- bi
; ai +/- b
; a
; or bi
where a
and b
are of type T
impl<T: NumCast + Num> NumCast for Complex<T>
[src]
impl<T: NumCast + Num> NumCast for Complex<T>
[src]fn from<U: ToPrimitive>(n: U) -> Option<Self>
[src]
impl<'a, T: Clone + NumAssign> RemAssign<&'a Complex<T>> for Complex<T>
[src]
impl<'a, T: Clone + NumAssign> RemAssign<&'a Complex<T>> for Complex<T>
[src]fn rem_assign(&mut self, other: &Self)
[src]
impl<'a, T: Clone + NumAssign> RemAssign<&'a T> for Complex<T>
[src]
impl<'a, T: Clone + NumAssign> RemAssign<&'a T> for Complex<T>
[src]fn rem_assign(&mut self, other: &T)
[src]
impl<T: Clone + NumAssign> RemAssign<Complex<T>> for Complex<T>
[src]
impl<T: Clone + NumAssign> RemAssign<Complex<T>> for Complex<T>
[src]fn rem_assign(&mut self, modulus: Self)
[src]
impl<'a, T: Clone + NumAssign> SubAssign<&'a Complex<T>> for Complex<T>
[src]
impl<'a, T: Clone + NumAssign> SubAssign<&'a Complex<T>> for Complex<T>
[src]fn sub_assign(&mut self, other: &Self)
[src]
impl<'a, T: Clone + NumAssign> SubAssign<&'a T> for Complex<T>
[src]
impl<'a, T: Clone + NumAssign> SubAssign<&'a T> for Complex<T>
[src]fn sub_assign(&mut self, other: &T)
[src]
impl<T: Clone + NumAssign> SubAssign<Complex<T>> for Complex<T>
[src]
impl<T: Clone + NumAssign> SubAssign<Complex<T>> for Complex<T>
[src]fn sub_assign(&mut self, other: Self)
[src]
impl<T: ToPrimitive + Num> ToPrimitive for Complex<T>
[src]
impl<T: ToPrimitive + Num> ToPrimitive for Complex<T>
[src]fn to_usize(&self) -> Option<usize>
[src]
fn to_isize(&self) -> Option<isize>
[src]
fn to_u8(&self) -> Option<u8>
[src]
fn to_u16(&self) -> Option<u16>
[src]
fn to_u32(&self) -> Option<u32>
[src]
fn to_u64(&self) -> Option<u64>
[src]
fn to_i8(&self) -> Option<i8>
[src]
fn to_i16(&self) -> Option<i16>
[src]
fn to_i32(&self) -> Option<i32>
[src]
fn to_i64(&self) -> Option<i64>
[src]
fn to_u128(&self) -> Option<u128>
[src]
fn to_i128(&self) -> Option<i128>
[src]
fn to_f32(&self) -> Option<f32>
[src]
fn to_f64(&self) -> Option<f64>
[src]
impl<T: Copy> Copy for Complex<T>
[src]
impl<T: Eq> Eq for Complex<T>
[src]
impl<T> StructuralEq for Complex<T>
[src]
impl<T> StructuralPartialEq for Complex<T>
[src]
Auto Trait Implementations
impl<T> RefUnwindSafe for Complex<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
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,
impl<T> UnwindSafe for Complex<T> where
T: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]
T: for<'de> Deserialize<'de>,
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>,