pub struct SimdCtx<'N, T, S>where
T: ComplexField,
S: Simd,{
pub ctx: <T as ComplexField>::SimdCtx<S>,
pub len: Dim<'N>,
/* private fields */
}Fields§
§ctx: <T as ComplexField>::SimdCtx<S>§len: Dim<'N>Implementations§
Source§impl<'N, T, S> SimdCtx<'N, T, S>where
T: ComplexField,
S: Simd,
impl<'N, T, S> SimdCtx<'N, T, S>where
T: ComplexField,
S: Simd,
pub fn new( simd: <T as ComplexField>::SimdCtx<S>, len: Dim<'N>, ) -> SimdCtx<'N, T, S>
pub fn new_align( simd: <T as ComplexField>::SimdCtx<S>, len: Dim<'N>, align_offset: usize, ) -> SimdCtx<'N, T, S>
pub fn offset(&self) -> usize
pub fn new_force_mask( simd: <T as ComplexField>::SimdCtx<S>, len: Dim<'N>, ) -> SimdCtx<'N, T, S>
pub fn read<I>(
&self,
slice: Col<Ref<'_, T, Dim<'N>, ContiguousFwd>>,
index: I,
) -> <T as ComplexField>::SimdVec<S>where
I: SimdIndex<'N, T, S>,
pub fn write<I>(
&self,
slice: Col<Mut<'_, T, Dim<'N>, ContiguousFwd>>,
index: I,
value: <T as ComplexField>::SimdVec<S>,
)where
I: SimdIndex<'N, T, S>,
pub fn head_mask(&self) -> <T as ComplexField>::SimdMask<S>
pub fn tail_mask(&self) -> <T as ComplexField>::SimdMask<S>
pub fn indices( &self, ) -> (Option<SimdHead<'N, T, S>>, impl Clone + ExactSizeIterator + DoubleEndedIterator, Option<SimdTail<'N, T, S>>)
pub fn batch_indices<const BATCH: usize>( &self, ) -> (Option<SimdHead<'N, T, S>>, impl Clone + ExactSizeIterator + DoubleEndedIterator, impl Clone + ExactSizeIterator + DoubleEndedIterator, Option<SimdTail<'N, T, S>>)
Methods from Deref<Target = SimdCtx<T, S>>§
pub fn zero(&self) -> <T as ComplexField>::SimdVec<S>
pub fn splat(&self, value: &T) -> <T as ComplexField>::SimdVec<S>
pub fn splat_real( &self, value: &<T as ComplexField>::Real, ) -> RealReg<<T as ComplexField>::SimdVec<S>>
pub fn add( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn sub( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn neg( &self, value: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn conj( &self, value: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn abs1( &self, value: <T as ComplexField>::SimdVec<S>, ) -> RealReg<<T as ComplexField>::SimdVec<S>>
pub fn abs_max( &self, value: <T as ComplexField>::SimdVec<S>, ) -> RealReg<<T as ComplexField>::SimdVec<S>>
pub fn mul_real( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> <T as ComplexField>::SimdVec<S>
pub fn mul_pow2( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> <T as ComplexField>::SimdVec<S>
pub fn mul( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn conj_mul( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn mul_add( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: <T as ComplexField>::SimdVec<S>, acc: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn conj_mul_add( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: <T as ComplexField>::SimdVec<S>, acc: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn abs2( &self, value: <T as ComplexField>::SimdVec<S>, ) -> RealReg<<T as ComplexField>::SimdVec<S>>
pub fn abs2_add( &self, value: <T as ComplexField>::SimdVec<S>, acc: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> RealReg<<T as ComplexField>::SimdVec<S>>
pub fn reduce_sum(&self, value: <T as ComplexField>::SimdVec<S>) -> T
pub fn reduce_max(&self, value: RealReg<<T as ComplexField>::SimdVec<S>>) -> T
pub fn reduce_sum_real( &self, value: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> <<T as Conjugate>::Canonical as ComplexField>::Real
pub fn reduce_max_real( &self, value: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> <<T as Conjugate>::Canonical as ComplexField>::Real
pub fn max( &self, lhs: RealReg<<T as ComplexField>::SimdVec<S>>, rhs: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> RealReg<<T as ComplexField>::SimdVec<S>>
pub fn eq( &self, lhs: <T as ComplexField>::SimdVec<S>, rhs: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdMask<S>
pub fn lt( &self, lhs: RealReg<<T as ComplexField>::SimdVec<S>>, rhs: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> <T as ComplexField>::SimdMask<S>
pub fn gt( &self, lhs: RealReg<<T as ComplexField>::SimdVec<S>>, rhs: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> <T as ComplexField>::SimdMask<S>
pub fn le( &self, lhs: RealReg<<T as ComplexField>::SimdVec<S>>, rhs: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> <T as ComplexField>::SimdMask<S>
pub fn ge( &self, lhs: RealReg<<T as ComplexField>::SimdVec<S>>, rhs: RealReg<<T as ComplexField>::SimdVec<S>>, ) -> <T as ComplexField>::SimdMask<S>
pub fn select( &self, mask: <T as ComplexField>::SimdMask<S>, lhs: <T as ComplexField>::SimdVec<S>, rhs: <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn iselect( &self, mask: <T as ComplexField>::SimdMask<S>, lhs: <T as ComplexField>::SimdIndex<S>, rhs: <T as ComplexField>::SimdIndex<S>, ) -> <T as ComplexField>::SimdIndex<S>
pub fn isplat( &self, value: <T as ComplexField>::Index, ) -> <T as ComplexField>::SimdIndex<S>
pub fn iadd( &self, lhs: <T as ComplexField>::SimdIndex<S>, rhs: <T as ComplexField>::SimdIndex<S>, ) -> <T as ComplexField>::SimdIndex<S>
pub fn or_mask( &self, lhs: <T as ComplexField>::SimdMask<S>, rhs: <T as ComplexField>::SimdMask<S>, ) -> <T as ComplexField>::SimdMask<S>
pub fn and_mask( &self, lhs: <T as ComplexField>::SimdMask<S>, rhs: <T as ComplexField>::SimdMask<S>, ) -> <T as ComplexField>::SimdMask<S>
pub fn not_mask( &self, mask: <T as ComplexField>::SimdMask<S>, ) -> <T as ComplexField>::SimdMask<S>
pub fn first_true_mask(&self, value: <T as ComplexField>::SimdMask<S>) -> usize
pub unsafe fn mask_load( &self, mask: <T as ComplexField>::SimdMemMask<S>, ptr: *const <T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub unsafe fn mask_store( &self, mask: <T as ComplexField>::SimdMemMask<S>, ptr: *mut <T as ComplexField>::SimdVec<S>, value: <T as ComplexField>::SimdVec<S>, )
pub fn load( &self, ptr: &<T as ComplexField>::SimdVec<S>, ) -> <T as ComplexField>::SimdVec<S>
pub fn store( &self, ptr: &mut <T as ComplexField>::SimdVec<S>, value: <T as ComplexField>::SimdVec<S>, )
Trait Implementations§
impl<T, S> Copy for SimdCtx<'_, T, S>where
T: ComplexField,
S: Simd,
Auto Trait Implementations§
impl<'N, T, S> Freeze for SimdCtx<'N, T, S>where
<T as ComplexField>::SimdCtx<S>: Freeze,
<T as ComplexField>::SimdMask<S>: Freeze,
<T as ComplexField>::SimdMemMask<S>: Freeze,
impl<'N, T, S> RefUnwindSafe for SimdCtx<'N, T, S>where
<T as ComplexField>::SimdCtx<S>: RefUnwindSafe,
<T as ComplexField>::SimdMask<S>: RefUnwindSafe,
<T as ComplexField>::SimdMemMask<S>: RefUnwindSafe,
impl<'N, T, S> Send for SimdCtx<'N, T, S>where
<T as ComplexField>::SimdCtx<S>: Send,
<T as ComplexField>::SimdMask<S>: Send,
<T as ComplexField>::SimdMemMask<S>: Send,
impl<'N, T, S> Sync for SimdCtx<'N, T, S>where
<T as ComplexField>::SimdCtx<S>: Sync,
<T as ComplexField>::SimdMask<S>: Sync,
<T as ComplexField>::SimdMemMask<S>: Sync,
impl<'N, T, S> Unpin for SimdCtx<'N, T, S>where
<T as ComplexField>::SimdCtx<S>: Unpin,
<T as ComplexField>::SimdMask<S>: Unpin,
<T as ComplexField>::SimdMemMask<S>: Unpin,
impl<'N, T, S> UnwindSafe for SimdCtx<'N, T, S>where
<T as ComplexField>::SimdCtx<S>: UnwindSafe,
<T as ComplexField>::SimdMask<S>: UnwindSafe,
<T as ComplexField>::SimdMemMask<S>: UnwindSafe,
Blanket Implementations§
Source§impl<T> AlignerFor<1> for T
impl<T> AlignerFor<1> for T
Source§impl<T> AlignerFor<1024> for T
impl<T> AlignerFor<1024> for T
Source§type Aligner = AlignTo1024<T>
type Aligner = AlignTo1024<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<128> for T
impl<T> AlignerFor<128> for T
Source§type Aligner = AlignTo128<T>
type Aligner = AlignTo128<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<16> for T
impl<T> AlignerFor<16> for T
Source§impl<T> AlignerFor<16384> for T
impl<T> AlignerFor<16384> for T
Source§type Aligner = AlignTo16384<T>
type Aligner = AlignTo16384<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<2> for T
impl<T> AlignerFor<2> for T
Source§impl<T> AlignerFor<2048> for T
impl<T> AlignerFor<2048> for T
Source§type Aligner = AlignTo2048<T>
type Aligner = AlignTo2048<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<256> for T
impl<T> AlignerFor<256> for T
Source§type Aligner = AlignTo256<T>
type Aligner = AlignTo256<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<32> for T
impl<T> AlignerFor<32> for T
Source§impl<T> AlignerFor<32768> for T
impl<T> AlignerFor<32768> for T
Source§type Aligner = AlignTo32768<T>
type Aligner = AlignTo32768<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<4> for T
impl<T> AlignerFor<4> for T
Source§impl<T> AlignerFor<4096> for T
impl<T> AlignerFor<4096> for T
Source§type Aligner = AlignTo4096<T>
type Aligner = AlignTo4096<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<512> for T
impl<T> AlignerFor<512> for T
Source§type Aligner = AlignTo512<T>
type Aligner = AlignTo512<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> AlignerFor<64> for T
impl<T> AlignerFor<64> for T
Source§impl<T> AlignerFor<8> for T
impl<T> AlignerFor<8> for T
Source§impl<T> AlignerFor<8192> for T
impl<T> AlignerFor<8192> for T
Source§type Aligner = AlignTo8192<T>
type Aligner = AlignTo8192<T>
The
AlignTo* type which aligns Self to ALIGNMENT.Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<'a, T> RCowCompatibleRef<'a> for Twhere
T: Clone + 'a,
impl<'a, T> RCowCompatibleRef<'a> for Twhere
T: Clone + 'a,
Source§fn as_c_ref(from: &'a T) -> <T as RCowCompatibleRef<'a>>::RefC
fn as_c_ref(from: &'a T) -> <T as RCowCompatibleRef<'a>>::RefC
Converts a reference to an FFI-safe type
Source§fn as_rust_ref(from: <T as RCowCompatibleRef<'a>>::RefC) -> &'a T
fn as_rust_ref(from: <T as RCowCompatibleRef<'a>>::RefC) -> &'a T
Converts an FFI-safe type to a reference
Source§impl<S> ROExtAcc for S
impl<S> ROExtAcc for S
Source§fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F
fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F
Gets a reference to a field, determined by
offset. Read moreSource§fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F
fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F
Gets a muatble reference to a field, determined by
offset. Read moreSource§fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F
fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F
Gets a const pointer to a field,
the field is determined by
offset. Read moreSource§fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F
fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F
Gets a mutable pointer to a field, determined by
offset. Read moreSource§impl<S> ROExtOps<Aligned> for S
impl<S> ROExtOps<Aligned> for S
Source§fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F
fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F
Replaces a field (determined by
offset) with value,
returning the previous value of the field. Read moreSource§fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> Fwhere
F: Copy,
fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> Fwhere
F: Copy,
Source§impl<S> ROExtOps<Unaligned> for S
impl<S> ROExtOps<Unaligned> for S
Source§fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F
fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F
Replaces a field (determined by
offset) with value,
returning the previous value of the field. Read moreSource§fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> Fwhere
F: Copy,
fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> Fwhere
F: Copy,
Source§impl<T> SelfOps for Twhere
T: ?Sized,
impl<T> SelfOps for Twhere
T: ?Sized,
Source§fn piped<F, U>(self, f: F) -> U
fn piped<F, U>(self, f: F) -> U
Emulates the pipeline operator, allowing method syntax in more places. Read more
Source§fn piped_ref<'a, F, U>(&'a self, f: F) -> Uwhere
F: FnOnce(&'a Self) -> U,
fn piped_ref<'a, F, U>(&'a self, f: F) -> Uwhere
F: FnOnce(&'a Self) -> U,
The same as
piped except that the function takes &Self
Useful for functions that take &Self instead of Self. Read moreSource§fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
The same as
piped, except that the function takes &mut Self.
Useful for functions that take &mut Self instead of Self.Source§fn mutated<F>(self, f: F) -> Self
fn mutated<F>(self, f: F) -> Self
Mutates self using a closure taking self by mutable reference,
passing it along the method chain. Read more
Source§fn observe<F>(self, f: F) -> Self
fn observe<F>(self, f: F) -> Self
Observes the value of self, passing it along unmodified.
Useful in long method chains. Read more
Source§fn as_ref_<T>(&self) -> &T
fn as_ref_<T>(&self) -> &T
Performs a reference to reference conversion with
AsRef,
using the turbofish .as_ref_::<_>() syntax. Read moreSource§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§unsafe fn to_subset_unchecked(&self) -> SS
unsafe fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.Source§impl<This> TransmuteElement for Thiswhere
This: ?Sized,
impl<This> TransmuteElement for Thiswhere
This: ?Sized,
Source§unsafe fn transmute_element<T>(self) -> Self::TransmutedPtrwhere
Self: CanTransmuteElement<T>,
unsafe fn transmute_element<T>(self) -> Self::TransmutedPtrwhere
Self: CanTransmuteElement<T>,
Transmutes the element type of this pointer.. Read more
Source§impl<T> TypeIdentity for Twhere
T: ?Sized,
impl<T> TypeIdentity for Twhere
T: ?Sized,
Source§fn as_type_mut(&mut self) -> &mut Self::Type
fn as_type_mut(&mut self) -> &mut Self::Type
Converts a mutable reference back to the original type.
Source§fn into_type_box(self: Box<Self>) -> Box<Self::Type>
fn into_type_box(self: Box<Self>) -> Box<Self::Type>
Converts a box back to the original type.
Source§fn into_type_arc(this: Arc<Self>) -> Arc<Self::Type>
fn into_type_arc(this: Arc<Self>) -> Arc<Self::Type>
Converts an Arc back to the original type. Read more
Source§fn into_type_rc(this: Rc<Self>) -> Rc<Self::Type>
fn into_type_rc(this: Rc<Self>) -> Rc<Self::Type>
Converts an Rc back to the original type. Read more
Source§fn from_type_ref(this: &Self::Type) -> &Self
fn from_type_ref(this: &Self::Type) -> &Self
Converts a reference back to the original type.
Source§fn from_type_mut(this: &mut Self::Type) -> &mut Self
fn from_type_mut(this: &mut Self::Type) -> &mut Self
Converts a mutable reference back to the original type.
Source§fn from_type_box(this: Box<Self::Type>) -> Box<Self>
fn from_type_box(this: Box<Self::Type>) -> Box<Self>
Converts a box back to the original type.