Chris@25: def real(x, offset = 0, i = nil, stride = nil) Chris@25: if stride Chris@25: "#{x}[2 * ((#{offset}) + (#{stride}) * (#{i}))]" Chris@25: elsif i Chris@25: "#{x}[2 * ((#{offset}) + (#{i}))]" Chris@25: elsif offset Chris@25: "#{x}[2 * (#{offset})]" Chris@25: else Chris@25: "#{x}[0]" Chris@25: end Chris@25: end Chris@25: Chris@25: def imag(x, offset = 0, i = nil, stride = nil) Chris@25: if stride Chris@25: "#{x}[2 * ((#{offset}) + (#{stride}) * (#{i})) + 1]" Chris@25: elsif i Chris@25: "#{x}[2 * ((#{offset}) + (#{i})) + 1]" Chris@25: elsif offset Chris@25: "#{x}[2 * (#{offset}) + 1]" Chris@25: else Chris@25: "#{x}[1]" Chris@25: end Chris@25: end Chris@25: Chris@25: def load(value, x, offset = 0, i = nil, stride = nil) Chris@25: "var #{value}_r = #{real(x, offset, i, stride)}, #{value}_i = #{imag(x, offset, i, stride)}" Chris@25: end Chris@25: Chris@25: def store(value, x, offset = 0, i = nil, stride = nil) Chris@25: "#{real(x, offset, i, stride)} = #{value}_r, #{imag(x, offset, i, stride)} = #{value}_i" Chris@25: end Chris@25: Chris@25: def cadd(result, a, b) Chris@25: "var #{result}_r = #{a}_r + #{b}_r, #{result}_i = #{a}_i + #{b}_i" Chris@25: end Chris@25: Chris@25: def csub(result, a, b) Chris@25: "var #{result}_r = #{a}_r - #{b}_r, #{result}_i = #{a}_i - #{b}_i" Chris@25: end Chris@25: Chris@25: def cmul(result, a, b) Chris@25: "var #{result}_r = #{a}_r * #{b}_r - #{a}_i * #{b}_i, #{result}_i = #{a}_r * #{b}_i + #{a}_i * #{b}_r" Chris@25: end