function INVERSE({ data, width: w, height: h }) {
if (w === undefined) {
w = data.length;
h = 1;
}
const Dre = data.Dre.slice(),
Dim = data.Dim.slice();
const wh = Math.floor(w / 2),
hh = Math.floor(h / 2);
{
const re = new Float64Array(w),
im = new Float64Array(w);
for (let j = 0; j < h; j++) {
for (let i = 0; i < w; i++) {
re[i] = Dre[i + w * j];
im[i] = Dim[i + w * j];
}
FFT.inverseTransform(re, im);
for (let i = 0; i < re.length; i++) {
Dre[i + w * j] = re[i];
Dim[i + w * j] = im[i];
}
}
}
{
const re = new Float64Array(h),
im = new Float64Array(h);
const a = 1 / (w * h);
for (let i = 0; i < w; i++) {
for (let j = 0; j < h; j++) {
re[j] = Dre[i + w * j];
im[j] = Dim[i + w * j];
}
FFT.inverseTransform(re, im);
for (let j = 0; j < re.length; j++) {
Dre[i + w * j] = re[j] * a;
}
}
}
return Dre;
}