complex prod(double* r, double* i, int n) {
__m256d vpr = _mm256_set_pd(1., 1., 1., 1.);
__m256d vpi = _mm256_set_pd(0., 0., 0., 0.);
for (int k = 0; k < n; k += 4) {
__m256d t, vr, vi;
vr = _mm256_load_pd(r+k);
vi = _mm256_load_pd(r+k);
t = _mm256_sub_pd(_mm256_mul_pd(vpr, vr), _mm256_mul_pd(vpi, vi));
vpi = _mm256_sub_pd(_mm256_mul_pd(vpr, vi), _mm256_mul_pd(vpi, vr));
vpr = t;
}
__attribute__((aligned(32))) double pr[4], pi[4];