[][src]Function concrete_lib::operators::math::fft::mac

pub fn mac(
    fft_res: &mut AlignedVec<CTorus>,
    fft_a: &[CTorus],
    fft_b: &AlignedVec<CTorus>
)

Compute a mac (multiplier-accumulator): for all i, fft_res[i] += fft_a[i] * fft_b[i]

Arguments

  • fft_res - CTorus slice containing the result of the addition (output)
  • fft_a - CTorus slice (input)
  • fft_b - CTorus Aligned Vector (inputs)

Example

#[macro_use]
use concrete_lib;
use concrete_lib::operators::math::fft;
use concrete_lib::types::{C2CPlanTorus, CTorus};
use fftw::array::AlignedVec;

let big_n: usize = 1024;
let mut fft_a: AlignedVec<CTorus> = AlignedVec::new(big_n);
let mut fft_b: AlignedVec<CTorus> = AlignedVec::new(big_n);
let mut fft_res: AlignedVec<CTorus> = AlignedVec::new(big_n);
// ..
fft::mac(&mut fft_res, &fft_a, &fft_b);