ffts_real_nd.c:96 gives: plan->transform(plan, din + (j Ms0), buf + (j (Ms0 / 2 + 1)));
buf here is uint64_t* and is 16 byte aligned. This means that in passing buf + x to a function that expects 16 byte alignment, we must have x%2 == 0 which is not the case resulting in segfaults on my machine whenever j is odd.
ffts_real_nd.c:96 gives: plan->transform(plan, din + (j Ms0), buf + (j (Ms0 / 2 + 1))); buf here is uint64_t* and is 16 byte aligned. This means that in passing buf + x to a function that expects 16 byte alignment, we must have x%2 == 0 which is not the case resulting in segfaults on my machine whenever j is odd.