6321N/A * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. 829N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 829N/A * This code is free software; you can redistribute it and/or modify it 829N/A * under the terms of the GNU General Public License version 2 only, as 2362N/A * published by the Free Software Foundation. Oracle designates this 829N/A * particular file as subject to the "Classpath" exception as provided 2362N/A * by Oracle in the LICENSE file that accompanied this code. 829N/A * This code is distributed in the hope that it will be useful, but WITHOUT 829N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 829N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 829N/A * version 2 for more details (a copy is included in the LICENSE file that 829N/A * accompanied this code). 829N/A * You should have received a copy of the GNU General Public License version 829N/A * 2 along with this work; if not, write to the Free Software Foundation, 829N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2362N/A * or visit www.oracle.com if you need additional information or have any 829N/A * Fast Fourier Transformer. 829N/A * @author Karl Helgason 829N/A // Sign = -1 is FFT, 1 is IFFT (inverse FFT) 829N/A // Data = Interlaced double array to be transformed. 829N/A // The order is: real (sin), complex (cos) 829N/A // Framesize must be power of 2 829N/A // Pre-process Bit-Reversal 829N/A // PRECOMPUTATION of wwr1, wwi1 for factor 4 Decomposition (3 * complex 829N/A // operators and 8 +/- complex operators) 829N/A // Perform Factor-4 Decomposition with 3 * complex operators and 8 +/- 829N/A // Factor-4 Decomposition 829N/A // Goto Factor-4 Final Decomposition 829N/A // calcF4E(data, i, nstep, -1, w); 829N/A // Factor-4 Decomposition not possible 829N/A // double wwr1 = wr * wr1 - wi * wi1; // these numbers can be 829N/A // double wwi1 = wr * wi1 + wi * wr1; 829N/A // Perform Factor-4 Decomposition with 3 * complex operators and 8 +/- 829N/A // Factor-4 Decomposition 829N/A // Goto Factor-4 Final Decomposition 829N/A // calcF4E(data, i, nstep, 1, w); 829N/A // Factor-4 Decomposition not possible 829N/A // double wwr1 = wr * wr1 - wi * wi1; // these numbers can be 829N/A // double wwi1 = wr * wi1 + wi * wr1; 829N/A // Perform Factor-4 Decomposition with 3 * complex operators and 8 +/- 829N/A // Factor-4 Decomposition 829N/A // Factor-4 Decomposition not possible 829N/A // double wwr1 = wr * wr1 - wi * wi1; // these numbers can be 829N/A // double wwi1 = wr * wi1 + wi * wr1; 829N/A // Perform Factor-4 Decomposition with 3 * complex operators and 8 +/- 829N/A // Factor-4 Decomposition 829N/A // Factor-4 Decomposition not possible 829N/A // double wwr1 = wr * wr1 - wi * wi1; // these numbers can be 829N/A // double wwi1 = wr * wi1 + wi * wr1; 829N/A // Performing Bit-Reversal, even v.s. even, O(2N) 829N/A // COMPLEX: SWAP(data[n], data[m]) 829N/A // COMPLEX: SWAP(data[n], data[m]) 829N/A // Performing Bit-Reversal, odd v.s. even, O(N) 829N/A // COMPLEX: SWAP(data[n], data[m])