pub struct SchoolbookConvolution;Expand description
Very simple schoolbook convolution algorithm.
Trait Implementations§
Source§impl<R: ?Sized + RingBase> ConvolutionAlgorithm<R> for SchoolbookConvolution
impl<R: ?Sized + RingBase> ConvolutionAlgorithm<R> for SchoolbookConvolution
Source§fn supports_ring<S: RingStore<Type = R> + Copy>(&self, _ring: S) -> bool
fn supports_ring<S: RingStore<Type = R> + Copy>(&self, _ring: S) -> bool
Returns whether this convolution algorithm supports computations of
the given ring. Read more
Source§fn compute_convolution<S, V1, V2>(
&self,
lhs: V1,
rhs: V2,
dst: &mut [<R as RingBase>::Element],
ring: S,
)where
S: RingStore<Type = R> + Copy,
V1: VectorView<<R as RingBase>::Element>,
V2: VectorView<<R as RingBase>::Element>,
fn compute_convolution<S, V1, V2>(
&self,
lhs: V1,
rhs: V2,
dst: &mut [<R as RingBase>::Element],
ring: S,
)where
S: RingStore<Type = R> + Copy,
V1: VectorView<<R as RingBase>::Element>,
V2: VectorView<<R as RingBase>::Element>,
Source§type PreparedConvolutionOperand = ()
type PreparedConvolutionOperand = ()
Additional data associated to a list of ring elements, which can be used to
compute a convolution where this list is one of the operands faster. Read more
Source§fn prepare_convolution_operand<S, V>(
&self,
_val: V,
_length_hint: Option<usize>,
_ring: S,
) -> Self::PreparedConvolutionOperand
fn prepare_convolution_operand<S, V>( &self, _val: V, _length_hint: Option<usize>, _ring: S, ) -> Self::PreparedConvolutionOperand
Takes an input list of values and computes an opaque
ConvolutionAlgorithm::PreparedConvolutionOperand, which can be used to compute
future convolutions with this list of values faster. Read moreSource§fn compute_convolution_prepared<S, V1, V2>(
&self,
lhs: V1,
_lhs_prep: Option<&Self::PreparedConvolutionOperand>,
rhs: V2,
_rhs_prep: Option<&Self::PreparedConvolutionOperand>,
dst: &mut [R::Element],
ring: S,
)
fn compute_convolution_prepared<S, V1, V2>( &self, lhs: V1, _lhs_prep: Option<&Self::PreparedConvolutionOperand>, rhs: V2, _rhs_prep: Option<&Self::PreparedConvolutionOperand>, dst: &mut [R::Element], ring: S, )
Elementwise adds the convolution of
lhs and rhs to dst. If provided, the given
prepared convolution operands are used for a faster computation. Read moreSource§fn compute_convolution_sum<'a, S, I, V1, V2>(
&self,
values: I,
dst: &mut [R::Element],
ring: S,
)where
S: RingStore<Type = R> + Copy,
I: ExactSizeIterator<Item = (V1, Option<&'a Self::PreparedConvolutionOperand>, V2, Option<&'a Self::PreparedConvolutionOperand>)>,
V1: VectorView<R::Element>,
V2: VectorView<R::Element>,
Self: 'a,
R: 'a,
fn compute_convolution_sum<'a, S, I, V1, V2>(
&self,
values: I,
dst: &mut [R::Element],
ring: S,
)where
S: RingStore<Type = R> + Copy,
I: ExactSizeIterator<Item = (V1, Option<&'a Self::PreparedConvolutionOperand>, V2, Option<&'a Self::PreparedConvolutionOperand>)>,
V1: VectorView<R::Element>,
V2: VectorView<R::Element>,
Self: 'a,
R: 'a,
Computes a convolution for each tuple in the given sequence, and sums the result of each
convolution to
dst. Read moreAuto Trait Implementations§
impl Freeze for SchoolbookConvolution
impl RefUnwindSafe for SchoolbookConvolution
impl Send for SchoolbookConvolution
impl Sync for SchoolbookConvolution
impl Unpin for SchoolbookConvolution
impl UnsafeUnpin for SchoolbookConvolution
impl UnwindSafe for SchoolbookConvolution
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
Mutably borrows from an owned value. Read more
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 more