42 # define SAMPPROD int64_t 43 #define SAMP_MAX INT32_MAX 44 #define SAMP_MIN INT32_MIN 47 # define SAMPPROD int32_t 48 #define SAMP_MAX INT16_MAX 49 #define SAMP_MIN INT16_MIN 52 #if defined(CHECK_OVERFLOW) 53 # define CHECK_OVERFLOW_OP(a,op,b) \ 54 if ( (SAMPPROD)(a) op (SAMPPROD)(b) > SAMP_MAX || (SAMPPROD)(a) op (SAMPPROD)(b) < SAMP_MIN ) { \ 55 fprintf(stderr,"WARNING:overflow @ " __FILE__ "(%d): (%d " #op" %d) = %ld\n",__LINE__,(a),(b),(SAMPPROD)(a) op (SAMPPROD)(b) ); } 59 # define smul(a,b) ( (SAMPPROD)(a)*(b) ) 60 # define sround( x ) (kiss_fft_scalar)( ( (x) + (1<<(FRACBITS-1)) ) >> FRACBITS ) 62 # define S_MUL(a,b) sround( smul(a,b) ) 64 # define C_MUL(m,a,b) \ 65 do{ (m).r = sround( smul((a).r,(b).r) - smul((a).i,(b).i) ); \ 66 (m).i = sround( smul((a).r,(b).i) + smul((a).i,(b).r) ); }while(0) 68 # define DIVSCALAR(x,k) \ 69 (x) = sround( smul( x, SAMP_MAX/k ) ) 71 # define C_FIXDIV(c,div) \ 72 do { DIVSCALAR( (c).r , div); \ 73 DIVSCALAR( (c).i , div); }while (0) 75 # define C_MULBYSCALAR( c, s ) \ 76 do{ (c).r = sround( smul( (c).r , s ) ) ;\ 77 (c).i = sround( smul( (c).i , s ) ) ; }while(0) 81 # define S_MUL(a,b) ( (a)*(b) ) 82 #define C_MUL(m,a,b) \ 83 do{ (m).r = (a).r*(b).r - (a).i*(b).i;\ 84 (m).i = (a).r*(b).i + (a).i*(b).r; }while(0) 85 # define C_FIXDIV(c,div) 86 # define C_MULBYSCALAR( c, s ) \ 88 (c).i *= (s); }while(0) 91 #ifndef CHECK_OVERFLOW_OP 92 # define CHECK_OVERFLOW_OP(a,op,b) 95 #define C_ADD( res, a,b)\ 97 CHECK_OVERFLOW_OP((a).r,+,(b).r)\ 98 CHECK_OVERFLOW_OP((a).i,+,(b).i)\ 99 (res).r=(a).r+(b).r; (res).i=(a).i+(b).i; \ 101 #define C_SUB( res, a,b)\ 103 CHECK_OVERFLOW_OP((a).r,-,(b).r)\ 104 CHECK_OVERFLOW_OP((a).i,-,(b).i)\ 105 (res).r=(a).r-(b).r; (res).i=(a).i-(b).i; \ 107 #define C_ADDTO( res , a)\ 109 CHECK_OVERFLOW_OP((res).r,+,(a).r)\ 110 CHECK_OVERFLOW_OP((res).i,+,(a).i)\ 111 (res).r += (a).r; (res).i += (a).i;\ 114 #define C_SUBFROM( res , a)\ 116 CHECK_OVERFLOW_OP((res).r,-,(a).r)\ 117 CHECK_OVERFLOW_OP((res).i,-,(a).i)\ 118 (res).r -= (a).r; (res).i -= (a).i; \ 123 # define KISS_FFT_COS(phase) floor(.5+SAMP_MAX * cos (phase)) 124 # define KISS_FFT_SIN(phase) floor(.5+SAMP_MAX * sin (phase)) 125 # define HALF_OF(x) ((x)>>1) 126 #elif defined(USE_SIMD) 127 # define KISS_FFT_COS(phase) _mm_set1_ps( cos(phase) ) 128 # define KISS_FFT_SIN(phase) _mm_set1_ps( sin(phase) ) 129 # define HALF_OF(x) ((x)*_mm_set1_ps(.5)) 131 # define KISS_FFT_COS(phase) (kiss_fft_scalar) cos(phase) 132 # define KISS_FFT_SIN(phase) (kiss_fft_scalar) sin(phase) 133 # define HALF_OF(x) ((x)*.5) 136 #define kf_cexp(x,phase) \ 138 (x)->r = KISS_FFT_COS(phase);\ 139 (x)->i = KISS_FFT_SIN(phase);\ 145 fprintf(stderr,"%g + %gi\n",(double)((c)->r),(double)((c)->i) ) 148 #ifdef KISS_FFT_USE_ALLOCA 154 #define KISS_FFT_TMP_ALLOC(nbytes) alloca(nbytes) 155 #define KISS_FFT_TMP_FREE(ptr) 157 #define KISS_FFT_TMP_ALLOC(nbytes) KISS_FFT_MALLOC(nbytes) 158 #define KISS_FFT_TMP_FREE(ptr) KISS_FFT_FREE(ptr) #define MAXFACTORS
Definition: _kiss_fft_guts.h:16
int inverse
Definition: _kiss_fft_guts.h:24
Definition: _kiss_fft_guts.h:22
int factors[2 *MAXFACTORS]
Definition: _kiss_fft_guts.h:25
Definition: kiss_fft.h:67
kiss_fft_cpx twiddles[1]
Definition: _kiss_fft_guts.h:26
int nfft
Definition: _kiss_fft_guts.h:23