pub type c64 = Complex<f64>;
Aliased Type§
struct c64 {
pub re: f64,
pub im: f64,
}
Fields§
§re: f64
Real portion of the complex number
im: f64
Imaginary portion of the complex number
Implementations
Source§impl<T> Complex<T>
impl<T> Complex<T>
Source§impl<T> Complex<T>
impl<T> Complex<T>
Sourcepub fn l1_norm(&self) -> T
pub fn l1_norm(&self) -> T
Returns the L1 norm |re| + |im|
– the Manhattan distance from the origin.
Source§impl<T> Complex<T>where
T: Float,
impl<T> Complex<T>where
T: Float,
Sourcepub fn cis(phase: T) -> Complex<T>
pub fn cis(phase: T) -> Complex<T>
Create a new Complex with a given phase: exp(i * phase)
.
See cis (mathematics).
Sourcepub fn to_polar(self) -> (T, T)
pub fn to_polar(self) -> (T, T)
Convert to polar form (r, theta), such that
self = r * exp(i * theta)
Sourcepub fn from_polar(r: T, theta: T) -> Complex<T>
pub fn from_polar(r: T, theta: T) -> Complex<T>
Convert a polar representation into a complex number.
Sourcepub fn exp(self) -> Complex<T>
pub fn exp(self) -> Complex<T>
Computes e^(self)
, where e
is the base of the natural logarithm.
Sourcepub fn ln(self) -> Complex<T>
pub fn ln(self) -> Complex<T>
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)) ≤ π
.
Sourcepub fn sqrt(self) -> Complex<T>
pub fn sqrt(self) -> Complex<T>
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
.
Sourcepub fn cbrt(self) -> Complex<T>
pub fn cbrt(self) -> Complex<T>
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
.
Sourcepub fn log(self, base: T) -> Complex<T>
pub fn log(self, base: T) -> Complex<T>
Returns the logarithm of self
with respect to an arbitrary base.
Sourcepub fn expf(self, base: T) -> Complex<T>
pub fn expf(self, base: T) -> Complex<T>
Raises a floating point number to the complex power self
.
Sourcepub fn asin(self) -> Complex<T>
pub fn asin(self) -> Complex<T>
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
.
Sourcepub fn acos(self) -> Complex<T>
pub fn acos(self) -> Complex<T>
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)) ≤ π
.
Sourcepub fn atan(self) -> Complex<T>
pub fn atan(self) -> Complex<T>
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
.
Sourcepub fn asinh(self) -> Complex<T>
pub fn asinh(self) -> Complex<T>
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
.
Sourcepub fn acosh(self) -> Complex<T>
pub fn acosh(self) -> Complex<T>
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)) < ∞
.
Sourcepub fn atanh(self) -> Complex<T>
pub fn atanh(self) -> Complex<T>
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
.
Sourcepub fn finv(self) -> Complex<T>
pub fn finv(self) -> Complex<T>
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);
Sourcepub fn fdiv(self, other: Complex<T>) -> Complex<T>
pub fn fdiv(self, other: Complex<T>) -> Complex<T>
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);
Source§impl<T> Complex<T>where
T: Float + FloatConst,
impl<T> Complex<T>where
T: Float + FloatConst,
Trait Implementations§
Source§impl PartialEq<Rcplx> for c64
impl PartialEq<Rcplx> for c64
use extendr_api::prelude::*;
test! {
assert!(<c64>::default().eq(&<Rcplx>::default()));
}
Source§impl ToVectorValue for &c64
impl ToVectorValue for &c64
fn sexptype() -> SEXPTYPE
fn to_complex(&self) -> Rcomplex
fn to_real(&self) -> f64where
Self: Sized,
fn to_integer(&self) -> i32where
Self: Sized,
fn to_logical(&self) -> i32where
Self: Sized,
fn to_raw(&self) -> u8where
Self: Sized,
fn to_sexp(&self) -> SEXPwhere
Self: Sized,
Source§impl ToVectorValue for c64
impl ToVectorValue for c64
fn sexptype() -> SEXPTYPE
fn to_complex(&self) -> Rcomplex
fn to_real(&self) -> f64where
Self: Sized,
fn to_integer(&self) -> i32where
Self: Sized,
fn to_logical(&self) -> i32where
Self: Sized,
fn to_raw(&self) -> u8where
Self: Sized,
fn to_sexp(&self) -> SEXPwhere
Self: Sized,
Source§impl<'a, T> AddAssign<&'a Complex<T>> for Complex<T>
impl<'a, T> AddAssign<&'a Complex<T>> for Complex<T>
Source§fn add_assign(&mut self, other: &Complex<T>)
fn add_assign(&mut self, other: &Complex<T>)
+=
operation. Read moreSource§impl<'a, T> AddAssign<&'a T> for Complex<T>
impl<'a, T> AddAssign<&'a T> for Complex<T>
Source§fn add_assign(&mut self, other: &T)
fn add_assign(&mut self, other: &T)
+=
operation. Read moreSource§impl<T> AddAssign<T> for Complex<T>
impl<T> AddAssign<T> for Complex<T>
Source§fn add_assign(&mut self, other: T)
fn add_assign(&mut self, other: T)
+=
operation. Read moreSource§impl<T> AddAssign for Complex<T>
impl<T> AddAssign for Complex<T>
Source§fn add_assign(&mut self, other: Complex<T>)
fn add_assign(&mut self, other: Complex<T>)
+=
operation. Read moreSource§impl<T, U> AsPrimitive<U> for Complex<T>where
T: AsPrimitive<U>,
U: 'static + Copy,
impl<T, U> AsPrimitive<U> for Complex<T>where
T: AsPrimitive<U>,
U: 'static + Copy,
§impl<E> ComplexField for Complex<E>where
E: RealField,
impl<E> ComplexField for Complex<E>where
E: RealField,
type Real = E
type Simd = <E as ComplexField>::Simd
type ScalarSimd = <E as ComplexField>::ScalarSimd
type PortableSimd = <E as ComplexField>::PortableSimd
§fn faer_from_f64(value: f64) -> Complex<E>
fn faer_from_f64(value: f64) -> Complex<E>
value
from f64
to Self
.The conversion may be lossy when converting to a type with less precision.
§fn faer_scale_real(self, rhs: <Complex<E> as ComplexField>::Real) -> Complex<E>
fn faer_scale_real(self, rhs: <Complex<E> as ComplexField>::Real) -> Complex<E>
rhs
.§fn faer_scale_power_of_two(
self,
rhs: <Complex<E> as ComplexField>::Real,
) -> Complex<E>
fn faer_scale_power_of_two( self, rhs: <Complex<E> as ComplexField>::Real, ) -> Complex<E>
rhs
.§fn faer_score(self) -> <Complex<E> as ComplexField>::Real
fn faer_score(self) -> <Complex<E> as ComplexField>::Real
§fn faer_abs(self) -> <Complex<E> as ComplexField>::Real
fn faer_abs(self) -> <Complex<E> as ComplexField>::Real
self
.§fn faer_abs2(self) -> <Complex<E> as ComplexField>::Real
fn faer_abs2(self) -> <Complex<E> as ComplexField>::Real
self
.§fn faer_from_real(real: <Complex<E> as ComplexField>::Real) -> Complex<E>
fn faer_from_real(real: <Complex<E> as ComplexField>::Real) -> Complex<E>
real
, and a zero imaginary part.§fn faer_real(self) -> <Complex<E> as ComplexField>::Real
fn faer_real(self) -> <Complex<E> as ComplexField>::Real
§fn faer_imag(self) -> <Complex<E> as ComplexField>::Real
fn faer_imag(self) -> <Complex<E> as ComplexField>::Real
fn faer_align_offset<S>(
simd: S,
ptr: *const <Complex<E> as Entity>::Unit,
len: usize,
) -> Offset<<Complex<E> as Entity>::SimdMask<S>>where
S: Simd,
fn faer_slice_as_aligned_simd<S>(
simd: S,
slice: &[<Complex<E> as Entity>::Unit],
offset: Offset<<Complex<E> as Entity>::SimdMask<S>>,
) -> (<Complex<E> as Entity>::PrefixUnit<'_, S>, &[<Complex<E> as Entity>::SimdUnit<S>], <Complex<E> as Entity>::SuffixUnit<'_, S>)where
S: Simd,
fn faer_slice_as_aligned_simd_mut<S>(
simd: S,
slice: &mut [<Complex<E> as Entity>::Unit],
offset: Offset<<Complex<E> as Entity>::SimdMask<S>>,
) -> (<Complex<E> as Entity>::PrefixMutUnit<'_, S>, &mut [<Complex<E> as Entity>::SimdUnit<S>], <Complex<E> as Entity>::SuffixMutUnit<'_, S>)where
S: Simd,
fn faer_slice_as_simd<S>(
slice: &[<Complex<E> as Entity>::Unit],
) -> (&[<Complex<E> as Entity>::SimdUnit<S>], &[<Complex<E> as Entity>::Unit])where
S: Simd,
fn faer_slice_as_simd_mut<S>(
slice: &mut [<Complex<E> as Entity>::Unit],
) -> (&mut [<Complex<E> as Entity>::SimdUnit<S>], &mut [<Complex<E> as Entity>::Unit])where
S: Simd,
fn faer_partial_load_last_unit<S>(
simd: S,
slice: &[<Complex<E> as Entity>::Unit],
) -> <Complex<E> as Entity>::SimdUnit<S>where
S: Simd,
fn faer_partial_store_last_unit<S>(
simd: S,
slice: &mut [<Complex<E> as Entity>::Unit],
values: <Complex<E> as Entity>::SimdUnit<S>,
)where
S: Simd,
fn faer_partial_load_unit<S>(
simd: S,
slice: &[<Complex<E> as Entity>::Unit],
) -> <Complex<E> as Entity>::SimdUnit<S>where
S: Simd,
fn faer_partial_store_unit<S>(
simd: S,
slice: &mut [<Complex<E> as Entity>::Unit],
values: <Complex<E> as Entity>::SimdUnit<S>,
)where
S: Simd,
fn faer_simd_splat_unit<S>(
simd: S,
unit: <Complex<E> as Entity>::Unit,
) -> <Complex<E> as Entity>::SimdUnit<S>where
S: Simd,
fn faer_simd_neg<S>(
simd: S,
values: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
) -> <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>where
S: Simd,
fn faer_simd_conj<S>(
simd: S,
values: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
) -> <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>where
S: Simd,
fn faer_simd_rotate_left<S>(
simd: S,
values: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
amount: usize,
) -> <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>where
S: Simd,
fn faer_simd_add<S>(
simd: S,
lhs: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
rhs: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
) -> <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>where
S: Simd,
fn faer_simd_sub<S>(
simd: S,
lhs: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
rhs: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
) -> <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>where
S: Simd,
fn faer_simd_scalar_mul<S>(
simd: S,
lhs: Complex<E>,
rhs: Complex<E>,
) -> Complex<E>where
S: Simd,
fn faer_simd_scalar_mul_adde<S>(
simd: S,
lhs: Complex<E>,
rhs: Complex<E>,
acc: Complex<E>,
) -> Complex<E>where
S: Simd,
fn faer_simd_scalar_conj_mul_adde<S>(
simd: S,
lhs: Complex<E>,
rhs: Complex<E>,
acc: Complex<E>,
) -> Complex<E>where
S: Simd,
fn faer_simd_scalar_conj_mul<S>(
simd: S,
lhs: Complex<E>,
rhs: Complex<E>,
) -> Complex<E>where
S: Simd,
fn faer_simd_mul<S>(
simd: S,
lhs: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
rhs: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
) -> <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>where
S: Simd,
fn faer_simd_scale_real<S>(
simd: S,
lhs: <<<Complex<E> as ComplexField>::Real as Entity>::Group as ForCopyType>::FaerOfCopy<<<Complex<E> as ComplexField>::Real as Entity>::SimdUnit<S>>,
rhs: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
) -> <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>where
S: Simd,
fn faer_simd_conj_mul<S>(
simd: S,
lhs: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
rhs: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
) -> <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>where
S: Simd,
fn faer_simd_mul_adde<S>(
simd: S,
lhs: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
rhs: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
acc: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
) -> <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>where
S: Simd,
fn faer_simd_conj_mul_adde<S>(
simd: S,
lhs: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
rhs: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
acc: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
) -> <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>where
S: Simd,
fn faer_simd_abs2_adde<S>(
simd: S,
values: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
acc: <<<Complex<E> as ComplexField>::Real as Entity>::Group as ForCopyType>::FaerOfCopy<<<Complex<E> as ComplexField>::Real as Entity>::SimdUnit<S>>,
) -> <<<Complex<E> as ComplexField>::Real as Entity>::Group as ForCopyType>::FaerOfCopy<<<Complex<E> as ComplexField>::Real as Entity>::SimdUnit<S>>where
S: Simd,
fn faer_simd_abs2<S>(
simd: S,
values: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
) -> <<<Complex<E> as ComplexField>::Real as Entity>::Group as ForCopyType>::FaerOfCopy<<<Complex<E> as ComplexField>::Real as Entity>::SimdUnit<S>>where
S: Simd,
fn faer_simd_score<S>(
simd: S,
values: <<Complex<E> as Entity>::Group as ForCopyType>::FaerOfCopy<<Complex<E> as Entity>::SimdUnit<S>>,
) -> <<<Complex<E> as ComplexField>::Real as Entity>::Group as ForCopyType>::FaerOfCopy<<<Complex<E> as ComplexField>::Real as Entity>::SimdUnit<S>>where
S: Simd,
§fn faer_is_nan(&self) -> bool
fn faer_is_nan(&self) -> bool
self
is a NaN value, or false otherwise.§fn faer_is_finite(&self) -> bool
fn faer_is_finite(&self) -> bool
self
is a NaN value, or false otherwise.fn faer_partial_load<S>(
simd: S,
slice: <Self::Group as ForType>::FaerOf<&[Self::Unit]>,
) -> <Self::Group as ForCopyType>::FaerOfCopy<Self::SimdUnit<S>>where
S: Simd,
fn faer_partial_store<S>(
simd: S,
slice: <Self::Group as ForType>::FaerOf<&mut [Self::Unit]>,
values: <Self::Group as ForCopyType>::FaerOfCopy<Self::SimdUnit<S>>,
)where
S: Simd,
fn faer_partial_load_last<S>(
simd: S,
slice: <Self::Group as ForType>::FaerOf<&[Self::Unit]>,
) -> <Self::Group as ForCopyType>::FaerOfCopy<Self::SimdUnit<S>>where
S: Simd,
fn faer_partial_store_last<S>(
simd: S,
slice: <Self::Group as ForType>::FaerOf<&mut [Self::Unit]>,
values: <Self::Group as ForCopyType>::FaerOfCopy<Self::SimdUnit<S>>,
)where
S: Simd,
fn faer_simd_splat<S>(
simd: S,
value: Self,
) -> <Self::Group as ForCopyType>::FaerOfCopy<Self::SimdUnit<S>>where
S: Simd,
fn faer_simd_reduce_add<S>(
simd: S,
values: <Self::Group as ForCopyType>::FaerOfCopy<Self::SimdUnit<S>>,
) -> Selfwhere
S: Simd,
Source§impl<T> ComplexFloat for Complex<T>where
T: Float + FloatConst,
impl<T> ComplexFloat for Complex<T>where
T: Float + FloatConst,
Source§fn abs(self) -> <Complex<T> as ComplexFloat>::Real
fn abs(self) -> <Complex<T> as ComplexFloat>::Real
Source§fn recip(self) -> Complex<T>
fn recip(self) -> Complex<T>
1/x
. See also Complex::finv.Source§fn l1_norm(&self) -> <Complex<T> as ComplexFloat>::Real
fn l1_norm(&self) -> <Complex<T> as ComplexFloat>::Real
|re| + |im|
– the Manhattan distance from the origin.Source§fn is_infinite(self) -> bool
fn is_infinite(self) -> bool
true
if this value is positive infinity or negative infinity and
false otherwise.Source§fn powc(
self,
exp: Complex<<Complex<T> as ComplexFloat>::Real>,
) -> Complex<<Complex<T> as ComplexFloat>::Real>
fn powc( self, exp: Complex<<Complex<T> as ComplexFloat>::Real>, ) -> Complex<<Complex<T> as ComplexFloat>::Real>
self
to a complex power.Source§fn log(self, base: <Complex<T> as ComplexFloat>::Real) -> Complex<T>
fn log(self, base: <Complex<T> as ComplexFloat>::Real) -> Complex<T>
Source§fn powf(self, f: <Complex<T> as ComplexFloat>::Real) -> Complex<T>
fn powf(self, f: <Complex<T> as ComplexFloat>::Real) -> Complex<T>
self
to a real power.Source§fn asin(self) -> Complex<T>
fn asin(self) -> Complex<T>
Source§fn acos(self) -> Complex<T>
fn acos(self) -> Complex<T>
§impl<E> Conjugate for Complex<E>where
E: Entity + ComplexField,
impl<E> Conjugate for Complex<E>where
E: Entity + ComplexField,
§type Conj = ComplexConj<E>
type Conj = ComplexConj<E>
Self
, and Conj::Unit
must have the same layout as Unit
.§type Canonical = Complex<E>
type Canonical = Complex<E>
Self
, and Canonical::Unit
must have the same layout as
Unit
.§fn canonicalize(self) -> <Complex<E> as Conjugate>::Canonical
fn canonicalize(self) -> <Complex<E> as Conjugate>::Canonical
Source§impl<'a, T> DivAssign<&'a Complex<T>> for Complex<T>
impl<'a, T> DivAssign<&'a Complex<T>> for Complex<T>
Source§fn div_assign(&mut self, other: &Complex<T>)
fn div_assign(&mut self, other: &Complex<T>)
/=
operation. Read moreSource§impl<'a, T> DivAssign<&'a T> for Complex<T>
impl<'a, T> DivAssign<&'a T> for Complex<T>
Source§fn div_assign(&mut self, other: &T)
fn div_assign(&mut self, other: &T)
/=
operation. Read moreSource§impl<T> DivAssign<T> for Complex<T>
impl<T> DivAssign<T> for Complex<T>
Source§fn div_assign(&mut self, other: T)
fn div_assign(&mut self, other: T)
/=
operation. Read moreSource§impl<T> DivAssign for Complex<T>
impl<T> DivAssign for Complex<T>
Source§fn div_assign(&mut self, other: Complex<T>)
fn div_assign(&mut self, other: Complex<T>)
/=
operation. Read more§impl<E> Entity for Complex<E>where
E: Entity,
impl<E> Entity for Complex<E>where
E: Entity,
const N_COMPONENTS: usize = _
const UNIT: <<Complex<E> as Entity>::Group as ForType>::FaerOf<()> = _
type Unit = <E as Entity>::Unit
type Index = <E as Entity>::Index
type SimdUnit<S: Simd> = <E as Entity>::SimdUnit<S>
type SimdMask<S: Simd> = <E as Entity>::SimdMask<S>
type SimdIndex<S: Simd> = <E as Entity>::SimdIndex<S>
type Group = ComplexGroup<<E as Entity>::Group>
type Iter<I: Iterator> = ComplexIter<<E as Entity>::Iter<I>>
type PrefixUnit<'a, S: Simd> = <E as Entity>::PrefixUnit<'a, S>
type SuffixUnit<'a, S: Simd> = <E as Entity>::SuffixUnit<'a, S>
type PrefixMutUnit<'a, S: Simd> = <E as Entity>::PrefixMutUnit<'a, S>
type SuffixMutUnit<'a, S: Simd> = <E as Entity>::SuffixMutUnit<'a, S>
fn faer_first<T>( group: <<Complex<E> as Entity>::Group as ForType>::FaerOf<T>, ) -> T
fn faer_from_units( group: <<Complex<E> as Entity>::Group as ForType>::FaerOf<<Complex<E> as Entity>::Unit>, ) -> Complex<E>
fn faer_into_units( self, ) -> <<Complex<E> as Entity>::Group as ForType>::FaerOf<<Complex<E> as Entity>::Unit>
fn faer_as_ref<T>( group: &<<Complex<E> as Entity>::Group as ForType>::FaerOf<T>, ) -> <<Complex<E> as Entity>::Group as ForType>::FaerOf<&T>
fn faer_as_mut<T>( group: &mut <<Complex<E> as Entity>::Group as ForType>::FaerOf<T>, ) -> <<Complex<E> as Entity>::Group as ForType>::FaerOf<&mut T>
fn faer_as_ptr<T>( group: *mut <<Complex<E> as Entity>::Group as ForType>::FaerOf<T>, ) -> <<Complex<E> as Entity>::Group as ForType>::FaerOf<*mut T>
fn faer_map_impl<T, U>( group: <<Complex<E> as Entity>::Group as ForType>::FaerOf<T>, f: &mut impl FnMut(T) -> U, ) -> <<Complex<E> as Entity>::Group as ForType>::FaerOf<U>
fn faer_map_with_context<Ctx, T, U>( ctx: Ctx, group: <<Complex<E> as Entity>::Group as ForType>::FaerOf<T>, f: &mut impl FnMut(Ctx, T) -> (Ctx, U), ) -> (Ctx, <<Complex<E> as Entity>::Group as ForType>::FaerOf<U>)
fn faer_zip<T, U>( first: <<Complex<E> as Entity>::Group as ForType>::FaerOf<T>, second: <<Complex<E> as Entity>::Group as ForType>::FaerOf<U>, ) -> <<Complex<E> as Entity>::Group as ForType>::FaerOf<(T, U)>
fn faer_unzip<T, U>( zipped: <<Complex<E> as Entity>::Group as ForType>::FaerOf<(T, U)>, ) -> (<<Complex<E> as Entity>::Group as ForType>::FaerOf<T>, <<Complex<E> as Entity>::Group as ForType>::FaerOf<U>)
fn faer_into_iter<I>(
iter: <<Complex<E> as Entity>::Group as ForType>::FaerOf<I>,
) -> <Complex<E> as Entity>::Iter<<I as IntoIterator>::IntoIter>where
I: IntoIterator,
fn faer_map<T, U>( group: <Self::Group as ForType>::FaerOf<T>, f: impl FnMut(T) -> U, ) -> <Self::Group as ForType>::FaerOf<U>
fn faer_unzip2<T>( zipped: <Self::Group as ForType>::FaerOf<[T; 2]>, ) -> [<Self::Group as ForType>::FaerOf<T>; 2]
fn faer_unzip4<T>( zipped: <Self::Group as ForType>::FaerOf<[T; 4]>, ) -> [<Self::Group as ForType>::FaerOf<T>; 4]
fn faer_unzip8<T>( zipped: <Self::Group as ForType>::FaerOf<[T; 8]>, ) -> [<Self::Group as ForType>::FaerOf<T>; 8]
fn faer_as_arrays<const N: usize, T>( group: <Self::Group as ForType>::FaerOf<&[T]>, ) -> (<Self::Group as ForType>::FaerOf<&[[T; N]]>, <Self::Group as ForType>::FaerOf<&[T]>)
fn faer_as_arrays_mut<const N: usize, T>( group: <Self::Group as ForType>::FaerOf<&mut [T]>, ) -> (<Self::Group as ForType>::FaerOf<&mut [[T; N]]>, <Self::Group as ForType>::FaerOf<&mut [T]>)
fn faer_deref<T>(
group: <Self::Group as ForType>::FaerOf<&T>,
) -> <Self::Group as ForType>::FaerOf<T>where
T: Copy,
fn faer_rb<'short, T>(
value: <Self::Group as ForType>::FaerOf<&'short T>,
) -> <Self::Group as ForType>::FaerOf<<T as Reborrow<'short>>::Target>where
T: Reborrow<'short>,
fn faer_rb_mut<'short, T>(
value: <Self::Group as ForType>::FaerOf<&'short mut T>,
) -> <Self::Group as ForType>::FaerOf<<T as ReborrowMut<'short>>::Target>where
T: ReborrowMut<'short>,
fn faer_into_const<T>(
value: <Self::Group as ForType>::FaerOf<T>,
) -> <Self::Group as ForType>::FaerOf<<T as IntoConst>::Target>where
T: IntoConst,
fn faer_copy<T>(
x: &<Self::Group as ForType>::FaerOf<T>,
) -> <Self::Group as ForType>::FaerOf<T>where
T: Copy,
Source§impl<T> FromPrimitive for Complex<T>where
T: FromPrimitive + Num,
impl<T> FromPrimitive for Complex<T>where
T: FromPrimitive + Num,
Source§fn from_usize(n: usize) -> Option<Complex<T>>
fn from_usize(n: usize) -> Option<Complex<T>>
usize
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_isize(n: isize) -> Option<Complex<T>>
fn from_isize(n: isize) -> Option<Complex<T>>
isize
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_u8(n: u8) -> Option<Complex<T>>
fn from_u8(n: u8) -> Option<Complex<T>>
u8
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_u16(n: u16) -> Option<Complex<T>>
fn from_u16(n: u16) -> Option<Complex<T>>
u16
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_u32(n: u32) -> Option<Complex<T>>
fn from_u32(n: u32) -> Option<Complex<T>>
u32
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_u64(n: u64) -> Option<Complex<T>>
fn from_u64(n: u64) -> Option<Complex<T>>
u64
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_i8(n: i8) -> Option<Complex<T>>
fn from_i8(n: i8) -> Option<Complex<T>>
i8
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_i16(n: i16) -> Option<Complex<T>>
fn from_i16(n: i16) -> Option<Complex<T>>
i16
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_i32(n: i32) -> Option<Complex<T>>
fn from_i32(n: i32) -> Option<Complex<T>>
i32
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_i64(n: i64) -> Option<Complex<T>>
fn from_i64(n: i64) -> Option<Complex<T>>
i64
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned.Source§fn from_u128(n: u128) -> Option<Complex<T>>
fn from_u128(n: u128) -> Option<Complex<T>>
u128
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read moreSource§fn from_i128(n: i128) -> Option<Complex<T>>
fn from_i128(n: i128) -> Option<Complex<T>>
i128
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read moreSource§impl<'a, 'b, T> MulAddAssign<&'a Complex<T>, &'b Complex<T>> for Complex<T>
impl<'a, 'b, T> MulAddAssign<&'a Complex<T>, &'b Complex<T>> for Complex<T>
Source§fn mul_add_assign(&mut self, other: &Complex<T>, add: &Complex<T>)
fn mul_add_assign(&mut self, other: &Complex<T>, add: &Complex<T>)
*self = (*self * a) + b
Source§impl<T> MulAddAssign for Complex<T>
impl<T> MulAddAssign for Complex<T>
Source§fn mul_add_assign(&mut self, other: Complex<T>, add: Complex<T>)
fn mul_add_assign(&mut self, other: Complex<T>, add: Complex<T>)
*self = (*self * a) + b
Source§impl<'a, T> MulAssign<&'a Complex<T>> for Complex<T>
impl<'a, T> MulAssign<&'a Complex<T>> for Complex<T>
Source§fn mul_assign(&mut self, other: &Complex<T>)
fn mul_assign(&mut self, other: &Complex<T>)
*=
operation. Read moreSource§impl<'a, T> MulAssign<&'a T> for Complex<T>
impl<'a, T> MulAssign<&'a T> for Complex<T>
Source§fn mul_assign(&mut self, other: &T)
fn mul_assign(&mut self, other: &T)
*=
operation. Read moreSource§impl<T> MulAssign<T> for Complex<T>
impl<T> MulAssign<T> for Complex<T>
Source§fn mul_assign(&mut self, other: T)
fn mul_assign(&mut self, other: T)
*=
operation. Read moreSource§impl<T> MulAssign for Complex<T>
impl<T> MulAssign for Complex<T>
Source§fn mul_assign(&mut self, other: Complex<T>)
fn mul_assign(&mut self, other: Complex<T>)
*=
operation. Read moreSource§impl<T> Num for Complex<T>
impl<T> Num for Complex<T>
Source§fn from_str_radix(
s: &str,
radix: u32,
) -> Result<Complex<T>, <Complex<T> as Num>::FromStrRadixErr>
fn from_str_radix( s: &str, radix: u32, ) -> Result<Complex<T>, <Complex<T> as Num>::FromStrRadixErr>
Parses a +/- bi
; ai +/- b
; a
; or bi
where a
and b
are of type T
radix
must be <= 18; larger radix would include i and j as digits,
which cannot be supported.
The conversion returns an error if 18 <= radix <= 36; it panics if radix > 36.
The elements of T
are parsed using Num::from_str_radix
too, and errors
(or panics) from that are reflected here as well.
type FromStrRadixErr = ParseComplexError<<T as Num>::FromStrRadixErr>
Source§impl<'a, T> RemAssign<&'a Complex<T>> for Complex<T>
impl<'a, T> RemAssign<&'a Complex<T>> for Complex<T>
Source§fn rem_assign(&mut self, other: &Complex<T>)
fn rem_assign(&mut self, other: &Complex<T>)
%=
operation. Read moreSource§impl<'a, T> RemAssign<&'a T> for Complex<T>
impl<'a, T> RemAssign<&'a T> for Complex<T>
Source§fn rem_assign(&mut self, other: &T)
fn rem_assign(&mut self, other: &T)
%=
operation. Read moreSource§impl<T> RemAssign<T> for Complex<T>
impl<T> RemAssign<T> for Complex<T>
Source§fn rem_assign(&mut self, other: T)
fn rem_assign(&mut self, other: T)
%=
operation. Read moreSource§impl<T> RemAssign for Complex<T>
impl<T> RemAssign for Complex<T>
Source§fn rem_assign(&mut self, modulus: Complex<T>)
fn rem_assign(&mut self, modulus: Complex<T>)
%=
operation. Read moreSource§impl<'a, T> SubAssign<&'a Complex<T>> for Complex<T>
impl<'a, T> SubAssign<&'a Complex<T>> for Complex<T>
Source§fn sub_assign(&mut self, other: &Complex<T>)
fn sub_assign(&mut self, other: &Complex<T>)
-=
operation. Read moreSource§impl<'a, T> SubAssign<&'a T> for Complex<T>
impl<'a, T> SubAssign<&'a T> for Complex<T>
Source§fn sub_assign(&mut self, other: &T)
fn sub_assign(&mut self, other: &T)
-=
operation. Read moreSource§impl<T> SubAssign<T> for Complex<T>
impl<T> SubAssign<T> for Complex<T>
Source§fn sub_assign(&mut self, other: T)
fn sub_assign(&mut self, other: T)
-=
operation. Read moreSource§impl<T> SubAssign for Complex<T>
impl<T> SubAssign for Complex<T>
Source§fn sub_assign(&mut self, other: Complex<T>)
fn sub_assign(&mut self, other: Complex<T>)
-=
operation. Read moreSource§impl<T> ToPrimitive for Complex<T>where
T: ToPrimitive + Num,
impl<T> ToPrimitive for Complex<T>where
T: ToPrimitive + Num,
Source§fn to_usize(&self) -> Option<usize>
fn to_usize(&self) -> Option<usize>
self
to a usize
. If the value cannot be
represented by a usize
, then None
is returned.Source§fn to_isize(&self) -> Option<isize>
fn to_isize(&self) -> Option<isize>
self
to an isize
. If the value cannot be
represented by an isize
, then None
is returned.Source§fn to_u8(&self) -> Option<u8>
fn to_u8(&self) -> Option<u8>
self
to a u8
. If the value cannot be
represented by a u8
, then None
is returned.Source§fn to_u16(&self) -> Option<u16>
fn to_u16(&self) -> Option<u16>
self
to a u16
. If the value cannot be
represented by a u16
, then None
is returned.Source§fn to_u32(&self) -> Option<u32>
fn to_u32(&self) -> Option<u32>
self
to a u32
. If the value cannot be
represented by a u32
, then None
is returned.Source§fn to_u64(&self) -> Option<u64>
fn to_u64(&self) -> Option<u64>
self
to a u64
. If the value cannot be
represented by a u64
, then None
is returned.Source§fn to_i8(&self) -> Option<i8>
fn to_i8(&self) -> Option<i8>
self
to an i8
. If the value cannot be
represented by an i8
, then None
is returned.Source§fn to_i16(&self) -> Option<i16>
fn to_i16(&self) -> Option<i16>
self
to an i16
. If the value cannot be
represented by an i16
, then None
is returned.Source§fn to_i32(&self) -> Option<i32>
fn to_i32(&self) -> Option<i32>
self
to an i32
. If the value cannot be
represented by an i32
, then None
is returned.Source§fn to_i64(&self) -> Option<i64>
fn to_i64(&self) -> Option<i64>
self
to an i64
. If the value cannot be
represented by an i64
, then None
is returned.Source§fn to_u128(&self) -> Option<u128>
fn to_u128(&self) -> Option<u128>
self
to a u128
. If the value cannot be
represented by a u128
(u64
under the default implementation), then
None
is returned. Read moreSource§fn to_i128(&self) -> Option<i128>
fn to_i128(&self) -> Option<i128>
self
to an i128
. If the value cannot be
represented by an i128
(i64
under the default implementation), then
None
is returned. Read more