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

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

Compute fft_res += fft_a * fft_b + fft_c * fft_d

Arguments

  • fft_res- Aligned Vector (output)
  • fft_a - CTorus slice (input)
  • fft_b- Aligned Vector (input)
  • fft_c- CTorus Slice (input)
  • fft_d- Aligned Vector (input)

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_d: AlignedVec<CTorus> = AlignedVec::new(big_n);

let mut fft_c: AlignedVec<CTorus> = AlignedVec::new(big_n);

let mut fft_res: AlignedVec<CTorus> = AlignedVec::new(big_n);

// ..
fft::double_mac(&mut fft_res, &fft_a, &fft_b, &fft_c, &fft_d);