vals2coeffs = function vals2coeffs (vals) {
const n = vals.length - 1;
if (n <= 0) return vals.slice();
let coeffs = [];
for (let i = n - 1; i >= 1; i--) {
coeffs[n + i] = coeffs[n - i] = vals[i];
}
coeffs[0] = vals[n]; coeffs[n] = vals[0];
let imag = []; imag.length = 2*n; imag.fill(0);
fft_in_place(imag, coeffs);
const scale = 1/n;
for (let i = 1; i <= n; i++) {
coeffs[i] *= scale;
}
coeffs[0] *= scale * .5; coeffs[n] *= scale * .5;
coeffs.splice(n+1);
return coeffs;
}