pub struct LowStageTwiddles { /* private fields */ }Expand description
The twiddles of the lowest LOW_STAGES stages of a single-column additive transform.
Stage j pairs elements 2^j apart, and block b of that stage, its 2^(j+1) elements
from 2^(j+1) b on, scales by one twiddle, affine in b:
twiddle(j, b) = shifts[j] + Σ basis[k] over the set bits k of bA run of 2^LOW_STAGES elements is closed under all of those stages, so they run together
while the run sits in registers, instead of in one sweep of the slice each.
Implementations§
Source§impl LowStageTwiddles
impl LowStageTwiddles
Sourcepub fn new(shifts: &[u128], basis: &[u128]) -> Self
pub fn new(shifts: &[u128], basis: &[u128]) -> Self
The twiddles of a transform with these stage shifts and this block basis.
§Panics
Panics if shifts holds fewer than LOW_STAGES stages, or basis holds fewer than
LOW_STAGES - 1 elements.
Sourcepub fn forward(&self, values: &mut [u128], first_run: usize)
pub fn forward(&self, values: &mut [u128], first_run: usize)
Runs the low stages of the forward transform over values.
values starts at element 2^LOW_STAGES · first_run of the transform, and ends on a
whole run of 2^LOW_STAGES elements.
§Panics
Panics if values ends inside a run, or if a run lies past the basis the twiddles hold.
Trait Implementations§
Source§impl Clone for LowStageTwiddles
impl Clone for LowStageTwiddles
Auto Trait Implementations§
impl Freeze for LowStageTwiddles
impl RefUnwindSafe for LowStageTwiddles
impl Send for LowStageTwiddles
impl Sync for LowStageTwiddles
impl Unpin for LowStageTwiddles
impl UnsafeUnpin for LowStageTwiddles
impl UnwindSafe for LowStageTwiddles
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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> ⓘ
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> ⓘ
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 more