1 #include "TransformCF32.h"
2 #include <stdio.h>
3 #include "Error.h"
4 #include "Test.h"
5 
6 #define SNR_THRESHOLD 120
7 
test_cfft_f32()8     void TransformCF32::test_cfft_f32()
9     {
10        const float32_t *inp = input.ptr();
11 
12        float32_t *outfftp = outputfft.ptr();
13 
14         memcpy(outfftp,inp,sizeof(float32_t)*input.nbSamples());
15 
16         ASSERT_TRUE(status == ARM_MATH_SUCCESS);
17 
18         arm_cfft_f32(
19              &(this->varInstCfftF32),
20              outfftp,
21              this->ifft,
22              1);
23 
24 
25 
26         ASSERT_SNR(outputfft,ref,(float32_t)SNR_THRESHOLD);
27         ASSERT_EMPTY_TAIL(outputfft);
28 
29 
30 
31     }
32 
setUp(Testing::testID_t id,std::vector<Testing::param_t> & paramsArgs,Client::PatternMgr * mgr)33     void TransformCF32::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
34     {
35 
36        (void)paramsArgs;
37        switch(id)
38        {
39           case TransformCF32::TEST_CFFT_F32_1:
40 
41             input.reload(TransformCF32::INPUTS_CFFT_NOISY_16_F32_ID,mgr);
42             ref.reload(  TransformCF32::REF_CFFT_NOISY_16_F32_ID,mgr);
43 
44             status=arm_cfft_init_f32(&varInstCfftF32,16);
45 
46             this->ifft=0;
47 
48           break;
49 
50           case TransformCF32::TEST_CFFT_F32_19:
51 
52             input.reload(TransformCF32::INPUTS_CIFFT_NOISY_16_F32_ID,mgr);
53             ref.reload(  TransformCF32::INPUTS_CFFT_NOISY_16_F32_ID,mgr);
54 
55             status=arm_cfft_init_f32(&varInstCfftF32,16);
56 
57             this->ifft=1;
58 
59           break;
60 
61           case TransformCF32::TEST_CFFT_F32_2:
62 
63             input.reload(TransformCF32::INPUTS_CFFT_NOISY_32_F32_ID,mgr);
64             ref.reload(  TransformCF32::REF_CFFT_NOISY_32_F32_ID,mgr);
65 
66             status=arm_cfft_init_f32(&varInstCfftF32,32);
67 
68             this->ifft=0;
69 
70           break;
71 
72           case TransformCF32::TEST_CFFT_F32_20:
73 
74             input.reload(TransformCF32::INPUTS_CIFFT_NOISY_32_F32_ID,mgr);
75             ref.reload(  TransformCF32::INPUTS_CFFT_NOISY_32_F32_ID,mgr);
76 
77             status=arm_cfft_init_f32(&varInstCfftF32,32);
78 
79             this->ifft=1;
80 
81           break;
82 
83           case TransformCF32::TEST_CFFT_F32_3:
84 
85             input.reload(TransformCF32::INPUTS_CFFT_NOISY_64_F32_ID,mgr);
86             ref.reload(  TransformCF32::REF_CFFT_NOISY_64_F32_ID,mgr);
87 
88             status=arm_cfft_init_f32(&varInstCfftF32,64);
89 
90 
91             this->ifft=0;
92 
93           break;
94 
95           case TransformCF32::TEST_CFFT_F32_21:
96 
97             input.reload(TransformCF32::INPUTS_CIFFT_NOISY_64_F32_ID,mgr);
98             ref.reload(  TransformCF32::INPUTS_CFFT_NOISY_64_F32_ID,mgr);
99 
100             status=arm_cfft_init_f32(&varInstCfftF32,64);
101 
102 
103             this->ifft=1;
104 
105           break;
106 
107           case TransformCF32::TEST_CFFT_F32_4:
108 
109             input.reload(TransformCF32::INPUTS_CFFT_NOISY_128_F32_ID,mgr);
110             ref.reload(  TransformCF32::REF_CFFT_NOISY_128_F32_ID,mgr);
111 
112             status=arm_cfft_init_f32(&varInstCfftF32,128);
113 
114 
115             this->ifft=0;
116 
117           break;
118 
119           case TransformCF32::TEST_CFFT_F32_22:
120 
121             input.reload(TransformCF32::INPUTS_CIFFT_NOISY_128_F32_ID,mgr);
122             ref.reload(  TransformCF32::INPUTS_CFFT_NOISY_128_F32_ID,mgr);
123 
124             status=arm_cfft_init_f32(&varInstCfftF32,128);
125 
126 
127             this->ifft=1;
128 
129           break;
130 
131           case TransformCF32::TEST_CFFT_F32_5:
132 
133             input.reload(TransformCF32::INPUTS_CFFT_NOISY_256_F32_ID,mgr);
134             ref.reload(  TransformCF32::REF_CFFT_NOISY_256_F32_ID,mgr);
135 
136             status=arm_cfft_init_f32(&varInstCfftF32,256);
137 
138 
139             this->ifft=0;
140 
141           break;
142 
143           case TransformCF32::TEST_CFFT_F32_23:
144 
145             input.reload(TransformCF32::INPUTS_CIFFT_NOISY_256_F32_ID,mgr);
146             ref.reload(  TransformCF32::INPUTS_CFFT_NOISY_256_F32_ID,mgr);
147 
148             status=arm_cfft_init_f32(&varInstCfftF32,256);
149 
150 
151             this->ifft=1;
152 
153           break;
154 
155           case TransformCF32::TEST_CFFT_F32_6:
156 
157             input.reload(TransformCF32::INPUTS_CFFT_NOISY_512_F32_ID,mgr);
158             ref.reload(  TransformCF32::REF_CFFT_NOISY_512_F32_ID,mgr);
159 
160             status=arm_cfft_init_f32(&varInstCfftF32,512);
161 
162 
163             this->ifft=0;
164 
165           break;
166 
167           case TransformCF32::TEST_CFFT_F32_24:
168 
169             input.reload(TransformCF32::INPUTS_CIFFT_NOISY_512_F32_ID,mgr);
170             ref.reload(  TransformCF32::INPUTS_CFFT_NOISY_512_F32_ID,mgr);
171 
172             status=arm_cfft_init_f32(&varInstCfftF32,512);
173 
174 
175             this->ifft=1;
176 
177           break;
178 
179           case TransformCF32::TEST_CFFT_F32_7:
180 
181             input.reload(TransformCF32::INPUTS_CFFT_NOISY_1024_F32_ID,mgr);
182             ref.reload(  TransformCF32::REF_CFFT_NOISY_1024_F32_ID,mgr);
183 
184             status=arm_cfft_init_f32(&varInstCfftF32,1024);
185 
186 
187             this->ifft=0;
188 
189           break;
190 
191           case TransformCF32::TEST_CFFT_F32_25:
192 
193             input.reload(TransformCF32::INPUTS_CIFFT_NOISY_1024_F32_ID,mgr);
194             ref.reload(  TransformCF32::INPUTS_CFFT_NOISY_1024_F32_ID,mgr);
195 
196             status=arm_cfft_init_f32(&varInstCfftF32,1024);
197 
198 
199             this->ifft=1;
200 
201           break;
202 
203           case TransformCF32::TEST_CFFT_F32_8:
204 
205             input.reload(TransformCF32::INPUTS_CFFT_NOISY_2048_F32_ID,mgr);
206             ref.reload(  TransformCF32::REF_CFFT_NOISY_2048_F32_ID,mgr);
207 
208             status=arm_cfft_init_f32(&varInstCfftF32,2048);
209 
210 
211             this->ifft=0;
212 
213           break;
214 
215           case TransformCF32::TEST_CFFT_F32_26:
216 
217             input.reload(TransformCF32::INPUTS_CIFFT_NOISY_2048_F32_ID,mgr);
218             ref.reload(  TransformCF32::INPUTS_CFFT_NOISY_2048_F32_ID,mgr);
219 
220             status=arm_cfft_init_f32(&varInstCfftF32,2048);
221 
222 
223             this->ifft=1;
224 
225           break;
226 
227           case TransformCF32::TEST_CFFT_F32_9:
228 
229             input.reload(TransformCF32::INPUTS_CFFT_NOISY_4096_F32_ID,mgr);
230             ref.reload(  TransformCF32::REF_CFFT_NOISY_4096_F32_ID,mgr);
231 
232             status=arm_cfft_init_f32(&varInstCfftF32,4096);
233 
234 
235             this->ifft=0;
236 
237           break;
238 
239           case TransformCF32::TEST_CFFT_F32_27:
240 
241             input.reload(TransformCF32::INPUTS_CIFFT_NOISY_4096_F32_ID,mgr);
242             ref.reload(  TransformCF32::INPUTS_CFFT_NOISY_4096_F32_ID,mgr);
243 
244             status=arm_cfft_init_f32(&varInstCfftF32,4096);
245 
246 
247             this->ifft=1;
248 
249           break;
250 
251           /* STEP FUNCTIONS */
252 
253           case TransformCF32::TEST_CFFT_F32_10:
254 
255             input.reload(TransformCF32::INPUTS_CFFT_STEP_16_F32_ID,mgr);
256             ref.reload(  TransformCF32::REF_CFFT_STEP_16_F32_ID,mgr);
257 
258             status=arm_cfft_init_f32(&varInstCfftF32,16);
259 
260             this->ifft=0;
261 
262           break;
263 
264           case TransformCF32::TEST_CFFT_F32_28:
265 
266             input.reload(TransformCF32::INPUTS_CIFFT_STEP_16_F32_ID,mgr);
267             ref.reload(  TransformCF32::INPUTS_CFFT_STEP_16_F32_ID,mgr);
268 
269             status=arm_cfft_init_f32(&varInstCfftF32,16);
270 
271 
272             this->ifft=1;
273 
274           break;
275 
276           case TransformCF32::TEST_CFFT_F32_11:
277 
278             input.reload(TransformCF32::INPUTS_CFFT_STEP_32_F32_ID,mgr);
279             ref.reload(  TransformCF32::REF_CFFT_STEP_32_F32_ID,mgr);
280 
281             status=arm_cfft_init_f32(&varInstCfftF32,32);
282 
283 
284             this->ifft=0;
285 
286           break;
287 
288           case TransformCF32::TEST_CFFT_F32_29:
289 
290             input.reload(TransformCF32::INPUTS_CIFFT_STEP_32_F32_ID,mgr);
291             ref.reload(  TransformCF32::INPUTS_CFFT_STEP_32_F32_ID,mgr);
292 
293             status=arm_cfft_init_f32(&varInstCfftF32,32);
294 
295 
296             this->ifft=1;
297 
298           break;
299 
300           case TransformCF32::TEST_CFFT_F32_12:
301 
302             input.reload(TransformCF32::INPUTS_CFFT_STEP_64_F32_ID,mgr);
303             ref.reload(  TransformCF32::REF_CFFT_STEP_64_F32_ID,mgr);
304 
305             status=arm_cfft_init_f32(&varInstCfftF32,64);
306 
307 
308             this->ifft=0;
309 
310           break;
311 
312           case TransformCF32::TEST_CFFT_F32_30:
313 
314             input.reload(TransformCF32::INPUTS_CIFFT_STEP_64_F32_ID,mgr);
315             ref.reload(  TransformCF32::INPUTS_CFFT_STEP_64_F32_ID,mgr);
316 
317             status=arm_cfft_init_f32(&varInstCfftF32,64);
318 
319 
320             this->ifft=1;
321 
322           break;
323 
324           case TransformCF32::TEST_CFFT_F32_13:
325 
326             input.reload(TransformCF32::INPUTS_CFFT_STEP_128_F32_ID,mgr);
327             ref.reload(  TransformCF32::REF_CFFT_STEP_128_F32_ID,mgr);
328 
329             status=arm_cfft_init_f32(&varInstCfftF32,128);
330 
331 
332             this->ifft=0;
333 
334           break;
335 
336           case TransformCF32::TEST_CFFT_F32_31:
337 
338             input.reload(TransformCF32::INPUTS_CIFFT_STEP_128_F32_ID,mgr);
339             ref.reload(  TransformCF32::INPUTS_CFFT_STEP_128_F32_ID,mgr);
340 
341             status=arm_cfft_init_f32(&varInstCfftF32,128);
342 
343 
344             this->ifft=1;
345 
346           break;
347 
348           case TransformCF32::TEST_CFFT_F32_14:
349 
350             input.reload(TransformCF32::INPUTS_CFFT_STEP_256_F32_ID,mgr);
351             ref.reload(  TransformCF32::REF_CFFT_STEP_256_F32_ID,mgr);
352 
353             status=arm_cfft_init_f32(&varInstCfftF32,256);
354 
355 
356             this->ifft=0;
357 
358           break;
359 
360           case TransformCF32::TEST_CFFT_F32_32:
361 
362             input.reload(TransformCF32::INPUTS_CIFFT_STEP_256_F32_ID,mgr);
363             ref.reload(  TransformCF32::INPUTS_CFFT_STEP_256_F32_ID,mgr);
364 
365             status=arm_cfft_init_f32(&varInstCfftF32,256);
366 
367 
368             this->ifft=1;
369 
370           break;
371 
372           case TransformCF32::TEST_CFFT_F32_15:
373 
374             input.reload(TransformCF32::INPUTS_CFFT_STEP_512_F32_ID,mgr);
375             ref.reload(  TransformCF32::REF_CFFT_STEP_512_F32_ID,mgr);
376 
377             status=arm_cfft_init_f32(&varInstCfftF32,512);
378 
379 
380             this->ifft=0;
381 
382           break;
383 
384           case TransformCF32::TEST_CFFT_F32_33:
385 
386             input.reload(TransformCF32::INPUTS_CIFFT_STEP_512_F32_ID,mgr);
387             ref.reload(  TransformCF32::INPUTS_CFFT_STEP_512_F32_ID,mgr);
388 
389             status=arm_cfft_init_f32(&varInstCfftF32,512);
390 
391 
392             this->ifft=1;
393 
394           break;
395 
396           case TransformCF32::TEST_CFFT_F32_16:
397 
398             input.reload(TransformCF32::INPUTS_CFFT_STEP_1024_F32_ID,mgr);
399             ref.reload(  TransformCF32::REF_CFFT_STEP_1024_F32_ID,mgr);
400 
401             status=arm_cfft_init_f32(&varInstCfftF32,1024);
402 
403 
404             this->ifft=0;
405 
406           break;
407 
408           case TransformCF32::TEST_CFFT_F32_34:
409 
410             input.reload(TransformCF32::INPUTS_CIFFT_STEP_1024_F32_ID,mgr);
411             ref.reload(  TransformCF32::INPUTS_CFFT_STEP_1024_F32_ID,mgr);
412 
413             status=arm_cfft_init_f32(&varInstCfftF32,1024);
414 
415 
416             this->ifft=1;
417 
418           break;
419 
420           case TransformCF32::TEST_CFFT_F32_17:
421 
422             input.reload(TransformCF32::INPUTS_CFFT_STEP_2048_F32_ID,mgr);
423             ref.reload(  TransformCF32::REF_CFFT_STEP_2048_F32_ID,mgr);
424 
425             status=arm_cfft_init_f32(&varInstCfftF32,2048);
426 
427 
428             this->ifft=0;
429 
430           break;
431 
432           case TransformCF32::TEST_CFFT_F32_35:
433 
434             input.reload(TransformCF32::INPUTS_CIFFT_STEP_2048_F32_ID,mgr);
435             ref.reload(  TransformCF32::INPUTS_CFFT_STEP_2048_F32_ID,mgr);
436 
437             status=arm_cfft_init_f32(&varInstCfftF32,2048);
438 
439 
440             this->ifft=1;
441 
442           break;
443 
444           case TransformCF32::TEST_CFFT_F32_18:
445 
446             input.reload(TransformCF32::INPUTS_CFFT_STEP_4096_F32_ID,mgr);
447             ref.reload(  TransformCF32::REF_CFFT_STEP_4096_F32_ID,mgr);
448 
449             status=arm_cfft_init_f32(&varInstCfftF32,4096);
450 
451 
452             this->ifft=0;
453 
454           break;
455 
456           case TransformCF32::TEST_CFFT_F32_36:
457 
458             input.reload(TransformCF32::INPUTS_CIFFT_STEP_4096_F32_ID,mgr);
459             ref.reload(  TransformCF32::INPUTS_CFFT_STEP_4096_F32_ID,mgr);
460 
461             status=arm_cfft_init_f32(&varInstCfftF32,4096);
462 
463 
464             this->ifft=1;
465 
466           break;
467 
468 
469 
470        }
471        outputfft.create(ref.nbSamples(),TransformCF32::OUTPUT_CFFT_F32_ID,mgr);
472 
473 
474     }
475 
tearDown(Testing::testID_t id,Client::PatternMgr * mgr)476     void TransformCF32::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
477     {
478         (void)id;
479         outputfft.dump(mgr);
480     }
481