# HG changeset patch
# User Chris Cannam
# Date 1444041011 -3600
# Node ID fcb64e4b83938051713c1774ab34095d821a3b81
# Parent b3243c84ccb3c7398becc600dcc5a42088175569
Report magnitudes for total
diff -r b3243c84ccb3 -r fcb64e4b8393 fft/test.html
--- a/fft/test.html Mon Oct 05 09:53:11 2015 +0100
+++ b/fft/test.html Mon Oct 05 11:30:11 2015 +0100
@@ -38,7 +38,7 @@
- Nayuki: in-place single-precision complex-complex
- Nockert: double-precision real-complex
- - Nayuki: double-precision complex-complex (forward transform is scaled)
+ - Nayuki: double-precision complex-complex. Forward transform is scaled and I've scaled it back again here, which may introduce rounding error.
Rationale
diff -r b3243c84ccb3 -r fcb64e4b8393 fft/test.js
--- a/fft/test.js Mon Oct 05 09:53:11 2015 +0100
+++ b/fft/test.js Mon Oct 05 11:30:11 2015 +0100
@@ -61,7 +61,7 @@
var imag = zeroReals(size);
transform(real, imag);
for (var j = 0; j < size; ++j) {
- total += real[j] + imag[j];
+ total += Math.sqrt(real[j] * real[j] + imag[j] * imag[j]);
}
}
@@ -87,8 +87,8 @@
var ri = inputReal64s(size);
var co = new Float64Array(2 * size);
fft.simple(co, ri, 'real');
- for (var j = 0; j < 2 * size; ++j) {
- total += co[j];
+ for (var j = 0; j < size; ++j) {
+ total += Math.sqrt(co[j*2] * co[j*2] + co[j*2+1] * co[j*2+1]);
}
}
@@ -104,6 +104,7 @@
var end = start;
total = 0.0;
+ var scale = Math.sqrt(size);
for (var i = 0; i < 2*iterations; ++i) {
if (i == iterations) {
@@ -112,13 +113,14 @@
var ci = inputComplexArray(size);
var co = ci.FFT();
for (var j = 0; j < size; ++j) {
- total += co.real[j] + co.imag[j];
+ total += scale *
+ Math.sqrt(co.real[j] * co.real[j] + co.imag[j] * co.imag[j]);
}
}
var end = performance.now();
- report("dntj", start, middle, end, total * Math.sqrt(size));
+ report("dntj", start, middle, end, total);
}
function test() {