annotate fft/fft.js/src/real.rb @ 40:223f770b5341 kissfft-double tip

Try a double-precision kissfft
author Chris Cannam
date Wed, 07 Sep 2016 10:40:32 +0100
parents 66f9fd5ac611
children
rev   line source
Chris@25 1 def load(offset = 0, i = nil, stride = nil)
Chris@25 2 "#{real(x, offset, i, stride)}"
Chris@25 3 end
Chris@25 4
Chris@25 5 def creal(x, offset = 0, i = nil, stride = nil)
Chris@25 6 if stride
Chris@25 7 "#{x}[2 * ((#{offset}) + (#{stride}) * (#{i}))]"
Chris@25 8 elsif i
Chris@25 9 "#{x}[2 * ((#{offset}) + (#{i}))]"
Chris@25 10 elsif offset
Chris@25 11 "#{x}[2 * (#{offset})]"
Chris@25 12 else
Chris@25 13 "#{x}[0]"
Chris@25 14 end
Chris@25 15 end
Chris@25 16
Chris@25 17 def cimag(x, offset = 0, i = nil, stride = nil)
Chris@25 18 if stride
Chris@25 19 "#{x}[2 * ((#{offset}) + (#{stride}) * (#{i})) + 1]"
Chris@25 20 elsif i
Chris@25 21 "#{x}[2 * ((#{offset}) + (#{i})) + 1]"
Chris@25 22 elsif offset
Chris@25 23 "#{x}[2 * (#{offset}) + 1]"
Chris@25 24 else
Chris@25 25 "#{x}[1]"
Chris@25 26 end
Chris@25 27 end
Chris@25 28
Chris@25 29 def cload(value, x, offset = 0, i = nil, stride = nil)
Chris@25 30 "var #{value}_r = #{real(x, offset, i, stride)}, #{value}_i = #{imag(x, offset, i, stride)}"
Chris@25 31 end
Chris@25 32
Chris@25 33 def cstore(value, x, offset = 0, i = nil, stride = nil)
Chris@25 34 "#{real(x, offset, i, stride)} = #{value}_r, #{imag(x, offset, i, stride)} = #{value}_i"
Chris@25 35 end
Chris@25 36
Chris@25 37 def cadd(result, a, b)
Chris@25 38 "var #{result}_r = #{a}_r + #{b}_r, #{result}_i = #{a}_i + #{b}_i"
Chris@25 39 end
Chris@25 40
Chris@25 41 def csub(result, a, b)
Chris@25 42 "var #{result}_r = #{a}_r - #{b}_r, #{result}_i = #{a}_i - #{b}_i"
Chris@25 43 end
Chris@25 44
Chris@25 45 def cmul(result, a, b)
Chris@25 46 "var #{result}_r = #{a}_r * #{b}_r - #{a}_i * #{b}_i, #{result}_i = #{a}_r * #{b}_i + #{a}_i * #{b}_r"
Chris@25 47 end