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:
Fri Jul 14 14:41:10 2017 +0000
Revision:
1:a514e4de034d
envSignal function works.

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