Chris@6: "use strict"; Chris@5: Chris@5: document.write("
start
"); Chris@5: Chris@6: var fftCross = Module.cwrap( Chris@5: 'fftCross', 'void', ['number', 'number', 'number', 'number', 'number', 'number' ] Chris@5: ); Chris@5: Chris@6: function FFTCross(size) { Chris@6: this.size = size; Chris@6: this.n = size * 8; Chris@6: this.ptr = Module._malloc(this.n * 4); Chris@6: this.ri = new Uint8Array(Module.HEAPU8.buffer, this.ptr, this.n); Chris@6: this.ii = new Uint8Array(Module.HEAPU8.buffer, this.ptr + this.n, this.n); Chris@6: this.transform = function(real, imag, inverse) { Chris@6: var ptr = this.ptr; Chris@6: var n = this.n; Chris@6: this.ri.set(new Uint8Array(real.buffer)); Chris@6: this.ii.set(new Uint8Array(imag.buffer)); Chris@6: fftCross(this.size, inverse, Chris@6: ptr, ptr + n, ptr + n * 2, ptr + n * 3); Chris@6: var ro = new Float64Array(Module.HEAPU8.buffer, Chris@6: ptr + n * 2, this.size); Chris@6: var io = new Float64Array(Module.HEAPU8.buffer, Chris@6: ptr + n * 2, this.size); Chris@6: return { real: ro, imag: io }; Chris@6: } Chris@6: this.discard = function() { Chris@6: Module._free(this.ptr); Chris@6: } Chris@6: } Chris@6: Chris@6: var f = new FFTCross(8); Chris@6: var real = new Float64Array([1,1,1,1,1,1,1,1]); Chris@6: var imag = new Float64Array([0,0,0,0,0,0,0,0]); Chris@6: var out = f.transform(real, imag, false); Chris@5: document.write("output: "); Chris@5: for (var i = 0; i < 8; ++i) { Chris@6: document.write(out.real[i] + "," + out.imag[i] + " "); Chris@5: } Chris@5: Chris@5: Chris@5: document.write("end
");