Code for measuring the signal with a specified length and sampling rate, and saving it on a SD card.

Dependencies:   EALib I2S mbed

Committer:
msamadani
Date:
Thu Oct 05 17:44:39 2017 +0000
Revision:
2:8c5b6522139f
Parent:
1:a514e4de034d
A version of the code that initializes the SD RAM, activates the codec, measures the signal and saves the signal onto the SD Card.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
msamadani 1:a514e4de034d 1 //
msamadani 1:a514e4de034d 2 // Academic License - for use in teaching, academic research, and meeting
msamadani 1:a514e4de034d 3 // course requirements at degree granting institutions only. Not for
msamadani 1:a514e4de034d 4 // government, commercial, or other organizational use.
msamadani 1:a514e4de034d 5 // File: ifft.cpp
msamadani 1:a514e4de034d 6 //
msamadani 1:a514e4de034d 7 // MATLAB Coder version : 3.3
msamadani 1:a514e4de034d 8 // C/C++ source code generated on : 13-Jul-2017 15:47:47
msamadani 1:a514e4de034d 9 //
msamadani 1:a514e4de034d 10
msamadani 1:a514e4de034d 11 // Include Files
msamadani 1:a514e4de034d 12 #include "envSignal.h"
msamadani 1:a514e4de034d 13 #include "ifft.h"
msamadani 1:a514e4de034d 14 #include "envSignal_emxutil.h"
msamadani 1:a514e4de034d 15
msamadani 1:a514e4de034d 16 // Function Definitions
msamadani 1:a514e4de034d 17
msamadani 1:a514e4de034d 18 //
msamadani 1:a514e4de034d 19 // Arguments : const emxArray_creal32_T *x
msamadani 1:a514e4de034d 20 // int n1_unsigned
msamadani 1:a514e4de034d 21 // const emxArray_real32_T *costab
msamadani 1:a514e4de034d 22 // const emxArray_real32_T *sintab
msamadani 1:a514e4de034d 23 // emxArray_creal32_T *y
msamadani 1:a514e4de034d 24 // Return Type : void
msamadani 1:a514e4de034d 25 //
msamadani 1:a514e4de034d 26 void b_r2br_r2dit_trig(const emxArray_creal32_T *x, int n1_unsigned, const
msamadani 1:a514e4de034d 27 emxArray_real32_T *costab, const emxArray_real32_T *sintab, emxArray_creal32_T
msamadani 1:a514e4de034d 28 *y)
msamadani 1:a514e4de034d 29 {
msamadani 1:a514e4de034d 30 int j;
msamadani 1:a514e4de034d 31 int nRowsD2;
msamadani 1:a514e4de034d 32 int nRowsD4;
msamadani 1:a514e4de034d 33 int iDelta2;
msamadani 1:a514e4de034d 34 int iy;
msamadani 1:a514e4de034d 35 int ix;
msamadani 1:a514e4de034d 36 int ju;
msamadani 1:a514e4de034d 37 int i;
msamadani 1:a514e4de034d 38 boolean_T tst;
msamadani 1:a514e4de034d 39 float temp_re;
msamadani 1:a514e4de034d 40 float temp_im;
msamadani 1:a514e4de034d 41 float r;
msamadani 1:a514e4de034d 42 float twid_im;
msamadani 1:a514e4de034d 43 int ihi;
msamadani 1:a514e4de034d 44 j = x->size[0];
msamadani 1:a514e4de034d 45 if (!(j < n1_unsigned)) {
msamadani 1:a514e4de034d 46 j = n1_unsigned;
msamadani 1:a514e4de034d 47 }
msamadani 1:a514e4de034d 48
msamadani 1:a514e4de034d 49 nRowsD2 = n1_unsigned / 2;
msamadani 1:a514e4de034d 50 nRowsD4 = nRowsD2 / 2;
msamadani 1:a514e4de034d 51 iDelta2 = y->size[0];
msamadani 1:a514e4de034d 52 y->size[0] = n1_unsigned;
msamadani 1:a514e4de034d 53 emxEnsureCapacity((emxArray__common *)y, iDelta2, sizeof(creal32_T));
msamadani 1:a514e4de034d 54 if (n1_unsigned > x->size[0]) {
msamadani 1:a514e4de034d 55 iy = y->size[0];
msamadani 1:a514e4de034d 56 iDelta2 = y->size[0];
msamadani 1:a514e4de034d 57 y->size[0] = iy;
msamadani 1:a514e4de034d 58 emxEnsureCapacity((emxArray__common *)y, iDelta2, sizeof(creal32_T));
msamadani 1:a514e4de034d 59 for (iDelta2 = 0; iDelta2 < iy; iDelta2++) {
msamadani 1:a514e4de034d 60 y->data[iDelta2].re = 0.0F;
msamadani 1:a514e4de034d 61 y->data[iDelta2].im = 0.0F;
msamadani 1:a514e4de034d 62 }
msamadani 1:a514e4de034d 63 }
msamadani 1:a514e4de034d 64
msamadani 1:a514e4de034d 65 ix = 0;
msamadani 1:a514e4de034d 66 ju = 0;
msamadani 1:a514e4de034d 67 iy = 0;
msamadani 1:a514e4de034d 68 for (i = 1; i < j; i++) {
msamadani 1:a514e4de034d 69 y->data[iy] = x->data[ix];
msamadani 1:a514e4de034d 70 iDelta2 = n1_unsigned;
msamadani 1:a514e4de034d 71 tst = true;
msamadani 1:a514e4de034d 72 while (tst) {
msamadani 1:a514e4de034d 73 iDelta2 >>= 1;
msamadani 1:a514e4de034d 74 ju ^= iDelta2;
msamadani 1:a514e4de034d 75 tst = ((ju & iDelta2) == 0);
msamadani 1:a514e4de034d 76 }
msamadani 1:a514e4de034d 77
msamadani 1:a514e4de034d 78 iy = ju;
msamadani 1:a514e4de034d 79 ix++;
msamadani 1:a514e4de034d 80 }
msamadani 1:a514e4de034d 81
msamadani 1:a514e4de034d 82 y->data[iy] = x->data[ix];
msamadani 1:a514e4de034d 83 if (n1_unsigned > 1) {
msamadani 1:a514e4de034d 84 for (i = 0; i <= n1_unsigned - 2; i += 2) {
msamadani 1:a514e4de034d 85 temp_re = y->data[i + 1].re;
msamadani 1:a514e4de034d 86 temp_im = y->data[i + 1].im;
msamadani 1:a514e4de034d 87 y->data[i + 1].re = y->data[i].re - y->data[i + 1].re;
msamadani 1:a514e4de034d 88 y->data[i + 1].im = y->data[i].im - y->data[i + 1].im;
msamadani 1:a514e4de034d 89 y->data[i].re += temp_re;
msamadani 1:a514e4de034d 90 y->data[i].im += temp_im;
msamadani 1:a514e4de034d 91 }
msamadani 1:a514e4de034d 92 }
msamadani 1:a514e4de034d 93
msamadani 1:a514e4de034d 94 iy = 2;
msamadani 1:a514e4de034d 95 iDelta2 = 4;
msamadani 1:a514e4de034d 96 ix = 1 + ((nRowsD4 - 1) << 2);
msamadani 1:a514e4de034d 97 while (nRowsD4 > 0) {
msamadani 1:a514e4de034d 98 for (i = 0; i < ix; i += iDelta2) {
msamadani 1:a514e4de034d 99 temp_re = y->data[i + iy].re;
msamadani 1:a514e4de034d 100 temp_im = y->data[i + iy].im;
msamadani 1:a514e4de034d 101 y->data[i + iy].re = y->data[i].re - temp_re;
msamadani 1:a514e4de034d 102 y->data[i + iy].im = y->data[i].im - temp_im;
msamadani 1:a514e4de034d 103 y->data[i].re += temp_re;
msamadani 1:a514e4de034d 104 y->data[i].im += temp_im;
msamadani 1:a514e4de034d 105 }
msamadani 1:a514e4de034d 106
msamadani 1:a514e4de034d 107 ju = 1;
msamadani 1:a514e4de034d 108 for (j = nRowsD4; j < nRowsD2; j += nRowsD4) {
msamadani 1:a514e4de034d 109 r = costab->data[j];
msamadani 1:a514e4de034d 110 twid_im = sintab->data[j];
msamadani 1:a514e4de034d 111 i = ju;
msamadani 1:a514e4de034d 112 ihi = ju + ix;
msamadani 1:a514e4de034d 113 while (i < ihi) {
msamadani 1:a514e4de034d 114 temp_re = r * y->data[i + iy].re - twid_im * y->data[i + iy].im;
msamadani 1:a514e4de034d 115 temp_im = r * y->data[i + iy].im + twid_im * y->data[i + iy].re;
msamadani 1:a514e4de034d 116 y->data[i + iy].re = y->data[i].re - temp_re;
msamadani 1:a514e4de034d 117 y->data[i + iy].im = y->data[i].im - temp_im;
msamadani 1:a514e4de034d 118 y->data[i].re += temp_re;
msamadani 1:a514e4de034d 119 y->data[i].im += temp_im;
msamadani 1:a514e4de034d 120 i += iDelta2;
msamadani 1:a514e4de034d 121 }
msamadani 1:a514e4de034d 122
msamadani 1:a514e4de034d 123 ju++;
msamadani 1:a514e4de034d 124 }
msamadani 1:a514e4de034d 125
msamadani 1:a514e4de034d 126 nRowsD4 /= 2;
msamadani 1:a514e4de034d 127 iy = iDelta2;
msamadani 1:a514e4de034d 128 iDelta2 += iDelta2;
msamadani 1:a514e4de034d 129 ix -= iy;
msamadani 1:a514e4de034d 130 }
msamadani 1:a514e4de034d 131
msamadani 1:a514e4de034d 132 if (y->size[0] > 1) {
msamadani 1:a514e4de034d 133 r = 1.0F / (float)y->size[0];
msamadani 1:a514e4de034d 134 iDelta2 = y->size[0];
msamadani 1:a514e4de034d 135 emxEnsureCapacity((emxArray__common *)y, iDelta2, sizeof(creal32_T));
msamadani 1:a514e4de034d 136 iy = y->size[0];
msamadani 1:a514e4de034d 137 for (iDelta2 = 0; iDelta2 < iy; iDelta2++) {
msamadani 1:a514e4de034d 138 y->data[iDelta2].re *= r;
msamadani 1:a514e4de034d 139 y->data[iDelta2].im *= r;
msamadani 1:a514e4de034d 140 }
msamadani 1:a514e4de034d 141 }
msamadani 1:a514e4de034d 142 }
msamadani 1:a514e4de034d 143
msamadani 1:a514e4de034d 144 //
msamadani 1:a514e4de034d 145 // Arguments : int n1
msamadani 1:a514e4de034d 146 // boolean_T useRadix2
msamadani 1:a514e4de034d 147 // int *N2blue
msamadani 1:a514e4de034d 148 // int *nRows
msamadani 1:a514e4de034d 149 // Return Type : void
msamadani 1:a514e4de034d 150 //
msamadani 1:a514e4de034d 151 void get_algo_sizes(int n1, boolean_T useRadix2, int *N2blue, int *nRows)
msamadani 1:a514e4de034d 152 {
msamadani 1:a514e4de034d 153 int nn1m1;
msamadani 1:a514e4de034d 154 int pmax;
msamadani 1:a514e4de034d 155 int pmin;
msamadani 1:a514e4de034d 156 boolean_T exitg1;
msamadani 1:a514e4de034d 157 int p;
msamadani 1:a514e4de034d 158 int pow2p;
msamadani 1:a514e4de034d 159 *N2blue = 1;
msamadani 1:a514e4de034d 160 if (useRadix2) {
msamadani 1:a514e4de034d 161 *nRows = n1;
msamadani 1:a514e4de034d 162 } else {
msamadani 1:a514e4de034d 163 if (n1 > 0) {
msamadani 1:a514e4de034d 164 nn1m1 = (n1 + n1) - 1;
msamadani 1:a514e4de034d 165 pmax = 31;
msamadani 1:a514e4de034d 166 if (nn1m1 > MIN_int32_T) {
msamadani 1:a514e4de034d 167 if (nn1m1 < 0) {
msamadani 1:a514e4de034d 168 nn1m1 = -nn1m1;
msamadani 1:a514e4de034d 169 }
msamadani 1:a514e4de034d 170
msamadani 1:a514e4de034d 171 if (nn1m1 <= 1) {
msamadani 1:a514e4de034d 172 pmax = 0;
msamadani 1:a514e4de034d 173 } else {
msamadani 1:a514e4de034d 174 pmin = 0;
msamadani 1:a514e4de034d 175 exitg1 = false;
msamadani 1:a514e4de034d 176 while ((!exitg1) && (pmax - pmin > 1)) {
msamadani 1:a514e4de034d 177 p = (pmin + pmax) >> 1;
msamadani 1:a514e4de034d 178 pow2p = 1 << p;
msamadani 1:a514e4de034d 179 if (pow2p == nn1m1) {
msamadani 1:a514e4de034d 180 pmax = p;
msamadani 1:a514e4de034d 181 exitg1 = true;
msamadani 1:a514e4de034d 182 } else if (pow2p > nn1m1) {
msamadani 1:a514e4de034d 183 pmax = p;
msamadani 1:a514e4de034d 184 } else {
msamadani 1:a514e4de034d 185 pmin = p;
msamadani 1:a514e4de034d 186 }
msamadani 1:a514e4de034d 187 }
msamadani 1:a514e4de034d 188 }
msamadani 1:a514e4de034d 189 }
msamadani 1:a514e4de034d 190
msamadani 1:a514e4de034d 191 *N2blue = 1 << pmax;
msamadani 1:a514e4de034d 192 }
msamadani 1:a514e4de034d 193
msamadani 1:a514e4de034d 194 *nRows = *N2blue;
msamadani 1:a514e4de034d 195 }
msamadani 1:a514e4de034d 196 }
msamadani 1:a514e4de034d 197
msamadani 1:a514e4de034d 198 //
msamadani 1:a514e4de034d 199 // Arguments : const emxArray_creal32_T *x
msamadani 1:a514e4de034d 200 // emxArray_creal32_T *y
msamadani 1:a514e4de034d 201 // Return Type : void
msamadani 1:a514e4de034d 202 //
msamadani 1:a514e4de034d 203 void ifft(const emxArray_creal32_T *x, emxArray_creal32_T *y)
msamadani 1:a514e4de034d 204 {
msamadani 1:a514e4de034d 205 int n1;
msamadani 1:a514e4de034d 206 emxArray_real32_T *costab1q;
msamadani 1:a514e4de034d 207 int nInt2;
msamadani 1:a514e4de034d 208 boolean_T useRadix2;
msamadani 1:a514e4de034d 209 int N2blue;
msamadani 1:a514e4de034d 210 int nd2;
msamadani 1:a514e4de034d 211 float e;
msamadani 1:a514e4de034d 212 int nRowsD4;
msamadani 1:a514e4de034d 213 int k;
msamadani 1:a514e4de034d 214 emxArray_real32_T *costab;
msamadani 1:a514e4de034d 215 emxArray_real32_T *sintab;
msamadani 1:a514e4de034d 216 emxArray_real32_T *sintabinv;
msamadani 1:a514e4de034d 217 emxArray_creal32_T *wwc;
msamadani 1:a514e4de034d 218 int nInt2m1;
msamadani 1:a514e4de034d 219 int b_y;
msamadani 1:a514e4de034d 220 float denom_re;
msamadani 1:a514e4de034d 221 emxArray_creal32_T *fy;
msamadani 1:a514e4de034d 222 float wwc_im;
msamadani 1:a514e4de034d 223 emxArray_creal32_T *fv;
msamadani 1:a514e4de034d 224 float wwc_re;
msamadani 1:a514e4de034d 225 float fv_im;
msamadani 1:a514e4de034d 226 float b_wwc_im;
msamadani 1:a514e4de034d 227 float fv_re;
msamadani 1:a514e4de034d 228 float b_fv_im;
msamadani 1:a514e4de034d 229 float b_fv_re;
msamadani 1:a514e4de034d 230 n1 = x->size[0];
msamadani 1:a514e4de034d 231 if (x->size[0] == 0) {
msamadani 1:a514e4de034d 232 nInt2 = y->size[0];
msamadani 1:a514e4de034d 233 y->size[0] = 0;
msamadani 1:a514e4de034d 234 emxEnsureCapacity((emxArray__common *)y, nInt2, sizeof(creal32_T));
msamadani 1:a514e4de034d 235 } else {
msamadani 1:a514e4de034d 236 emxInit_real32_T(&costab1q, 2);
msamadani 1:a514e4de034d 237 useRadix2 = ((x->size[0] & (x->size[0] - 1)) == 0);
msamadani 1:a514e4de034d 238 get_algo_sizes(x->size[0], useRadix2, &N2blue, &nd2);
msamadani 1:a514e4de034d 239 e = 6.28318548F / (float)nd2;
msamadani 1:a514e4de034d 240 nRowsD4 = nd2 / 2 / 2;
msamadani 1:a514e4de034d 241 nInt2 = costab1q->size[0] * costab1q->size[1];
msamadani 1:a514e4de034d 242 costab1q->size[0] = 1;
msamadani 1:a514e4de034d 243 costab1q->size[1] = nRowsD4 + 1;
msamadani 1:a514e4de034d 244 emxEnsureCapacity((emxArray__common *)costab1q, nInt2, sizeof(float));
msamadani 1:a514e4de034d 245 costab1q->data[0] = 1.0F;
msamadani 1:a514e4de034d 246 nd2 = nRowsD4 / 2;
msamadani 1:a514e4de034d 247 for (k = 1; k <= nd2; k++) {
msamadani 1:a514e4de034d 248 costab1q->data[k] = std::cos(e * (float)k);
msamadani 1:a514e4de034d 249 }
msamadani 1:a514e4de034d 250
msamadani 1:a514e4de034d 251 for (k = nd2 + 1; k < nRowsD4; k++) {
msamadani 1:a514e4de034d 252 costab1q->data[k] = std::sin(e * (float)(nRowsD4 - k));
msamadani 1:a514e4de034d 253 }
msamadani 1:a514e4de034d 254
msamadani 1:a514e4de034d 255 costab1q->data[nRowsD4] = 0.0F;
msamadani 1:a514e4de034d 256 emxInit_real32_T(&costab, 2);
msamadani 1:a514e4de034d 257 emxInit_real32_T(&sintab, 2);
msamadani 1:a514e4de034d 258 emxInit_real32_T(&sintabinv, 2);
msamadani 1:a514e4de034d 259 if (!useRadix2) {
msamadani 1:a514e4de034d 260 nd2 = costab1q->size[1] - 1;
msamadani 1:a514e4de034d 261 nRowsD4 = (costab1q->size[1] - 1) << 1;
msamadani 1:a514e4de034d 262 nInt2 = costab->size[0] * costab->size[1];
msamadani 1:a514e4de034d 263 costab->size[0] = 1;
msamadani 1:a514e4de034d 264 costab->size[1] = nRowsD4 + 1;
msamadani 1:a514e4de034d 265 emxEnsureCapacity((emxArray__common *)costab, nInt2, sizeof(float));
msamadani 1:a514e4de034d 266 nInt2 = sintab->size[0] * sintab->size[1];
msamadani 1:a514e4de034d 267 sintab->size[0] = 1;
msamadani 1:a514e4de034d 268 sintab->size[1] = nRowsD4 + 1;
msamadani 1:a514e4de034d 269 emxEnsureCapacity((emxArray__common *)sintab, nInt2, sizeof(float));
msamadani 1:a514e4de034d 270 costab->data[0] = 1.0F;
msamadani 1:a514e4de034d 271 sintab->data[0] = 0.0F;
msamadani 1:a514e4de034d 272 nInt2 = sintabinv->size[0] * sintabinv->size[1];
msamadani 1:a514e4de034d 273 sintabinv->size[0] = 1;
msamadani 1:a514e4de034d 274 sintabinv->size[1] = nRowsD4 + 1;
msamadani 1:a514e4de034d 275 emxEnsureCapacity((emxArray__common *)sintabinv, nInt2, sizeof(float));
msamadani 1:a514e4de034d 276 for (k = 1; k <= nd2; k++) {
msamadani 1:a514e4de034d 277 sintabinv->data[k] = costab1q->data[nd2 - k];
msamadani 1:a514e4de034d 278 }
msamadani 1:a514e4de034d 279
msamadani 1:a514e4de034d 280 for (k = costab1q->size[1]; k <= nRowsD4; k++) {
msamadani 1:a514e4de034d 281 sintabinv->data[k] = costab1q->data[k - nd2];
msamadani 1:a514e4de034d 282 }
msamadani 1:a514e4de034d 283
msamadani 1:a514e4de034d 284 for (k = 1; k <= nd2; k++) {
msamadani 1:a514e4de034d 285 costab->data[k] = costab1q->data[k];
msamadani 1:a514e4de034d 286 sintab->data[k] = -costab1q->data[nd2 - k];
msamadani 1:a514e4de034d 287 }
msamadani 1:a514e4de034d 288
msamadani 1:a514e4de034d 289 for (k = costab1q->size[1]; k <= nRowsD4; k++) {
msamadani 1:a514e4de034d 290 costab->data[k] = -costab1q->data[nRowsD4 - k];
msamadani 1:a514e4de034d 291 sintab->data[k] = -costab1q->data[k - nd2];
msamadani 1:a514e4de034d 292 }
msamadani 1:a514e4de034d 293 } else {
msamadani 1:a514e4de034d 294 nd2 = costab1q->size[1] - 1;
msamadani 1:a514e4de034d 295 nRowsD4 = (costab1q->size[1] - 1) << 1;
msamadani 1:a514e4de034d 296 nInt2 = costab->size[0] * costab->size[1];
msamadani 1:a514e4de034d 297 costab->size[0] = 1;
msamadani 1:a514e4de034d 298 costab->size[1] = nRowsD4 + 1;
msamadani 1:a514e4de034d 299 emxEnsureCapacity((emxArray__common *)costab, nInt2, sizeof(float));
msamadani 1:a514e4de034d 300 nInt2 = sintab->size[0] * sintab->size[1];
msamadani 1:a514e4de034d 301 sintab->size[0] = 1;
msamadani 1:a514e4de034d 302 sintab->size[1] = nRowsD4 + 1;
msamadani 1:a514e4de034d 303 emxEnsureCapacity((emxArray__common *)sintab, nInt2, sizeof(float));
msamadani 1:a514e4de034d 304 costab->data[0] = 1.0F;
msamadani 1:a514e4de034d 305 sintab->data[0] = 0.0F;
msamadani 1:a514e4de034d 306 for (k = 1; k <= nd2; k++) {
msamadani 1:a514e4de034d 307 costab->data[k] = costab1q->data[k];
msamadani 1:a514e4de034d 308 sintab->data[k] = costab1q->data[nd2 - k];
msamadani 1:a514e4de034d 309 }
msamadani 1:a514e4de034d 310
msamadani 1:a514e4de034d 311 for (k = costab1q->size[1]; k <= nRowsD4; k++) {
msamadani 1:a514e4de034d 312 costab->data[k] = -costab1q->data[nRowsD4 - k];
msamadani 1:a514e4de034d 313 sintab->data[k] = costab1q->data[k - nd2];
msamadani 1:a514e4de034d 314 }
msamadani 1:a514e4de034d 315
msamadani 1:a514e4de034d 316 nInt2 = sintabinv->size[0] * sintabinv->size[1];
msamadani 1:a514e4de034d 317 sintabinv->size[0] = 1;
msamadani 1:a514e4de034d 318 sintabinv->size[1] = 0;
msamadani 1:a514e4de034d 319 emxEnsureCapacity((emxArray__common *)sintabinv, nInt2, sizeof(float));
msamadani 1:a514e4de034d 320 }
msamadani 1:a514e4de034d 321
msamadani 1:a514e4de034d 322 emxFree_real32_T(&costab1q);
msamadani 1:a514e4de034d 323 if (useRadix2) {
msamadani 1:a514e4de034d 324 b_r2br_r2dit_trig(x, x->size[0], costab, sintab, y);
msamadani 1:a514e4de034d 325 } else {
msamadani 1:a514e4de034d 326 emxInit_creal32_T(&wwc, 1);
msamadani 1:a514e4de034d 327 nInt2m1 = (x->size[0] + x->size[0]) - 1;
msamadani 1:a514e4de034d 328 nInt2 = wwc->size[0];
msamadani 1:a514e4de034d 329 wwc->size[0] = nInt2m1;
msamadani 1:a514e4de034d 330 emxEnsureCapacity((emxArray__common *)wwc, nInt2, sizeof(creal32_T));
msamadani 1:a514e4de034d 331 nd2 = x->size[0];
msamadani 1:a514e4de034d 332 nRowsD4 = 0;
msamadani 1:a514e4de034d 333 wwc->data[x->size[0] - 1].re = 1.0F;
msamadani 1:a514e4de034d 334 wwc->data[x->size[0] - 1].im = 0.0F;
msamadani 1:a514e4de034d 335 nInt2 = x->size[0] << 1;
msamadani 1:a514e4de034d 336 for (k = 1; k < n1; k++) {
msamadani 1:a514e4de034d 337 b_y = (k << 1) - 1;
msamadani 1:a514e4de034d 338 if (nInt2 - nRowsD4 <= b_y) {
msamadani 1:a514e4de034d 339 nRowsD4 += b_y - nInt2;
msamadani 1:a514e4de034d 340 } else {
msamadani 1:a514e4de034d 341 nRowsD4 += b_y;
msamadani 1:a514e4de034d 342 }
msamadani 1:a514e4de034d 343
msamadani 1:a514e4de034d 344 e = 3.14159274F * (float)nRowsD4 / (float)x->size[0];
msamadani 1:a514e4de034d 345 if (e == 0.0F) {
msamadani 1:a514e4de034d 346 denom_re = 1.0F;
msamadani 1:a514e4de034d 347 e = 0.0F;
msamadani 1:a514e4de034d 348 } else {
msamadani 1:a514e4de034d 349 denom_re = std::cos(e);
msamadani 1:a514e4de034d 350 e = std::sin(e);
msamadani 1:a514e4de034d 351 }
msamadani 1:a514e4de034d 352
msamadani 1:a514e4de034d 353 wwc->data[nd2 - 2].re = denom_re;
msamadani 1:a514e4de034d 354 wwc->data[nd2 - 2].im = -e;
msamadani 1:a514e4de034d 355 nd2--;
msamadani 1:a514e4de034d 356 }
msamadani 1:a514e4de034d 357
msamadani 1:a514e4de034d 358 nd2 = 0;
msamadani 1:a514e4de034d 359 for (k = nInt2m1 - 1; k >= n1; k--) {
msamadani 1:a514e4de034d 360 wwc->data[k] = wwc->data[nd2];
msamadani 1:a514e4de034d 361 nd2++;
msamadani 1:a514e4de034d 362 }
msamadani 1:a514e4de034d 363
msamadani 1:a514e4de034d 364 nRowsD4 = x->size[0];
msamadani 1:a514e4de034d 365 nd2 = x->size[0];
msamadani 1:a514e4de034d 366 nInt2 = y->size[0];
msamadani 1:a514e4de034d 367 y->size[0] = nd2;
msamadani 1:a514e4de034d 368 emxEnsureCapacity((emxArray__common *)y, nInt2, sizeof(creal32_T));
msamadani 1:a514e4de034d 369 nd2 = 0;
msamadani 1:a514e4de034d 370 for (k = 0; k + 1 <= nRowsD4; k++) {
msamadani 1:a514e4de034d 371 denom_re = wwc->data[(n1 + k) - 1].re;
msamadani 1:a514e4de034d 372 e = wwc->data[(n1 + k) - 1].im;
msamadani 1:a514e4de034d 373 wwc_im = x->data[nd2].re;
msamadani 1:a514e4de034d 374 wwc_re = x->data[nd2].im;
msamadani 1:a514e4de034d 375 fv_im = x->data[nd2].im;
msamadani 1:a514e4de034d 376 b_wwc_im = x->data[nd2].re;
msamadani 1:a514e4de034d 377 y->data[k].re = denom_re * wwc_im + e * wwc_re;
msamadani 1:a514e4de034d 378 y->data[k].im = denom_re * fv_im - e * b_wwc_im;
msamadani 1:a514e4de034d 379 nd2++;
msamadani 1:a514e4de034d 380 }
msamadani 1:a514e4de034d 381
msamadani 1:a514e4de034d 382 while (nRowsD4 + 1 <= n1) {
msamadani 1:a514e4de034d 383 y->data[nRowsD4].re = 0.0F;
msamadani 1:a514e4de034d 384 y->data[nRowsD4].im = 0.0F;
msamadani 1:a514e4de034d 385 nRowsD4++;
msamadani 1:a514e4de034d 386 }
msamadani 1:a514e4de034d 387
msamadani 1:a514e4de034d 388 emxInit_creal32_T(&fy, 1);
msamadani 1:a514e4de034d 389 emxInit_creal32_T(&fv, 1);
msamadani 1:a514e4de034d 390 r2br_r2dit_trig_impl(y, 0, N2blue, costab, sintab, fy);
msamadani 1:a514e4de034d 391 r2br_r2dit_trig(wwc, N2blue, costab, sintab, fv);
msamadani 1:a514e4de034d 392 nInt2 = fy->size[0];
msamadani 1:a514e4de034d 393 emxEnsureCapacity((emxArray__common *)fy, nInt2, sizeof(creal32_T));
msamadani 1:a514e4de034d 394 nd2 = fy->size[0];
msamadani 1:a514e4de034d 395 for (nInt2 = 0; nInt2 < nd2; nInt2++) {
msamadani 1:a514e4de034d 396 e = fy->data[nInt2].re;
msamadani 1:a514e4de034d 397 wwc_im = fy->data[nInt2].im;
msamadani 1:a514e4de034d 398 fv_re = fv->data[nInt2].re;
msamadani 1:a514e4de034d 399 b_fv_im = fv->data[nInt2].im;
msamadani 1:a514e4de034d 400 fy->data[nInt2].re = e * fv_re - wwc_im * b_fv_im;
msamadani 1:a514e4de034d 401 fy->data[nInt2].im = e * b_fv_im + wwc_im * fv_re;
msamadani 1:a514e4de034d 402 }
msamadani 1:a514e4de034d 403
msamadani 1:a514e4de034d 404 b_r2br_r2dit_trig(fy, N2blue, costab, sintabinv, fv);
msamadani 1:a514e4de034d 405 nd2 = 0;
msamadani 1:a514e4de034d 406 denom_re = (float)x->size[0];
msamadani 1:a514e4de034d 407 k = (int)(float)x->size[0] - 1;
msamadani 1:a514e4de034d 408 emxFree_creal32_T(&fy);
msamadani 1:a514e4de034d 409 while (k + 1 <= wwc->size[0]) {
msamadani 1:a514e4de034d 410 e = wwc->data[k].re;
msamadani 1:a514e4de034d 411 fv_re = fv->data[k].re;
msamadani 1:a514e4de034d 412 wwc_im = wwc->data[k].im;
msamadani 1:a514e4de034d 413 b_fv_im = fv->data[k].im;
msamadani 1:a514e4de034d 414 wwc_re = wwc->data[k].re;
msamadani 1:a514e4de034d 415 fv_im = fv->data[k].im;
msamadani 1:a514e4de034d 416 b_wwc_im = wwc->data[k].im;
msamadani 1:a514e4de034d 417 b_fv_re = fv->data[k].re;
msamadani 1:a514e4de034d 418 y->data[nd2].re = e * fv_re + wwc_im * b_fv_im;
msamadani 1:a514e4de034d 419 y->data[nd2].im = wwc_re * fv_im - b_wwc_im * b_fv_re;
msamadani 1:a514e4de034d 420 e = wwc->data[k].re;
msamadani 1:a514e4de034d 421 fv_re = fv->data[k].re;
msamadani 1:a514e4de034d 422 wwc_im = wwc->data[k].im;
msamadani 1:a514e4de034d 423 b_fv_im = fv->data[k].im;
msamadani 1:a514e4de034d 424 wwc_re = wwc->data[k].re;
msamadani 1:a514e4de034d 425 fv_im = fv->data[k].im;
msamadani 1:a514e4de034d 426 b_wwc_im = wwc->data[k].im;
msamadani 1:a514e4de034d 427 b_fv_re = fv->data[k].re;
msamadani 1:a514e4de034d 428 y->data[nd2].re = e * fv_re + wwc_im * b_fv_im;
msamadani 1:a514e4de034d 429 y->data[nd2].im = wwc_re * fv_im - b_wwc_im * b_fv_re;
msamadani 1:a514e4de034d 430 e = y->data[nd2].re;
msamadani 1:a514e4de034d 431 wwc_im = y->data[nd2].im;
msamadani 1:a514e4de034d 432 if (wwc_im == 0.0F) {
msamadani 1:a514e4de034d 433 y->data[nd2].re = e / denom_re;
msamadani 1:a514e4de034d 434 y->data[nd2].im = 0.0F;
msamadani 1:a514e4de034d 435 } else if (e == 0.0F) {
msamadani 1:a514e4de034d 436 y->data[nd2].re = 0.0F;
msamadani 1:a514e4de034d 437 y->data[nd2].im = wwc_im / denom_re;
msamadani 1:a514e4de034d 438 } else {
msamadani 1:a514e4de034d 439 y->data[nd2].re = e / denom_re;
msamadani 1:a514e4de034d 440 y->data[nd2].im = wwc_im / denom_re;
msamadani 1:a514e4de034d 441 }
msamadani 1:a514e4de034d 442
msamadani 1:a514e4de034d 443 nd2++;
msamadani 1:a514e4de034d 444 k++;
msamadani 1:a514e4de034d 445 }
msamadani 1:a514e4de034d 446
msamadani 1:a514e4de034d 447 emxFree_creal32_T(&fv);
msamadani 1:a514e4de034d 448 emxFree_creal32_T(&wwc);
msamadani 1:a514e4de034d 449 }
msamadani 1:a514e4de034d 450
msamadani 1:a514e4de034d 451 emxFree_real32_T(&sintabinv);
msamadani 1:a514e4de034d 452 emxFree_real32_T(&sintab);
msamadani 1:a514e4de034d 453 emxFree_real32_T(&costab);
msamadani 1:a514e4de034d 454 }
msamadani 1:a514e4de034d 455 }
msamadani 1:a514e4de034d 456
msamadani 1:a514e4de034d 457 //
msamadani 1:a514e4de034d 458 // Arguments : const emxArray_creal32_T *x
msamadani 1:a514e4de034d 459 // int n1_unsigned
msamadani 1:a514e4de034d 460 // const emxArray_real32_T *costab
msamadani 1:a514e4de034d 461 // const emxArray_real32_T *sintab
msamadani 1:a514e4de034d 462 // emxArray_creal32_T *y
msamadani 1:a514e4de034d 463 // Return Type : void
msamadani 1:a514e4de034d 464 //
msamadani 1:a514e4de034d 465 void r2br_r2dit_trig(const emxArray_creal32_T *x, int n1_unsigned, const
msamadani 1:a514e4de034d 466 emxArray_real32_T *costab, const emxArray_real32_T *sintab,
msamadani 1:a514e4de034d 467 emxArray_creal32_T *y)
msamadani 1:a514e4de034d 468 {
msamadani 1:a514e4de034d 469 int j;
msamadani 1:a514e4de034d 470 int nRowsD2;
msamadani 1:a514e4de034d 471 int nRowsD4;
msamadani 1:a514e4de034d 472 int iy;
msamadani 1:a514e4de034d 473 int iDelta;
msamadani 1:a514e4de034d 474 int ix;
msamadani 1:a514e4de034d 475 int ju;
msamadani 1:a514e4de034d 476 int i;
msamadani 1:a514e4de034d 477 boolean_T tst;
msamadani 1:a514e4de034d 478 float temp_re;
msamadani 1:a514e4de034d 479 float temp_im;
msamadani 1:a514e4de034d 480 float twid_re;
msamadani 1:a514e4de034d 481 float twid_im;
msamadani 1:a514e4de034d 482 int ihi;
msamadani 1:a514e4de034d 483 j = x->size[0];
msamadani 1:a514e4de034d 484 if (!(j < n1_unsigned)) {
msamadani 1:a514e4de034d 485 j = n1_unsigned;
msamadani 1:a514e4de034d 486 }
msamadani 1:a514e4de034d 487
msamadani 1:a514e4de034d 488 nRowsD2 = n1_unsigned / 2;
msamadani 1:a514e4de034d 489 nRowsD4 = nRowsD2 / 2;
msamadani 1:a514e4de034d 490 iy = y->size[0];
msamadani 1:a514e4de034d 491 y->size[0] = n1_unsigned;
msamadani 1:a514e4de034d 492 emxEnsureCapacity((emxArray__common *)y, iy, sizeof(creal32_T));
msamadani 1:a514e4de034d 493 if (n1_unsigned > x->size[0]) {
msamadani 1:a514e4de034d 494 iDelta = y->size[0];
msamadani 1:a514e4de034d 495 iy = y->size[0];
msamadani 1:a514e4de034d 496 y->size[0] = iDelta;
msamadani 1:a514e4de034d 497 emxEnsureCapacity((emxArray__common *)y, iy, sizeof(creal32_T));
msamadani 1:a514e4de034d 498 for (iy = 0; iy < iDelta; iy++) {
msamadani 1:a514e4de034d 499 y->data[iy].re = 0.0F;
msamadani 1:a514e4de034d 500 y->data[iy].im = 0.0F;
msamadani 1:a514e4de034d 501 }
msamadani 1:a514e4de034d 502 }
msamadani 1:a514e4de034d 503
msamadani 1:a514e4de034d 504 ix = 0;
msamadani 1:a514e4de034d 505 ju = 0;
msamadani 1:a514e4de034d 506 iy = 0;
msamadani 1:a514e4de034d 507 for (i = 1; i < j; i++) {
msamadani 1:a514e4de034d 508 y->data[iy] = x->data[ix];
msamadani 1:a514e4de034d 509 iDelta = n1_unsigned;
msamadani 1:a514e4de034d 510 tst = true;
msamadani 1:a514e4de034d 511 while (tst) {
msamadani 1:a514e4de034d 512 iDelta >>= 1;
msamadani 1:a514e4de034d 513 ju ^= iDelta;
msamadani 1:a514e4de034d 514 tst = ((ju & iDelta) == 0);
msamadani 1:a514e4de034d 515 }
msamadani 1:a514e4de034d 516
msamadani 1:a514e4de034d 517 iy = ju;
msamadani 1:a514e4de034d 518 ix++;
msamadani 1:a514e4de034d 519 }
msamadani 1:a514e4de034d 520
msamadani 1:a514e4de034d 521 y->data[iy] = x->data[ix];
msamadani 1:a514e4de034d 522 if (n1_unsigned > 1) {
msamadani 1:a514e4de034d 523 for (i = 0; i <= n1_unsigned - 2; i += 2) {
msamadani 1:a514e4de034d 524 temp_re = y->data[i + 1].re;
msamadani 1:a514e4de034d 525 temp_im = y->data[i + 1].im;
msamadani 1:a514e4de034d 526 y->data[i + 1].re = y->data[i].re - y->data[i + 1].re;
msamadani 1:a514e4de034d 527 y->data[i + 1].im = y->data[i].im - y->data[i + 1].im;
msamadani 1:a514e4de034d 528 y->data[i].re += temp_re;
msamadani 1:a514e4de034d 529 y->data[i].im += temp_im;
msamadani 1:a514e4de034d 530 }
msamadani 1:a514e4de034d 531 }
msamadani 1:a514e4de034d 532
msamadani 1:a514e4de034d 533 iDelta = 2;
msamadani 1:a514e4de034d 534 iy = 4;
msamadani 1:a514e4de034d 535 ix = 1 + ((nRowsD4 - 1) << 2);
msamadani 1:a514e4de034d 536 while (nRowsD4 > 0) {
msamadani 1:a514e4de034d 537 for (i = 0; i < ix; i += iy) {
msamadani 1:a514e4de034d 538 temp_re = y->data[i + iDelta].re;
msamadani 1:a514e4de034d 539 temp_im = y->data[i + iDelta].im;
msamadani 1:a514e4de034d 540 y->data[i + iDelta].re = y->data[i].re - temp_re;
msamadani 1:a514e4de034d 541 y->data[i + iDelta].im = y->data[i].im - temp_im;
msamadani 1:a514e4de034d 542 y->data[i].re += temp_re;
msamadani 1:a514e4de034d 543 y->data[i].im += temp_im;
msamadani 1:a514e4de034d 544 }
msamadani 1:a514e4de034d 545
msamadani 1:a514e4de034d 546 ju = 1;
msamadani 1:a514e4de034d 547 for (j = nRowsD4; j < nRowsD2; j += nRowsD4) {
msamadani 1:a514e4de034d 548 twid_re = costab->data[j];
msamadani 1:a514e4de034d 549 twid_im = sintab->data[j];
msamadani 1:a514e4de034d 550 i = ju;
msamadani 1:a514e4de034d 551 ihi = ju + ix;
msamadani 1:a514e4de034d 552 while (i < ihi) {
msamadani 1:a514e4de034d 553 temp_re = twid_re * y->data[i + iDelta].re - twid_im * y->data[i +
msamadani 1:a514e4de034d 554 iDelta].im;
msamadani 1:a514e4de034d 555 temp_im = twid_re * y->data[i + iDelta].im + twid_im * y->data[i +
msamadani 1:a514e4de034d 556 iDelta].re;
msamadani 1:a514e4de034d 557 y->data[i + iDelta].re = y->data[i].re - temp_re;
msamadani 1:a514e4de034d 558 y->data[i + iDelta].im = y->data[i].im - temp_im;
msamadani 1:a514e4de034d 559 y->data[i].re += temp_re;
msamadani 1:a514e4de034d 560 y->data[i].im += temp_im;
msamadani 1:a514e4de034d 561 i += iy;
msamadani 1:a514e4de034d 562 }
msamadani 1:a514e4de034d 563
msamadani 1:a514e4de034d 564 ju++;
msamadani 1:a514e4de034d 565 }
msamadani 1:a514e4de034d 566
msamadani 1:a514e4de034d 567 nRowsD4 /= 2;
msamadani 1:a514e4de034d 568 iDelta = iy;
msamadani 1:a514e4de034d 569 iy += iy;
msamadani 1:a514e4de034d 570 ix -= iDelta;
msamadani 1:a514e4de034d 571 }
msamadani 1:a514e4de034d 572 }
msamadani 1:a514e4de034d 573
msamadani 1:a514e4de034d 574 //
msamadani 1:a514e4de034d 575 // Arguments : const emxArray_creal32_T *x
msamadani 1:a514e4de034d 576 // int xoffInit
msamadani 1:a514e4de034d 577 // int unsigned_nRows
msamadani 1:a514e4de034d 578 // const emxArray_real32_T *costab
msamadani 1:a514e4de034d 579 // const emxArray_real32_T *sintab
msamadani 1:a514e4de034d 580 // emxArray_creal32_T *y
msamadani 1:a514e4de034d 581 // Return Type : void
msamadani 1:a514e4de034d 582 //
msamadani 1:a514e4de034d 583 void r2br_r2dit_trig_impl(const emxArray_creal32_T *x, int xoffInit, int
msamadani 1:a514e4de034d 584 unsigned_nRows, const emxArray_real32_T *costab, const emxArray_real32_T
msamadani 1:a514e4de034d 585 *sintab, emxArray_creal32_T *y)
msamadani 1:a514e4de034d 586 {
msamadani 1:a514e4de034d 587 int j;
msamadani 1:a514e4de034d 588 int nRowsD2;
msamadani 1:a514e4de034d 589 int nRowsD4;
msamadani 1:a514e4de034d 590 int iy;
msamadani 1:a514e4de034d 591 int iDelta;
msamadani 1:a514e4de034d 592 int ix;
msamadani 1:a514e4de034d 593 int ju;
msamadani 1:a514e4de034d 594 int i;
msamadani 1:a514e4de034d 595 boolean_T tst;
msamadani 1:a514e4de034d 596 float temp_re;
msamadani 1:a514e4de034d 597 float temp_im;
msamadani 1:a514e4de034d 598 float twid_re;
msamadani 1:a514e4de034d 599 float twid_im;
msamadani 1:a514e4de034d 600 int ihi;
msamadani 1:a514e4de034d 601 j = x->size[0];
msamadani 1:a514e4de034d 602 if (!(j < unsigned_nRows)) {
msamadani 1:a514e4de034d 603 j = unsigned_nRows;
msamadani 1:a514e4de034d 604 }
msamadani 1:a514e4de034d 605
msamadani 1:a514e4de034d 606 nRowsD2 = unsigned_nRows / 2;
msamadani 1:a514e4de034d 607 nRowsD4 = nRowsD2 / 2;
msamadani 1:a514e4de034d 608 iy = y->size[0];
msamadani 1:a514e4de034d 609 y->size[0] = unsigned_nRows;
msamadani 1:a514e4de034d 610 emxEnsureCapacity((emxArray__common *)y, iy, sizeof(creal32_T));
msamadani 1:a514e4de034d 611 if (unsigned_nRows > x->size[0]) {
msamadani 1:a514e4de034d 612 iDelta = y->size[0];
msamadani 1:a514e4de034d 613 iy = y->size[0];
msamadani 1:a514e4de034d 614 y->size[0] = iDelta;
msamadani 1:a514e4de034d 615 emxEnsureCapacity((emxArray__common *)y, iy, sizeof(creal32_T));
msamadani 1:a514e4de034d 616 for (iy = 0; iy < iDelta; iy++) {
msamadani 1:a514e4de034d 617 y->data[iy].re = 0.0F;
msamadani 1:a514e4de034d 618 y->data[iy].im = 0.0F;
msamadani 1:a514e4de034d 619 }
msamadani 1:a514e4de034d 620 }
msamadani 1:a514e4de034d 621
msamadani 1:a514e4de034d 622 ix = xoffInit;
msamadani 1:a514e4de034d 623 ju = 0;
msamadani 1:a514e4de034d 624 iy = 0;
msamadani 1:a514e4de034d 625 for (i = 1; i < j; i++) {
msamadani 1:a514e4de034d 626 y->data[iy] = x->data[ix];
msamadani 1:a514e4de034d 627 iDelta = unsigned_nRows;
msamadani 1:a514e4de034d 628 tst = true;
msamadani 1:a514e4de034d 629 while (tst) {
msamadani 1:a514e4de034d 630 iDelta >>= 1;
msamadani 1:a514e4de034d 631 ju ^= iDelta;
msamadani 1:a514e4de034d 632 tst = ((ju & iDelta) == 0);
msamadani 1:a514e4de034d 633 }
msamadani 1:a514e4de034d 634
msamadani 1:a514e4de034d 635 iy = ju;
msamadani 1:a514e4de034d 636 ix++;
msamadani 1:a514e4de034d 637 }
msamadani 1:a514e4de034d 638
msamadani 1:a514e4de034d 639 y->data[iy] = x->data[ix];
msamadani 1:a514e4de034d 640 if (unsigned_nRows > 1) {
msamadani 1:a514e4de034d 641 for (i = 0; i <= unsigned_nRows - 2; i += 2) {
msamadani 1:a514e4de034d 642 temp_re = y->data[i + 1].re;
msamadani 1:a514e4de034d 643 temp_im = y->data[i + 1].im;
msamadani 1:a514e4de034d 644 y->data[i + 1].re = y->data[i].re - y->data[i + 1].re;
msamadani 1:a514e4de034d 645 y->data[i + 1].im = y->data[i].im - y->data[i + 1].im;
msamadani 1:a514e4de034d 646 y->data[i].re += temp_re;
msamadani 1:a514e4de034d 647 y->data[i].im += temp_im;
msamadani 1:a514e4de034d 648 }
msamadani 1:a514e4de034d 649 }
msamadani 1:a514e4de034d 650
msamadani 1:a514e4de034d 651 iDelta = 2;
msamadani 1:a514e4de034d 652 iy = 4;
msamadani 1:a514e4de034d 653 ix = 1 + ((nRowsD4 - 1) << 2);
msamadani 1:a514e4de034d 654 while (nRowsD4 > 0) {
msamadani 1:a514e4de034d 655 for (i = 0; i < ix; i += iy) {
msamadani 1:a514e4de034d 656 temp_re = y->data[i + iDelta].re;
msamadani 1:a514e4de034d 657 temp_im = y->data[i + iDelta].im;
msamadani 1:a514e4de034d 658 y->data[i + iDelta].re = y->data[i].re - temp_re;
msamadani 1:a514e4de034d 659 y->data[i + iDelta].im = y->data[i].im - temp_im;
msamadani 1:a514e4de034d 660 y->data[i].re += temp_re;
msamadani 1:a514e4de034d 661 y->data[i].im += temp_im;
msamadani 1:a514e4de034d 662 }
msamadani 1:a514e4de034d 663
msamadani 1:a514e4de034d 664 ju = 1;
msamadani 1:a514e4de034d 665 for (j = nRowsD4; j < nRowsD2; j += nRowsD4) {
msamadani 1:a514e4de034d 666 twid_re = costab->data[j];
msamadani 1:a514e4de034d 667 twid_im = sintab->data[j];
msamadani 1:a514e4de034d 668 i = ju;
msamadani 1:a514e4de034d 669 ihi = ju + ix;
msamadani 1:a514e4de034d 670 while (i < ihi) {
msamadani 1:a514e4de034d 671 temp_re = twid_re * y->data[i + iDelta].re - twid_im * y->data[i +
msamadani 1:a514e4de034d 672 iDelta].im;
msamadani 1:a514e4de034d 673 temp_im = twid_re * y->data[i + iDelta].im + twid_im * y->data[i +
msamadani 1:a514e4de034d 674 iDelta].re;
msamadani 1:a514e4de034d 675 y->data[i + iDelta].re = y->data[i].re - temp_re;
msamadani 1:a514e4de034d 676 y->data[i + iDelta].im = y->data[i].im - temp_im;
msamadani 1:a514e4de034d 677 y->data[i].re += temp_re;
msamadani 1:a514e4de034d 678 y->data[i].im += temp_im;
msamadani 1:a514e4de034d 679 i += iy;
msamadani 1:a514e4de034d 680 }
msamadani 1:a514e4de034d 681
msamadani 1:a514e4de034d 682 ju++;
msamadani 1:a514e4de034d 683 }
msamadani 1:a514e4de034d 684
msamadani 1:a514e4de034d 685 nRowsD4 /= 2;
msamadani 1:a514e4de034d 686 iDelta = iy;
msamadani 1:a514e4de034d 687 iy += iy;
msamadani 1:a514e4de034d 688 ix -= iDelta;
msamadani 1:a514e4de034d 689 }
msamadani 1:a514e4de034d 690 }
msamadani 1:a514e4de034d 691
msamadani 1:a514e4de034d 692 //
msamadani 1:a514e4de034d 693 // File trailer for ifft.cpp
msamadani 1:a514e4de034d 694 //
msamadani 1:a514e4de034d 695 // [EOF]
msamadani 1:a514e4de034d 696 //
msamadani 1:a514e4de034d 697