1 #include "TransformCF16.h"
2 #include <stdio.h>
3 #include "Error.h"
4 #include "Test.h"
5 
6 #define SNR_THRESHOLD 58
7 
test_cfft_f16()8     void TransformCF16::test_cfft_f16()
9     {
10        const float16_t *inp = input.ptr();
11 
12        float16_t *outfftp = outputfft.ptr();
13 
14         memcpy(outfftp,inp,sizeof(float16_t)*input.nbSamples());
15 
16         ASSERT_TRUE(status == ARM_MATH_SUCCESS);
17 
18         arm_cfft_f16(
19              &(this->varInstCfftF16),
20              outfftp,
21              this->ifft,
22              1);
23 
24 
25 
26         ASSERT_SNR(outputfft,ref,(float16_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 TransformCF16::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
34     {
35 
36        (void)paramsArgs;
37 
38        switch(id)
39        {
40           case TransformCF16::TEST_CFFT_F16_1:
41 
42             input.reload(TransformCF16::INPUTS_CFFT_NOISY_16_F16_ID,mgr);
43             ref.reload(  TransformCF16::REF_CFFT_NOISY_16_F16_ID,mgr);
44 
45             status=arm_cfft_init_f16(&varInstCfftF16,16);
46 
47             this->ifft=0;
48 
49           break;
50 
51           case TransformCF16::TEST_CFFT_F16_19:
52 
53             input.reload(TransformCF16::INPUTS_CIFFT_NOISY_16_F16_ID,mgr);
54             ref.reload(  TransformCF16::INPUTS_CFFT_NOISY_16_F16_ID,mgr);
55 
56             status=arm_cfft_init_f16(&varInstCfftF16,16);
57 
58             this->ifft=1;
59 
60           break;
61 
62           case TransformCF16::TEST_CFFT_F16_2:
63 
64             input.reload(TransformCF16::INPUTS_CFFT_NOISY_32_F16_ID,mgr);
65             ref.reload(  TransformCF16::REF_CFFT_NOISY_32_F16_ID,mgr);
66 
67             status=arm_cfft_init_f16(&varInstCfftF16,32);
68 
69             this->ifft=0;
70 
71           break;
72 
73           case TransformCF16::TEST_CFFT_F16_20:
74 
75             input.reload(TransformCF16::INPUTS_CIFFT_NOISY_32_F16_ID,mgr);
76             ref.reload(  TransformCF16::INPUTS_CFFT_NOISY_32_F16_ID,mgr);
77 
78             status=arm_cfft_init_f16(&varInstCfftF16,32);
79 
80             this->ifft=1;
81 
82           break;
83 
84           case TransformCF16::TEST_CFFT_F16_3:
85 
86             input.reload(TransformCF16::INPUTS_CFFT_NOISY_64_F16_ID,mgr);
87             ref.reload(  TransformCF16::REF_CFFT_NOISY_64_F16_ID,mgr);
88 
89             status=arm_cfft_init_f16(&varInstCfftF16,64);
90 
91 
92             this->ifft=0;
93 
94           break;
95 
96           case TransformCF16::TEST_CFFT_F16_21:
97 
98             input.reload(TransformCF16::INPUTS_CIFFT_NOISY_64_F16_ID,mgr);
99             ref.reload(  TransformCF16::INPUTS_CFFT_NOISY_64_F16_ID,mgr);
100 
101             status=arm_cfft_init_f16(&varInstCfftF16,64);
102 
103 
104             this->ifft=1;
105 
106           break;
107 
108           case TransformCF16::TEST_CFFT_F16_4:
109 
110             input.reload(TransformCF16::INPUTS_CFFT_NOISY_128_F16_ID,mgr);
111             ref.reload(  TransformCF16::REF_CFFT_NOISY_128_F16_ID,mgr);
112 
113             status=arm_cfft_init_f16(&varInstCfftF16,128);
114 
115 
116             this->ifft=0;
117 
118           break;
119 
120           case TransformCF16::TEST_CFFT_F16_22:
121 
122             input.reload(TransformCF16::INPUTS_CIFFT_NOISY_128_F16_ID,mgr);
123             ref.reload(  TransformCF16::INPUTS_CFFT_NOISY_128_F16_ID,mgr);
124 
125             status=arm_cfft_init_f16(&varInstCfftF16,128);
126 
127 
128             this->ifft=1;
129 
130           break;
131 
132           case TransformCF16::TEST_CFFT_F16_5:
133 
134             input.reload(TransformCF16::INPUTS_CFFT_NOISY_256_F16_ID,mgr);
135             ref.reload(  TransformCF16::REF_CFFT_NOISY_256_F16_ID,mgr);
136 
137             status=arm_cfft_init_f16(&varInstCfftF16,256);
138 
139 
140             this->ifft=0;
141 
142           break;
143 
144           case TransformCF16::TEST_CFFT_F16_23:
145 
146             input.reload(TransformCF16::INPUTS_CIFFT_NOISY_256_F16_ID,mgr);
147             ref.reload(  TransformCF16::INPUTS_CFFT_NOISY_256_F16_ID,mgr);
148 
149             status=arm_cfft_init_f16(&varInstCfftF16,256);
150 
151 
152             this->ifft=1;
153 
154           break;
155 
156           case TransformCF16::TEST_CFFT_F16_6:
157 
158             input.reload(TransformCF16::INPUTS_CFFT_NOISY_512_F16_ID,mgr);
159             ref.reload(  TransformCF16::REF_CFFT_NOISY_512_F16_ID,mgr);
160 
161             status=arm_cfft_init_f16(&varInstCfftF16,512);
162 
163 
164             this->ifft=0;
165 
166           break;
167 
168           case TransformCF16::TEST_CFFT_F16_24:
169 
170             input.reload(TransformCF16::INPUTS_CIFFT_NOISY_512_F16_ID,mgr);
171             ref.reload(  TransformCF16::INPUTS_CFFT_NOISY_512_F16_ID,mgr);
172 
173             status=arm_cfft_init_f16(&varInstCfftF16,512);
174 
175 
176             this->ifft=1;
177 
178           break;
179 
180           case TransformCF16::TEST_CFFT_F16_7:
181 
182             input.reload(TransformCF16::INPUTS_CFFT_NOISY_1024_F16_ID,mgr);
183             ref.reload(  TransformCF16::REF_CFFT_NOISY_1024_F16_ID,mgr);
184 
185             status=arm_cfft_init_f16(&varInstCfftF16,1024);
186 
187 
188             this->ifft=0;
189 
190           break;
191 
192           case TransformCF16::TEST_CFFT_F16_25:
193 
194             input.reload(TransformCF16::INPUTS_CIFFT_NOISY_1024_F16_ID,mgr);
195             ref.reload(  TransformCF16::INPUTS_CFFT_NOISY_1024_F16_ID,mgr);
196 
197             status=arm_cfft_init_f16(&varInstCfftF16,1024);
198 
199 
200             this->ifft=1;
201 
202           break;
203 
204           case TransformCF16::TEST_CFFT_F16_8:
205 
206             input.reload(TransformCF16::INPUTS_CFFT_NOISY_2048_F16_ID,mgr);
207             ref.reload(  TransformCF16::REF_CFFT_NOISY_2048_F16_ID,mgr);
208 
209             status=arm_cfft_init_f16(&varInstCfftF16,2048);
210 
211 
212             this->ifft=0;
213 
214           break;
215 
216           case TransformCF16::TEST_CFFT_F16_26:
217 
218             input.reload(TransformCF16::INPUTS_CIFFT_NOISY_2048_F16_ID,mgr);
219             ref.reload(  TransformCF16::INPUTS_CFFT_NOISY_2048_F16_ID,mgr);
220 
221             status=arm_cfft_init_f16(&varInstCfftF16,2048);
222 
223 
224             this->ifft=1;
225 
226           break;
227 
228           case TransformCF16::TEST_CFFT_F16_9:
229 
230             input.reload(TransformCF16::INPUTS_CFFT_NOISY_4096_F16_ID,mgr);
231             ref.reload(  TransformCF16::REF_CFFT_NOISY_4096_F16_ID,mgr);
232 
233             status=arm_cfft_init_f16(&varInstCfftF16,4096);
234 
235 
236             this->ifft=0;
237 
238           break;
239 
240           case TransformCF16::TEST_CFFT_F16_27:
241 
242             input.reload(TransformCF16::INPUTS_CIFFT_NOISY_4096_F16_ID,mgr);
243             ref.reload(  TransformCF16::INPUTS_CFFT_NOISY_4096_F16_ID,mgr);
244 
245             status=arm_cfft_init_f16(&varInstCfftF16,4096);
246 
247 
248             this->ifft=1;
249 
250           break;
251 
252           /* STEP FUNCTIONS */
253 
254           case TransformCF16::TEST_CFFT_F16_10:
255 
256             input.reload(TransformCF16::INPUTS_CFFT_STEP_16_F16_ID,mgr);
257             ref.reload(  TransformCF16::REF_CFFT_STEP_16_F16_ID,mgr);
258 
259             status=arm_cfft_init_f16(&varInstCfftF16,16);
260 
261             this->ifft=0;
262 
263           break;
264 
265           case TransformCF16::TEST_CFFT_F16_28:
266 
267             input.reload(TransformCF16::INPUTS_CIFFT_STEP_16_F16_ID,mgr);
268             ref.reload(  TransformCF16::INPUTS_CFFT_STEP_16_F16_ID,mgr);
269 
270             status=arm_cfft_init_f16(&varInstCfftF16,16);
271 
272 
273             this->ifft=1;
274 
275           break;
276 
277           case TransformCF16::TEST_CFFT_F16_11:
278 
279             input.reload(TransformCF16::INPUTS_CFFT_STEP_32_F16_ID,mgr);
280             ref.reload(  TransformCF16::REF_CFFT_STEP_32_F16_ID,mgr);
281 
282             status=arm_cfft_init_f16(&varInstCfftF16,32);
283 
284 
285             this->ifft=0;
286 
287           break;
288 
289           case TransformCF16::TEST_CFFT_F16_29:
290 
291             input.reload(TransformCF16::INPUTS_CIFFT_STEP_32_F16_ID,mgr);
292             ref.reload(  TransformCF16::INPUTS_CFFT_STEP_32_F16_ID,mgr);
293 
294             status=arm_cfft_init_f16(&varInstCfftF16,32);
295 
296 
297             this->ifft=1;
298 
299           break;
300 
301           case TransformCF16::TEST_CFFT_F16_12:
302 
303             input.reload(TransformCF16::INPUTS_CFFT_STEP_64_F16_ID,mgr);
304             ref.reload(  TransformCF16::REF_CFFT_STEP_64_F16_ID,mgr);
305 
306             status=arm_cfft_init_f16(&varInstCfftF16,64);
307 
308 
309             this->ifft=0;
310 
311           break;
312 
313           case TransformCF16::TEST_CFFT_F16_30:
314 
315             input.reload(TransformCF16::INPUTS_CIFFT_STEP_64_F16_ID,mgr);
316             ref.reload(  TransformCF16::INPUTS_CFFT_STEP_64_F16_ID,mgr);
317 
318             status=arm_cfft_init_f16(&varInstCfftF16,64);
319 
320 
321             this->ifft=1;
322 
323           break;
324 
325           case TransformCF16::TEST_CFFT_F16_13:
326 
327             input.reload(TransformCF16::INPUTS_CFFT_STEP_128_F16_ID,mgr);
328             ref.reload(  TransformCF16::REF_CFFT_STEP_128_F16_ID,mgr);
329 
330             status=arm_cfft_init_f16(&varInstCfftF16,128);
331 
332 
333             this->ifft=0;
334 
335           break;
336 
337           case TransformCF16::TEST_CFFT_F16_31:
338 
339             input.reload(TransformCF16::INPUTS_CIFFT_STEP_128_F16_ID,mgr);
340             ref.reload(  TransformCF16::INPUTS_CFFT_STEP_128_F16_ID,mgr);
341 
342             status=arm_cfft_init_f16(&varInstCfftF16,128);
343 
344 
345             this->ifft=1;
346 
347           break;
348 
349           case TransformCF16::TEST_CFFT_F16_14:
350 
351             input.reload(TransformCF16::INPUTS_CFFT_STEP_256_F16_ID,mgr);
352             ref.reload(  TransformCF16::REF_CFFT_STEP_256_F16_ID,mgr);
353 
354             status=arm_cfft_init_f16(&varInstCfftF16,256);
355 
356 
357             this->ifft=0;
358 
359           break;
360 
361           case TransformCF16::TEST_CFFT_F16_32:
362 
363             input.reload(TransformCF16::INPUTS_CIFFT_STEP_256_F16_ID,mgr);
364             ref.reload(  TransformCF16::INPUTS_CFFT_STEP_256_F16_ID,mgr);
365 
366             status=arm_cfft_init_f16(&varInstCfftF16,256);
367 
368 
369             this->ifft=1;
370 
371           break;
372 
373           case TransformCF16::TEST_CFFT_F16_15:
374 
375             input.reload(TransformCF16::INPUTS_CFFT_STEP_512_F16_ID,mgr);
376             ref.reload(  TransformCF16::REF_CFFT_STEP_512_F16_ID,mgr);
377 
378             status=arm_cfft_init_f16(&varInstCfftF16,512);
379 
380 
381             this->ifft=0;
382 
383           break;
384 
385           case TransformCF16::TEST_CFFT_F16_33:
386 
387             input.reload(TransformCF16::INPUTS_CIFFT_STEP_512_F16_ID,mgr);
388             ref.reload(  TransformCF16::INPUTS_CFFT_STEP_512_F16_ID,mgr);
389 
390             status=arm_cfft_init_f16(&varInstCfftF16,512);
391 
392 
393             this->ifft=1;
394 
395           break;
396 
397           case TransformCF16::TEST_CFFT_F16_16:
398 
399             input.reload(TransformCF16::INPUTS_CFFT_STEP_1024_F16_ID,mgr);
400             ref.reload(  TransformCF16::REF_CFFT_STEP_1024_F16_ID,mgr);
401 
402             status=arm_cfft_init_f16(&varInstCfftF16,1024);
403 
404 
405             this->ifft=0;
406 
407           break;
408 
409           case TransformCF16::TEST_CFFT_F16_34:
410 
411             input.reload(TransformCF16::INPUTS_CIFFT_STEP_1024_F16_ID,mgr);
412             ref.reload(  TransformCF16::INPUTS_CFFT_STEP_1024_F16_ID,mgr);
413 
414             status=arm_cfft_init_f16(&varInstCfftF16,1024);
415 
416 
417             this->ifft=1;
418 
419           break;
420 
421           case TransformCF16::TEST_CFFT_F16_17:
422 
423             input.reload(TransformCF16::INPUTS_CFFT_STEP_2048_F16_ID,mgr);
424             ref.reload(  TransformCF16::REF_CFFT_STEP_2048_F16_ID,mgr);
425 
426             status=arm_cfft_init_f16(&varInstCfftF16,2048);
427 
428 
429             this->ifft=0;
430 
431           break;
432 
433           case TransformCF16::TEST_CFFT_F16_35:
434 
435             input.reload(TransformCF16::INPUTS_CIFFT_STEP_2048_F16_ID,mgr);
436             ref.reload(  TransformCF16::INPUTS_CFFT_STEP_2048_F16_ID,mgr);
437 
438             status=arm_cfft_init_f16(&varInstCfftF16,2048);
439 
440 
441             this->ifft=1;
442 
443           break;
444 
445           case TransformCF16::TEST_CFFT_F16_18:
446 
447             input.reload(TransformCF16::INPUTS_CFFT_STEP_4096_F16_ID,mgr);
448             ref.reload(  TransformCF16::REF_CFFT_STEP_4096_F16_ID,mgr);
449 
450             status=arm_cfft_init_f16(&varInstCfftF16,4096);
451 
452 
453             this->ifft=0;
454 
455           break;
456 
457           case TransformCF16::TEST_CFFT_F16_36:
458 
459             input.reload(TransformCF16::INPUTS_CIFFT_STEP_4096_F16_ID,mgr);
460             ref.reload(  TransformCF16::INPUTS_CFFT_STEP_4096_F16_ID,mgr);
461 
462             status=arm_cfft_init_f16(&varInstCfftF16,4096);
463 
464 
465             this->ifft=1;
466 
467           break;
468 
469 
470 
471        }
472         outputfft.create(ref.nbSamples(),TransformCF16::OUTPUT_CFFT_F16_ID,mgr);
473 
474 
475     }
476 
tearDown(Testing::testID_t id,Client::PatternMgr * mgr)477     void TransformCF16::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
478     {
479         (void)id;
480         outputfft.dump(mgr);
481     }
482