Trait faer_entity::ComplexField
source · pub trait ComplexField: Entity + Conjugate<Canonical = Self> + Neg<Output = Self> + Add<Self, Output = Self> + Sub<Self, Output = Self> + Mul<Self, Output = Self> + AddAssign<Self> + SubAssign<Self> + MulAssign<Self> {
type Real: RealField;
type Simd: SimdCtx;
type ScalarSimd: SimdCtx;
type PortableSimd: SimdCtx;
Show 54 methods
// Required methods
fn faer_from_f64(value: f64) -> Self;
fn faer_add(self, rhs: Self) -> Self;
fn faer_sub(self, rhs: Self) -> Self;
fn faer_mul(self, rhs: Self) -> Self;
fn faer_neg(self) -> Self;
fn faer_inv(self) -> Self;
fn faer_conj(self) -> Self;
fn faer_sqrt(self) -> Self;
fn faer_scale_real(self, rhs: Self::Real) -> Self;
fn faer_scale_power_of_two(self, rhs: Self::Real) -> Self;
fn faer_score(self) -> Self::Real;
fn faer_abs(self) -> Self::Real;
fn faer_abs2(self) -> Self::Real;
fn faer_nan() -> Self;
fn faer_from_real(real: Self::Real) -> Self;
fn faer_real(self) -> Self::Real;
fn faer_imag(self) -> Self::Real;
fn faer_zero() -> Self;
fn faer_one() -> Self;
fn faer_align_offset<S: Simd>(
simd: S,
ptr: *const UnitFor<Self>,
len: usize
) -> Offset<SimdMaskFor<Self, S>>;
fn faer_slice_as_aligned_simd<S: Simd>(
simd: S,
slice: &[UnitFor<Self>],
offset: Offset<SimdMaskFor<Self, S>>
) -> (Self::PrefixUnit<'_, S>, &[SimdUnitFor<Self, S>], Self::SuffixUnit<'_, S>);
fn faer_slice_as_aligned_simd_mut<S: Simd>(
simd: S,
slice: &mut [UnitFor<Self>],
offset: Offset<SimdMaskFor<Self, S>>
) -> (Self::PrefixMutUnit<'_, S>, &mut [SimdUnitFor<Self, S>], Self::SuffixMutUnit<'_, S>);
fn faer_slice_as_simd<S: Simd>(
slice: &[UnitFor<Self>]
) -> (&[SimdUnitFor<Self, S>], &[UnitFor<Self>]);
fn faer_slice_as_simd_mut<S: Simd>(
slice: &mut [UnitFor<Self>]
) -> (&mut [SimdUnitFor<Self, S>], &mut [UnitFor<Self>]);
fn faer_partial_load_unit<S: Simd>(
simd: S,
slice: &[UnitFor<Self>]
) -> SimdUnitFor<Self, S>;
fn faer_partial_store_unit<S: Simd>(
simd: S,
slice: &mut [UnitFor<Self>],
values: SimdUnitFor<Self, S>
);
fn faer_partial_load_last_unit<S: Simd>(
simd: S,
slice: &[UnitFor<Self>]
) -> SimdUnitFor<Self, S>;
fn faer_partial_store_last_unit<S: Simd>(
simd: S,
slice: &mut [UnitFor<Self>],
values: SimdUnitFor<Self, S>
);
fn faer_simd_splat_unit<S: Simd>(
simd: S,
unit: UnitFor<Self>
) -> SimdUnitFor<Self, S>;
fn faer_simd_scalar_mul<S: Simd>(simd: S, lhs: Self, rhs: Self) -> Self;
fn faer_simd_scalar_conj_mul<S: Simd>(simd: S, lhs: Self, rhs: Self) -> Self;
fn faer_simd_scalar_mul_adde<S: Simd>(
simd: S,
lhs: Self,
rhs: Self,
acc: Self
) -> Self;
fn faer_simd_scalar_conj_mul_adde<S: Simd>(
simd: S,
lhs: Self,
rhs: Self,
acc: Self
) -> Self;
fn faer_simd_neg<S: Simd>(
simd: S,
values: SimdGroupFor<Self, S>
) -> SimdGroupFor<Self, S>;
fn faer_simd_conj<S: Simd>(
simd: S,
values: SimdGroupFor<Self, S>
) -> SimdGroupFor<Self, S>;
fn faer_simd_rotate_left<S: Simd>(
simd: S,
values: SimdGroupFor<Self, S>,
amount: usize
) -> SimdGroupFor<Self, S>;
fn faer_simd_add<S: Simd>(
simd: S,
lhs: SimdGroupFor<Self, S>,
rhs: SimdGroupFor<Self, S>
) -> SimdGroupFor<Self, S>;
fn faer_simd_sub<S: Simd>(
simd: S,
lhs: SimdGroupFor<Self, S>,
rhs: SimdGroupFor<Self, S>
) -> SimdGroupFor<Self, S>;
fn faer_simd_mul<S: Simd>(
simd: S,
lhs: SimdGroupFor<Self, S>,
rhs: SimdGroupFor<Self, S>
) -> SimdGroupFor<Self, S>;
fn faer_simd_scale_real<S: Simd>(
simd: S,
lhs: SimdGroupFor<Self::Real, S>,
rhs: SimdGroupFor<Self, S>
) -> SimdGroupFor<Self, S>;
fn faer_simd_conj_mul<S: Simd>(
simd: S,
lhs: SimdGroupFor<Self, S>,
rhs: SimdGroupFor<Self, S>
) -> SimdGroupFor<Self, S>;
fn faer_simd_mul_adde<S: Simd>(
simd: S,
lhs: SimdGroupFor<Self, S>,
rhs: SimdGroupFor<Self, S>,
acc: SimdGroupFor<Self, S>
) -> SimdGroupFor<Self, S>;
fn faer_simd_conj_mul_adde<S: Simd>(
simd: S,
lhs: SimdGroupFor<Self, S>,
rhs: SimdGroupFor<Self, S>,
acc: SimdGroupFor<Self, S>
) -> SimdGroupFor<Self, S>;
fn faer_simd_abs2_adde<S: Simd>(
simd: S,
values: SimdGroupFor<Self, S>,
acc: SimdGroupFor<Self::Real, S>
) -> SimdGroupFor<Self::Real, S>;
fn faer_simd_abs2<S: Simd>(
simd: S,
values: SimdGroupFor<Self, S>
) -> SimdGroupFor<Self::Real, S>;
fn faer_simd_score<S: Simd>(
simd: S,
values: SimdGroupFor<Self, S>
) -> SimdGroupFor<Self::Real, S>;
// Provided methods
fn faer_is_nan(&self) -> bool { ... }
fn faer_is_finite(&self) -> bool { ... }
fn faer_partial_load<S: Simd>(
simd: S,
slice: GroupFor<Self, &[UnitFor<Self>]>
) -> SimdGroupFor<Self, S> { ... }
fn faer_partial_store<S: Simd>(
simd: S,
slice: GroupFor<Self, &mut [UnitFor<Self>]>,
values: SimdGroupFor<Self, S>
) { ... }
fn faer_partial_load_last<S: Simd>(
simd: S,
slice: GroupFor<Self, &[UnitFor<Self>]>
) -> SimdGroupFor<Self, S> { ... }
fn faer_partial_store_last<S: Simd>(
simd: S,
slice: GroupFor<Self, &mut [UnitFor<Self>]>,
values: SimdGroupFor<Self, S>
) { ... }
fn faer_simd_splat<S: Simd>(simd: S, value: Self) -> SimdGroupFor<Self, S> { ... }
fn faer_simd_reduce_add<S: Simd>(
simd: S,
values: SimdGroupFor<Self, S>
) -> Self { ... }
}Expand description
Unstable trait containing the operations that a number type needs to implement.
Required Associated Types§
type Real: RealField
type Simd: SimdCtx
type ScalarSimd: SimdCtx
type PortableSimd: SimdCtx
Required Methods§
sourcefn faer_from_f64(value: f64) -> Self
fn faer_from_f64(value: f64) -> Self
Converts value from f64 to Self.
The conversion may be lossy when converting to a type with less precision.
sourcefn faer_scale_real(self, rhs: Self::Real) -> Self
fn faer_scale_real(self, rhs: Self::Real) -> Self
Returns the input, scaled by rhs.
sourcefn faer_scale_power_of_two(self, rhs: Self::Real) -> Self
fn faer_scale_power_of_two(self, rhs: Self::Real) -> Self
Returns the input, scaled by rhs.
sourcefn faer_score(self) -> Self::Real
fn faer_score(self) -> Self::Real
Returns either the norm or squared norm of the number.
An implementation may choose either, so long as it chooses consistently.
sourcefn faer_from_real(real: Self::Real) -> Self
fn faer_from_real(real: Self::Real) -> Self
Returns a complex number whose real part is equal to real, and a zero imaginary part.
fn faer_align_offset<S: Simd>( simd: S, ptr: *const UnitFor<Self>, len: usize ) -> Offset<SimdMaskFor<Self, S>>
fn faer_slice_as_aligned_simd<S: Simd>( simd: S, slice: &[UnitFor<Self>], offset: Offset<SimdMaskFor<Self, S>> ) -> (Self::PrefixUnit<'_, S>, &[SimdUnitFor<Self, S>], Self::SuffixUnit<'_, S>)
fn faer_slice_as_aligned_simd_mut<S: Simd>( simd: S, slice: &mut [UnitFor<Self>], offset: Offset<SimdMaskFor<Self, S>> ) -> (Self::PrefixMutUnit<'_, S>, &mut [SimdUnitFor<Self, S>], Self::SuffixMutUnit<'_, S>)
fn faer_slice_as_simd<S: Simd>( slice: &[UnitFor<Self>] ) -> (&[SimdUnitFor<Self, S>], &[UnitFor<Self>])
fn faer_slice_as_simd_mut<S: Simd>( slice: &mut [UnitFor<Self>] ) -> (&mut [SimdUnitFor<Self, S>], &mut [UnitFor<Self>])
fn faer_partial_load_unit<S: Simd>( simd: S, slice: &[UnitFor<Self>] ) -> SimdUnitFor<Self, S>
fn faer_partial_store_unit<S: Simd>( simd: S, slice: &mut [UnitFor<Self>], values: SimdUnitFor<Self, S> )
fn faer_partial_load_last_unit<S: Simd>( simd: S, slice: &[UnitFor<Self>] ) -> SimdUnitFor<Self, S>
fn faer_partial_store_last_unit<S: Simd>( simd: S, slice: &mut [UnitFor<Self>], values: SimdUnitFor<Self, S> )
fn faer_simd_splat_unit<S: Simd>( simd: S, unit: UnitFor<Self> ) -> SimdUnitFor<Self, S>
fn faer_simd_scalar_mul<S: Simd>(simd: S, lhs: Self, rhs: Self) -> Self
fn faer_simd_scalar_conj_mul<S: Simd>(simd: S, lhs: Self, rhs: Self) -> Self
fn faer_simd_scalar_mul_adde<S: Simd>( simd: S, lhs: Self, rhs: Self, acc: Self ) -> Self
fn faer_simd_scalar_conj_mul_adde<S: Simd>( simd: S, lhs: Self, rhs: Self, acc: Self ) -> Self
fn faer_simd_neg<S: Simd>( simd: S, values: SimdGroupFor<Self, S> ) -> SimdGroupFor<Self, S>
fn faer_simd_conj<S: Simd>( simd: S, values: SimdGroupFor<Self, S> ) -> SimdGroupFor<Self, S>
fn faer_simd_rotate_left<S: Simd>( simd: S, values: SimdGroupFor<Self, S>, amount: usize ) -> SimdGroupFor<Self, S>
fn faer_simd_add<S: Simd>( simd: S, lhs: SimdGroupFor<Self, S>, rhs: SimdGroupFor<Self, S> ) -> SimdGroupFor<Self, S>
fn faer_simd_sub<S: Simd>( simd: S, lhs: SimdGroupFor<Self, S>, rhs: SimdGroupFor<Self, S> ) -> SimdGroupFor<Self, S>
fn faer_simd_mul<S: Simd>( simd: S, lhs: SimdGroupFor<Self, S>, rhs: SimdGroupFor<Self, S> ) -> SimdGroupFor<Self, S>
fn faer_simd_scale_real<S: Simd>( simd: S, lhs: SimdGroupFor<Self::Real, S>, rhs: SimdGroupFor<Self, S> ) -> SimdGroupFor<Self, S>
fn faer_simd_conj_mul<S: Simd>( simd: S, lhs: SimdGroupFor<Self, S>, rhs: SimdGroupFor<Self, S> ) -> SimdGroupFor<Self, S>
fn faer_simd_mul_adde<S: Simd>( simd: S, lhs: SimdGroupFor<Self, S>, rhs: SimdGroupFor<Self, S>, acc: SimdGroupFor<Self, S> ) -> SimdGroupFor<Self, S>
fn faer_simd_conj_mul_adde<S: Simd>( simd: S, lhs: SimdGroupFor<Self, S>, rhs: SimdGroupFor<Self, S>, acc: SimdGroupFor<Self, S> ) -> SimdGroupFor<Self, S>
fn faer_simd_abs2_adde<S: Simd>( simd: S, values: SimdGroupFor<Self, S>, acc: SimdGroupFor<Self::Real, S> ) -> SimdGroupFor<Self::Real, S>
fn faer_simd_abs2<S: Simd>( simd: S, values: SimdGroupFor<Self, S> ) -> SimdGroupFor<Self::Real, S>
fn faer_simd_score<S: Simd>( simd: S, values: SimdGroupFor<Self, S> ) -> SimdGroupFor<Self::Real, S>
Provided Methods§
sourcefn faer_is_nan(&self) -> bool
fn faer_is_nan(&self) -> bool
Returns true if self is a NaN value, or false otherwise.
sourcefn faer_is_finite(&self) -> bool
fn faer_is_finite(&self) -> bool
Returns true if self is a NaN value, or false otherwise.
fn faer_partial_load<S: Simd>( simd: S, slice: GroupFor<Self, &[UnitFor<Self>]> ) -> SimdGroupFor<Self, S>
fn faer_partial_store<S: Simd>( simd: S, slice: GroupFor<Self, &mut [UnitFor<Self>]>, values: SimdGroupFor<Self, S> )
fn faer_partial_load_last<S: Simd>( simd: S, slice: GroupFor<Self, &[UnitFor<Self>]> ) -> SimdGroupFor<Self, S>
fn faer_partial_store_last<S: Simd>( simd: S, slice: GroupFor<Self, &mut [UnitFor<Self>]>, values: SimdGroupFor<Self, S> )
fn faer_simd_splat<S: Simd>(simd: S, value: Self) -> SimdGroupFor<Self, S>
fn faer_simd_reduce_add<S: Simd>(simd: S, values: SimdGroupFor<Self, S>) -> Self
Object Safety§
This trait is not object safe.