mirror of
				https://github.com/mborgerding/kissfft.git
				synced 2025-11-04 01:05:19 -05:00 
			
		
		
		
	about to start working on real inverse fft optimzation
This commit is contained in:
		
							
								
								
									
										15
									
								
								kiss_fftr.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								kiss_fftr.c
									
									
									
									
									
								
							@ -47,7 +47,7 @@ void * kiss_fftr_alloc(int nfft,int inverse_fft)
 | 
				
			|||||||
    kf_init_state (st->substate, nfft, inverse_fft);
 | 
					    kf_init_state (st->substate, nfft, inverse_fft);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i=0;i<nfft;++i) {
 | 
					    for (i=0;i<nfft;++i) {
 | 
				
			||||||
        double phase = -3.14159265358979323846264338327 * i / nfft;
 | 
					        double phase = -3.14159265358979323846264338327 * ( (double)i / nfft + .5);
 | 
				
			||||||
        st->super_twiddles[i] = kf_cexp( phase );
 | 
					        st->super_twiddles[i] = kf_cexp( phase );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return st;
 | 
					    return st;
 | 
				
			||||||
@ -78,25 +78,20 @@ void kiss_fftr(const void * cfg,const kiss_fft_scalar *fin,kiss_fft_cpx *fout)
 | 
				
			|||||||
    fout[0].i = 0;
 | 
					    fout[0].i = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (k=1;k<N;++k) {
 | 
					    for (k=1;k<N;++k) {
 | 
				
			||||||
        kiss_fft_cpx fpnk,fpk,f1k,f2k,scr[2];
 | 
					        kiss_fft_cpx fpnk,fpk,f1k;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        fpk = st->tmpbuf[k]; 
 | 
					        fpk = st->tmpbuf[k]; 
 | 
				
			||||||
 | 
					 | 
				
			||||||
        fpnk.r =  st->tmpbuf[N-k].r;
 | 
					        fpnk.r =  st->tmpbuf[N-k].r;
 | 
				
			||||||
        fpnk.i = -st->tmpbuf[N-k].i;
 | 
					        fpnk.i = -st->tmpbuf[N-k].i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        C_ADD( f1k, fpk , fpnk );
 | 
					        C_ADD( f1k, fpk , fpnk );
 | 
				
			||||||
        C_SUBFROM( fpk , fpnk );
 | 
					        C_SUBFROM( fpk , fpnk );
 | 
				
			||||||
 | 
					        C_MUL( fout[k], fpk , st->super_twiddles[k] );
 | 
				
			||||||
        f2k.r = fpk.i;
 | 
					        C_ADDTO(fout[k],f1k);
 | 
				
			||||||
        f2k.i = -fpk.r;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        C_MUL( scr[1], f2k , st->super_twiddles[k] );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        C_ADD(fout[k],f1k,scr[1]);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        fout[k].r /= 2;
 | 
					        fout[k].r /= 2;
 | 
				
			||||||
        fout[k].i /= 2;
 | 
					        fout[k].i /= 2;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user