Professional Documents
Culture Documents
weighingFactor = 1.0;
break;
break;
break;
break;
break;
break;
break;
break;
break;
break;
if (dir == FFT_FORWARD) {
vData[i] *= weighingFactor;
else {
vData[i] /= weighingFactor;
if (i < j) {
Swap(&this->_vReal[i], &this->_vReal[j]);
if(dir==FFT_REVERSE)
Swap(&this->_vImag[i], &this->_vImag[j]);
while (k <= j) {
j -= k;
k >>= 1;
j += k;
#ifdef __AVR__
uint8_t index = 0;
#endif
double c1 = -1.0;
double c2 = 0.0;
uint16_t l2 = 1;
uint16_t l1 = l2;
l2 <<= 1;
double u1 = 1.0;
double u2 = 0.0;
uint16_t i1 = i + l1;
double t1 = u1 * this->_vReal[i1] - u2 * this->_vImag[i1];
this->_vReal[i] += t1;
this->_vImag[i] += t2;
u1 = z;
#ifdef __AVR__
c2 = pgm_read_float_near(&(_c2[index]));
c1 = pgm_read_float_near(&(_c1[index]));
index++;
#else
#endif
if (dir == FFT_FORWARD) {
c2 = -c2;
if (dir != FFT_FORWARD) {
this->_vReal[i] /= this->_samples;
this->_vImag[i] /= this->_samples;
}
}
// Reverse bits
uint16_t j = 0;
if (i < j) {
Swap(&vReal[i], &vReal[j]);
if(dir==FFT_REVERSE)
Swap(&vImag[i], &vImag[j]);
while (k <= j) {
j -= k;
k >>= 1;
j += k;
#ifdef __AVR__
uint8_t index = 0;
#endif
double c1 = -1.0;
double c2 = 0.0;
uint16_t l2 = 1;
for (uint8_t l = 0; (l < power); l++) {
uint16_t l1 = l2;
l2 <<= 1;
double u1 = 1.0;
double u2 = 0.0;
uint16_t i1 = i + l1;
vReal[i] += t1;
vImag[i] += t2;
u1 = z;
#ifdef __AVR__
c2 = pgm_read_float_near(&(_c2[index]));
c1 = pgm_read_float_near(&(_c1[index]));
index++;
#else
#endif
if (dir == FFT_FORWARD) {
c2 = -c2;
}
if (dir != FFT_FORWARD) {
vReal[i] /= samples;
vImag[i] /= samples;