private void uncenter2(float[][] f) { if (!_center2) return; int nfft2 = _nfft2; boolean even2 = nfft2%2==0; if (even2) { // nfft even // 4 5 6 7 0 1 2 3 | 8 // 0 1 2 3 4 5 6 7 | 8 cswap(nfft2/2,0,nfft2/2,f); } else { // nfft odd // 4 5 6 0 1 2 3 // 4 5 6 3 0 1 2 // 0 1 2 3 4 5 6 crotateRight((nfft2+1)/2,(nfft2-1)/2,f); cswap((nfft2-1)/2,0,(nfft2+1)/2,f); } } private static void creflect(int n, int i, float[][] f) {
private void uncenter3(float[][][] f) { if (!_center3) return; int nfft3 = _nfft3; boolean even3 = nfft3%2==0; if (even3) { // nfft even // 4 5 6 7 0 1 2 3 | 8 // 0 1 2 3 4 5 6 7 | 8 cswap(nfft3/2,0,nfft3/2,f); } else { // nfft odd // 4 5 6 0 1 2 3 // 4 5 6 3 0 1 2 // 0 1 2 3 4 5 6 crotateRight((nfft3+1)/2,(nfft3-1)/2,f); cswap((nfft3-1)/2,0,(nfft3+1)/2,f); } } private static void creflect(int n, int i, float[][][] f) {
private void uncenter1(float[] f) { if (!_center1) return; int nfft1 = _nfft1; boolean even1 = nfft1%2==0; if (_complex) { if (even1) { // complex, nfft = 8 // 4 5 6 7 0 1 2 3 | 8 // 0 1 2 3 4 5 6 7 | 8 cswap(nfft1/2,0,nfft1/2,f); } else { // complex, nfft = 7 // 4 5 6 0 1 2 3 // 4 5 6 3 0 1 2 // 0 1 2 3 4 5 6 crotateRight((nfft1+1)/2,(nfft1-1)/2,f); cswap((nfft1-1)/2,0,(nfft1+1)/2,f); } } else { // real, nfft = 8 // 4 3 2 1 0 1 2 3 4 // 0 1 2 3 4 1 2 3 4 cshift(nfft1/2+1,nfft1/2,0,f); } } private static void creflect(int n, int i, float[] f) {
private void center3(float[][][] f) { if (!_center3) return; int nk3 = _sk3.getCount(); int nfft3 = _nfft3; boolean even3 = nfft3%2==0; if (even3) { // nfft even // 0 1 2 3 4 5 6 7 | 8 // 4 5 6 7 0 1 2 3 | 4 cswap(nfft3/2,0,nfft3/2,f); ccopy(f[0],f[nk3-1]); } else { // nfft odd // 0 1 2 3 4 5 6 // 4 5 6 3 0 1 2 // 4 5 6 0 1 2 3 cswap((nfft3-1)/2,0,(nfft3+1)/2,f); crotateLeft((nfft3+1)/2,(nfft3-1)/2,f); } } private void uncenter3(float[][][] f) {
private void center2(float[][] f) { if (!_center2) return; int nk2 = _sk2.getCount(); int nfft2 = _nfft2; boolean even2 = nfft2%2==0; if (even2) { // nfft even // 0 1 2 3 4 5 6 7 | 8 // 4 5 6 7 0 1 2 3 | 4 cswap(nfft2/2,0,nfft2/2,f); ccopy(f[0],f[nk2-1]); } else { // nfft odd // 0 1 2 3 4 5 6 // 4 5 6 3 0 1 2 // 4 5 6 0 1 2 3 cswap((nfft2-1)/2,0,(nfft2+1)/2,f); crotateLeft((nfft2+1)/2,(nfft2-1)/2,f); } } private void uncenter2(float[][] f) {
private void center1(float[] f) { if (!_center1) return; int nk1 = _sk1.getCount(); int nfft1 = _nfft1; boolean even1 = nfft1%2==0; if (_complex) { if (even1) { // complex, nfft = 8 // 0 1 2 3 4 5 6 7 | 8 // 4 5 6 7 0 1 2 3 | 4 cswap(nfft1/2,0,nfft1/2,f); f[2*(nk1-1) ] = f[0]; f[2*(nk1-1)+1] = f[1]; } else { // complex, nfft = 7 // 0 1 2 3 4 5 6 // 4 5 6 3 0 1 2 // 4 5 6 0 1 2 3 cswap((nfft1-1)/2,0,(nfft1+1)/2,f); crotateLeft((nfft1+1)/2,(nfft1-1)/2,f); } } else { // real, nfft = 8 // 0 1 2 3 4 // 0 1 2 3 0 1 2 3 4 cshift(nfft1/2+1,0,nfft1/2,f); } } private void uncenter(float[] f) {