diff fft/fft.js/src/real.rb @ 25:66f9fd5ac611

Bring in some more of the third-party code
author Chris Cannam
date Wed, 07 Oct 2015 13:46:38 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fft/fft.js/src/real.rb	Wed Oct 07 13:46:38 2015 +0100
@@ -0,0 +1,47 @@
+def load(offset = 0, i = nil, stride = nil)
+  "#{real(x, offset, i, stride)}"
+end
+
+def creal(x, offset = 0, i = nil, stride = nil)
+  if stride
+    "#{x}[2 * ((#{offset}) + (#{stride}) * (#{i}))]"
+  elsif i
+    "#{x}[2 * ((#{offset}) + (#{i}))]"
+  elsif offset
+    "#{x}[2 * (#{offset})]"
+  else
+    "#{x}[0]"
+  end
+end
+
+def cimag(x, offset = 0, i = nil, stride = nil)
+  if stride
+    "#{x}[2 * ((#{offset}) + (#{stride}) * (#{i})) + 1]"
+  elsif i
+    "#{x}[2 * ((#{offset}) + (#{i})) + 1]"
+  elsif offset
+    "#{x}[2 * (#{offset}) + 1]"
+  else
+    "#{x}[1]"
+  end
+end
+
+def cload(value, x, offset = 0, i = nil, stride = nil)
+  "var #{value}_r = #{real(x, offset, i, stride)}, #{value}_i = #{imag(x, offset, i, stride)}"
+end
+
+def cstore(value, x, offset = 0, i = nil, stride = nil)
+  "#{real(x, offset, i, stride)} = #{value}_r, #{imag(x, offset, i, stride)} = #{value}_i"
+end
+
+def cadd(result, a, b)
+  "var #{result}_r = #{a}_r + #{b}_r, #{result}_i = #{a}_i + #{b}_i"
+end
+
+def csub(result, a, b)
+  "var #{result}_r = #{a}_r - #{b}_r, #{result}_i = #{a}_i - #{b}_i"
+end
+
+def cmul(result, a, b)
+  "var #{result}_r = #{a}_r * #{b}_r - #{a}_i * #{b}_i, #{result}_i = #{a}_r * #{b}_i + #{a}_i * #{b}_r"
+end