poulpy/core/src/external_product.rs
core/src/external_product.rsRaw
1use base2k::{FFT64, Module, Scratch};
2
3pub trait ExternalProductScratchSpace {
4 fn external_product_scratch_space(module: &Module<FFT64>, res_size: usize, lhs: usize, rhs: usize) -> usize;
5}
6
7pub trait ExternalProduct<DataLhs, DataRhs> {
8 type Lhs;
9 type Rhs;
10 fn external_product(&mut self, module: &Module<FFT64>, lhs: &Self::Lhs, rhs: &Self::Rhs, scratch: &mut Scratch);
11}
12pub trait ExternalProductInplaceScratchSpace {
13 fn external_product_inplace_scratch_space(module: &Module<FFT64>, res_size: usize, rhs: usize) -> usize;
14}
15
16pub trait ExternalProductInplace<DataRhs> {
17 type Rhs;
18 fn external_product_inplace(&mut self, module: &Module<FFT64>, rhs: &Self::Rhs, scratch: &mut Scratch);
19}