pub struct BitwiseorConvolve<M> { /* private fields */ }
Implementations§
Source§impl<M> BitwiseorConvolve<M>where
M: Monoid,
impl<M> BitwiseorConvolve<M>where
M: Monoid,
Sourcepub fn zeta_transform(f: &mut [M::T])
pub fn zeta_transform(f: &mut [M::T])
$$g(m) = \sum_{n \mid m}f(n)$$
Examples found in repository?
More examples
crates/competitive/src/math/subset_convolve.rs (line 29)
21 fn transform(t: Self::T, len: usize) -> Self::F {
22 let k = len.trailing_zeros() as usize;
23 let mut f = vec![vec![R::zero(); len]; k + 1];
24 for (i, t) in t.iter().enumerate() {
25 let f = &mut f[i.count_ones() as usize][i];
26 *f = R::add(f, t);
27 }
28 for f in f.iter_mut() {
29 BitwiseorConvolve::<R::Additive>::zeta_transform(f);
30 }
31 f
32 }
Source§impl<G> BitwiseorConvolve<G>where
G: Group,
impl<G> BitwiseorConvolve<G>where
G: Group,
Sourcepub fn mobius_transform(f: &mut [G::T])
pub fn mobius_transform(f: &mut [G::T])
$$f(m) = \sum_{n \mid m}h(n)$$
Examples found in repository?
More examples
Trait Implementations§
Source§impl<R> ConvolveSteps for BitwiseorConvolve<R>
impl<R> ConvolveSteps for BitwiseorConvolve<R>
type T = Vec<<R as SemiRing>::T>
type F = Vec<<R as SemiRing>::T>
fn length(t: &Self::T) -> usize
fn transform(t: Self::T, _len: usize) -> Self::F
fn inverse_transform(f: Self::F, _len: usize) -> Self::T
fn multiply(f: &mut Self::F, g: &Self::F)
fn convolve(a: Self::T, b: Self::T) -> Self::T
Auto Trait Implementations§
impl<M> Freeze for BitwiseorConvolve<M>
impl<M> RefUnwindSafe for BitwiseorConvolve<M>
impl<M> Send for BitwiseorConvolve<M>
impl<M> Sync for BitwiseorConvolve<M>
impl<M> Unpin for BitwiseorConvolve<M>
impl<M> UnwindSafe for BitwiseorConvolve<M>
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