changeset 26:9af60df83c6f

Adjust inputs so as to get a nice round number as output
author Chris Cannam
date Wed, 07 Oct 2015 13:59:09 +0100
parents 66f9fd5ac611
children 4fa5f3f883a2
files fft/index.html fft/test.js
diffstat 2 files changed, 33 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
--- a/fft/index.html	Wed Oct 07 13:46:38 2015 +0100
+++ b/fft/index.html	Wed Oct 07 13:59:09 2015 +0100
@@ -1,31 +1,32 @@
 <html>
   <head>
+
+    <meta charset="UTF-8">
+    <title>Javascript FFT speed test</title>
+
+    <style type="text/css">
+      body { margin: 5%; }
+      table, td, th { border: 0.1em solid #e0e0e0; border-collapse: collapse }
+      td, th { padding: 0.5em }
+    </style>
     
-  <meta charset="UTF-8">
-
-  <style type="text/css">
-    body { margin: 5%; }
-    table, td, th { border: 0.1em solid #e0e0e0; border-collapse: collapse }
-    td, th { padding: 0.5em }
-  </style>
-  
-  <script src="nayuki/fft.js"></script>
-  <script src="nayuki-obj/fft.js"></script>
-  <script src="fft.js/lib/complex.js"></script>
-  <script src="jsfft/lib/complex_array.js"></script>
-  <script src="jsfft/lib/fft.js"></script>
-  <script src="cross/Cross.js"></script>
-  <script src="cross/FFT.js"></script>
-  <script src="kissfft/KissFFT.js"></script>
-  <script src="kissfft/FFT.js"></script>
-  <script src="fftw/FFTW.js"></script>
-  <script src="fftw/FFT.js"></script>
-  <script src="test.js"></script>
+    <script src="nayuki/fft.js"></script>
+    <script src="nayuki-obj/fft.js"></script>
+    <script src="fft.js/lib/complex.js"></script>
+    <script src="jsfft/lib/complex_array.js"></script>
+    <script src="jsfft/lib/fft.js"></script>
+    <script src="cross/Cross.js"></script>
+    <script src="cross/FFT.js"></script>
+    <script src="kissfft/KissFFT.js"></script>
+    <script src="kissfft/FFT.js"></script>
+    <script src="fftw/FFTW.js"></script>
+    <script src="fftw/FFT.js"></script>
+    <script src="test.js"></script>
 
   </head>
 <body>
 
-  <h3>Results</h3>
+  <h3>Forward real-complex FFT speed test</h3>
 
   <p id="test-description"></p>
   
@@ -37,16 +38,16 @@
       <td>Nayuki</td><td id="nayuki-result"></td><td id="nayuki-1"></td><td id="nayuki-2"></td><td id="nayuki-itr"></td>
     </tr><tr> 
       <td>Nayuki (obj)</td><td id="nayukiobj-result"></td><td id="nayukiobj-1"></td><td id="nayukiobj-2"></td><td id="nayukiobj-itr"></td>
+    </tr><tr>
+      <td>KissFFT</td><td id="kissfft-result"></td><td id="kissfft-1"></td><td id="kissfft-2"></td><td id="kissfft-itr"></td>
+    </tr><tr>
+      <td>Cross</td><td id="cross-result"></td><td id="cross-1"></td><td id="cross-2"></td><td id="cross-itr"></td>
+    </tr><tr>
+      <td>FFTW</td><td id="fftw-result"></td><td id="fftw-1"></td><td id="fftw-2"></td><td id="fftw-itr"></td>
     </tr><tr> 
       <td>Nockert</td><td id="nockert-result"></td><td id="nockert-1"></td><td id="nockert-2"></td><td id="nockert-itr"></td>
     </tr><tr>
       <td>Dntj</td><td id="dntj-result"></td><td id="dntj-1"></td><td id="dntj-2"></td><td id="dntj-itr"></td>
-    </tr><tr>
-      <td>Cross</td><td id="cross-result"></td><td id="cross-1"></td><td id="cross-2"></td><td id="cross-itr"></td>
-    </tr><tr>
-      <td>KissFFT</td><td id="kissfft-result"></td><td id="kissfft-1"></td><td id="kissfft-2"></td><td id="kissfft-itr"></td>
-    </tr><tr>
-      <td>FFTW</td><td id="fftw-result"></td><td id="fftw-1"></td><td id="fftw-2"></td><td id="fftw-itr"></td>
     </tr>
   </table>
 
--- a/fft/test.js	Wed Oct 07 13:46:38 2015 +0100
+++ b/fft/test.js	Wed Oct 07 13:59:09 2015 +0100
@@ -1,11 +1,10 @@
 
-/* for a phase vocoder, we probably want 2048-point real-to-complex
- * FFTs (if available) */
+/* Utility functions to generate arbitrary input in various formats */
 
 function inputReals(size) {
     var result = new Float32Array(size);
     for (var i = 0; i < result.length; i++)
-	result[i] = (i % 20) / 10.0 - 1.0;
+	result[i] = (i % 2) / 4.0;
     return result;
 }
 
@@ -19,21 +18,21 @@
 function inputReal64s(size) {
     var result = new Float64Array(size);
     for (var i = 0; i < result.length; i++)
-	result[i] = (i % 20) / 10.0 - 1.0;
+	result[i] = (i % 2) / 4.0;
     return result;
 }
 
 function zeroReal64s(size) {
     var result = new Float64Array(size);
     for (var i = 0; i < result.length; i++)
-	result[i] = (i % 20) / 10.0 - 1.0;
+	result[i] = 0.0;
     return result;
 }
 
 function inputComplexArray(size) {
     var result = new complex_array.ComplexArray(size);
     for (var i = 0; i < size; i++) {
-	result.real[i] = (i % 20) / 10.0 - 1.0;
+	result.real[i] = (i % 2) / 4.0;
 	result.imag[i] = 0.0;
     }
     return result;