diff --git a/pocketfft_hdronly.h b/pocketfft_hdronly.h index 359375cd69bc4fe90e52ae9ff748d4bf2b23ff13..67087e691572f1a4d18518dbee171516c8a52a2d 100644 --- a/pocketfft_hdronly.h +++ b/pocketfft_hdronly.h @@ -497,8 +497,8 @@ struct util // hack to avoid duplicate symbols return (nthreads==0) ? size_t(omp_get_max_threads()) : nthreads; } #else - static size_t nthreads() { return 1; } - static size_t thread_num() { return 0; } + static constexpr size_t nthreads() { return 1; } + static constexpr size_t thread_num() { return 0; } #endif }; @@ -2014,8 +2014,9 @@ template<typename T0> class fftblue /* initialize a_k and FFT it */ for (size_t m=0; m<n; ++m) akf[m] = c[m].template special_mul<bwd>(bk[m]); + auto zero = akf[0]*T0(0); for (size_t m=n; m<n2; ++m) - akf[m]=akf[0]*T0(0); + akf[m]=zero; plan.forward (akf.data(),1.); @@ -2082,8 +2083,9 @@ template<typename T0> class fftblue template<typename T> void forward_r(T c[], T0 fct) { arr<cmplx<T>> tmp(n); + auto zero = T0(0)*c[0]; for (size_t m=0; m<n; ++m) - tmp[m].Set(c[m], T0(0)*c[m]); + tmp[m].Set(c[m], zero); fft<false>(tmp.data(),fct); c[0] = tmp[0].r; memcpy (c+1, tmp.data()+1, (n-1)*sizeof(T)); @@ -2708,7 +2710,7 @@ template<typename T> NOINLINE void general_c2r( if (forward) for (; i<len-1; i+=2, ++ii) { - tdata[i ] = in[it.iofs(ii)].r; + tdata[i ] = in[it.iofs(ii)].r; tdata[i+1] = -in[it.iofs(ii)].i; } else @@ -2896,7 +2898,8 @@ template<typename T> void c2r(const shape_t &shape_out, stride_t stride_inter(shape_in.size()); stride_inter.back() = sizeof(cmplx<T>); for (int i=int(shape_in.size())-2; i>=0; --i) - stride_inter[size_t(i)] = stride_inter[size_t(i+1)]*ptrdiff_t(shape_in[size_t(i+1)]); + stride_inter[size_t(i)] = + stride_inter[size_t(i+1)]*ptrdiff_t(shape_in[size_t(i+1)]); arr<complex<T>> tmp(nval); auto newaxes = shape_t({axes.begin(), --axes.end()}); c2c(shape_in, stride_in, stride_inter, newaxes, forward, data_in, tmp.data(),