pub struct Convolve<M>(PhantomData<fn() -> M>);Tuple Fields§
§0: PhantomData<fn() -> M>Trait Implementations§
Source§impl<M, N1, N2, N3> ConvolveSteps for Convolve<(M, (N1, N2, N3))>where
M: MIntConvert + MIntConvert<u32>,
N1: Montgomery32NttModulus,
N2: Montgomery32NttModulus,
N3: Montgomery32NttModulus,
impl<M, N1, N2, N3> ConvolveSteps for Convolve<(M, (N1, N2, N3))>where
M: MIntConvert + MIntConvert<u32>,
N1: Montgomery32NttModulus,
N2: Montgomery32NttModulus,
N3: Montgomery32NttModulus,
type T = Vec<MInt<M>>
type F = (Vec<MInt<N1>>, Vec<MInt<N2>>, Vec<MInt<N3>>)
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
Source§impl<N1, N2, N3> ConvolveSteps for Convolve<(u64, (N1, N2, N3))>
impl<N1, N2, N3> ConvolveSteps for Convolve<(u64, (N1, N2, N3))>
type T = Vec<u64>
type F = (Vec<MInt<N1>>, Vec<MInt<N2>>, Vec<MInt<N3>>)
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
Source§impl<M> ConvolveSteps for Convolve<M>where
M: Montgomery32NttModulus,
impl<M> ConvolveSteps for Convolve<M>where
M: Montgomery32NttModulus,
type T = Vec<MInt<M>>
type F = Vec<MInt<M>>
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
Source§impl<M, N1, N2, N3> NttReuse for Convolve<(M, (N1, N2, N3))>where
M: MIntConvert + MIntConvert<u32>,
N1: Montgomery32NttModulus,
N2: Montgomery32NttModulus,
N3: Montgomery32NttModulus,
impl<M, N1, N2, N3> NttReuse for Convolve<(M, (N1, N2, N3))>where
M: MIntConvert + MIntConvert<u32>,
N1: Montgomery32NttModulus,
N2: Montgomery32NttModulus,
N3: Montgomery32NttModulus,
Source§fn ntt_doubling(f: Self::F) -> Self::F
fn ntt_doubling(f: Self::F) -> Self::F
F(a) → F(a + [0] * a.len())
Source§fn even_mul_normal_neg(f: &Self::F, g: &Self::F) -> Self::F
fn even_mul_normal_neg(f: &Self::F, g: &Self::F) -> Self::F
F(a(x)), F(b(x)) → even(F(a(x) * b(-x)))
Source§fn odd_mul_normal_neg(f: &Self::F, g: &Self::F) -> Self::F
fn odd_mul_normal_neg(f: &Self::F, g: &Self::F) -> Self::F
F(a(x)), F(b(x)) → odd(F(a(x) * b(-x)))
const MULTIPLE: bool = true
Auto Trait Implementations§
impl<M> Freeze for Convolve<M>
impl<M> RefUnwindSafe for Convolve<M>
impl<M> Send for Convolve<M>
impl<M> Sync for Convolve<M>
impl<M> Unpin for Convolve<M>
impl<M> UnwindSafe for Convolve<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