1 #include "TransformCF64.h"
2 #include <stdio.h>
3 #include "Error.h"
4 #include "Test.h"
5 
6 #define SNR_THRESHOLD 250
7 
test_cfft_f64()8     void TransformCF64::test_cfft_f64()
9     {
10        const float64_t *inp = input.ptr();
11 
12        float64_t *outfftp = outputfft.ptr();
13 
14         memcpy(outfftp,inp,sizeof(float64_t)*input.nbSamples());
15 
16         arm_cfft_f64(
17              &(this->varInstCfftF64),
18              outfftp,
19              this->ifft,
20              1);
21 
22 
23         ASSERT_SNR(outputfft,ref,(float64_t)SNR_THRESHOLD);
24         ASSERT_EMPTY_TAIL(outputfft);
25 
26     }
27 
28 
setUp(Testing::testID_t id,std::vector<Testing::param_t> & paramsArgs,Client::PatternMgr * mgr)29     void TransformCF64::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
30     {
31 
32 
33        (void)paramsArgs;
34 
35        switch(id)
36        {
37           case TransformCF64::TEST_CFFT_F64_1:
38 
39             input.reload(TransformCF64::INPUTS_CFFT_NOISY_16_F64_ID,mgr);
40             ref.reload(  TransformCF64::REF_CFFT_NOISY_16_F64_ID,mgr);
41 
42             status=arm_cfft_init_f64(&varInstCfftF64,16);
43 
44             this->ifft=0;
45 
46           break;
47 
48           case TransformCF64::TEST_CFFT_F64_19:
49 
50             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_16_F64_ID,mgr);
51             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_16_F64_ID,mgr);
52 
53             status=arm_cfft_init_f64(&varInstCfftF64,16);
54 
55             this->ifft=1;
56 
57           break;
58 
59           case TransformCF64::TEST_CFFT_F64_2:
60 
61             input.reload(TransformCF64::INPUTS_CFFT_NOISY_32_F64_ID,mgr);
62             ref.reload(  TransformCF64::REF_CFFT_NOISY_32_F64_ID,mgr);
63 
64             status=arm_cfft_init_f64(&varInstCfftF64,32);
65 
66             this->ifft=0;
67 
68           break;
69 
70           case TransformCF64::TEST_CFFT_F64_20:
71 
72             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_32_F64_ID,mgr);
73             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_32_F64_ID,mgr);
74 
75             status=arm_cfft_init_f64(&varInstCfftF64,32);
76 
77             this->ifft=1;
78 
79           break;
80 
81           case TransformCF64::TEST_CFFT_F64_3:
82 
83             input.reload(TransformCF64::INPUTS_CFFT_NOISY_64_F64_ID,mgr);
84             ref.reload(  TransformCF64::REF_CFFT_NOISY_64_F64_ID,mgr);
85 
86             status=arm_cfft_init_f64(&varInstCfftF64,64);
87 
88             this->ifft=0;
89 
90           break;
91 
92           case TransformCF64::TEST_CFFT_F64_21:
93 
94             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_64_F64_ID,mgr);
95             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_64_F64_ID,mgr);
96 
97             status=arm_cfft_init_f64(&varInstCfftF64,64);
98 
99             this->ifft=1;
100 
101           break;
102 
103           case TransformCF64::TEST_CFFT_F64_4:
104 
105             input.reload(TransformCF64::INPUTS_CFFT_NOISY_128_F64_ID,mgr);
106             ref.reload(  TransformCF64::REF_CFFT_NOISY_128_F64_ID,mgr);
107 
108             status=arm_cfft_init_f64(&varInstCfftF64,128);
109 
110             this->ifft=0;
111 
112           break;
113 
114           case TransformCF64::TEST_CFFT_F64_22:
115 
116             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_128_F64_ID,mgr);
117             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_128_F64_ID,mgr);
118 
119             status=arm_cfft_init_f64(&varInstCfftF64,128);
120 
121             this->ifft=1;
122 
123           break;
124 
125           case TransformCF64::TEST_CFFT_F64_5:
126 
127             input.reload(TransformCF64::INPUTS_CFFT_NOISY_256_F64_ID,mgr);
128             ref.reload(  TransformCF64::REF_CFFT_NOISY_256_F64_ID,mgr);
129 
130             status=arm_cfft_init_f64(&varInstCfftF64,256);
131 
132             this->ifft=0;
133 
134           break;
135 
136           case TransformCF64::TEST_CFFT_F64_23:
137 
138             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_256_F64_ID,mgr);
139             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_256_F64_ID,mgr);
140 
141             status=arm_cfft_init_f64(&varInstCfftF64,256);
142 
143             this->ifft=1;
144 
145           break;
146 
147           case TransformCF64::TEST_CFFT_F64_6:
148 
149             input.reload(TransformCF64::INPUTS_CFFT_NOISY_512_F64_ID,mgr);
150             ref.reload(  TransformCF64::REF_CFFT_NOISY_512_F64_ID,mgr);
151 
152             status=arm_cfft_init_f64(&varInstCfftF64,512);
153 
154             this->ifft=0;
155 
156           break;
157 
158           case TransformCF64::TEST_CFFT_F64_24:
159 
160             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_512_F64_ID,mgr);
161             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_512_F64_ID,mgr);
162 
163             status=arm_cfft_init_f64(&varInstCfftF64,512);
164 
165             this->ifft=1;
166 
167           break;
168 
169           case TransformCF64::TEST_CFFT_F64_7:
170 
171             input.reload(TransformCF64::INPUTS_CFFT_NOISY_1024_F64_ID,mgr);
172             ref.reload(  TransformCF64::REF_CFFT_NOISY_1024_F64_ID,mgr);
173 
174             status=arm_cfft_init_f64(&varInstCfftF64,1024);
175 
176             this->ifft=0;
177 
178           break;
179 
180           case TransformCF64::TEST_CFFT_F64_25:
181 
182             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_1024_F64_ID,mgr);
183             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_1024_F64_ID,mgr);
184 
185             status=arm_cfft_init_f64(&varInstCfftF64,1024);
186 
187             this->ifft=1;
188 
189           break;
190 
191           case TransformCF64::TEST_CFFT_F64_8:
192 
193             input.reload(TransformCF64::INPUTS_CFFT_NOISY_2048_F64_ID,mgr);
194             ref.reload(  TransformCF64::REF_CFFT_NOISY_2048_F64_ID,mgr);
195 
196             status=arm_cfft_init_f64(&varInstCfftF64,2048);
197 
198             this->ifft=0;
199 
200           break;
201 
202           case TransformCF64::TEST_CFFT_F64_26:
203 
204             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_2048_F64_ID,mgr);
205             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_2048_F64_ID,mgr);
206 
207             status=arm_cfft_init_f64(&varInstCfftF64,2048);
208 
209             this->ifft=1;
210 
211           break;
212 
213           case TransformCF64::TEST_CFFT_F64_9:
214 
215             input.reload(TransformCF64::INPUTS_CFFT_NOISY_4096_F64_ID,mgr);
216             ref.reload(  TransformCF64::REF_CFFT_NOISY_4096_F64_ID,mgr);
217 
218             status=arm_cfft_init_f64(&varInstCfftF64,4096);
219 
220             this->ifft=0;
221 
222           break;
223 
224           case TransformCF64::TEST_CFFT_F64_27:
225 
226             input.reload(TransformCF64::INPUTS_CIFFT_NOISY_4096_F64_ID,mgr);
227             ref.reload(  TransformCF64::INPUTS_CFFT_NOISY_4096_F64_ID,mgr);
228 
229             status=arm_cfft_init_f64(&varInstCfftF64,4096);
230 
231             this->ifft=1;
232 
233           break;
234 
235           /* STEP FUNCTIONS */
236 
237           case TransformCF64::TEST_CFFT_F64_10:
238 
239             input.reload(TransformCF64::INPUTS_CFFT_STEP_16_F64_ID,mgr);
240             ref.reload(  TransformCF64::REF_CFFT_STEP_16_F64_ID,mgr);
241 
242             status=arm_cfft_init_f64(&varInstCfftF64,16);
243 
244             this->ifft=0;
245 
246           break;
247 
248           case TransformCF64::TEST_CFFT_F64_28:
249 
250             input.reload(TransformCF64::INPUTS_CIFFT_STEP_16_F64_ID,mgr);
251             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_16_F64_ID,mgr);
252 
253             status=arm_cfft_init_f64(&varInstCfftF64,16);
254 
255             this->ifft=1;
256 
257           break;
258 
259           case TransformCF64::TEST_CFFT_F64_11:
260 
261             input.reload(TransformCF64::INPUTS_CFFT_STEP_32_F64_ID,mgr);
262             ref.reload(  TransformCF64::REF_CFFT_STEP_32_F64_ID,mgr);
263 
264             status=arm_cfft_init_f64(&varInstCfftF64,32);
265 
266             this->ifft=0;
267 
268           break;
269 
270           case TransformCF64::TEST_CFFT_F64_29:
271 
272             input.reload(TransformCF64::INPUTS_CIFFT_STEP_32_F64_ID,mgr);
273             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_32_F64_ID,mgr);
274 
275             status=arm_cfft_init_f64(&varInstCfftF64,32);
276 
277             this->ifft=1;
278 
279           break;
280 
281           case TransformCF64::TEST_CFFT_F64_12:
282 
283             input.reload(TransformCF64::INPUTS_CFFT_STEP_64_F64_ID,mgr);
284             ref.reload(  TransformCF64::REF_CFFT_STEP_64_F64_ID,mgr);
285 
286             status=arm_cfft_init_f64(&varInstCfftF64,64);
287 
288             this->ifft=0;
289 
290           break;
291 
292           case TransformCF64::TEST_CFFT_F64_30:
293 
294             input.reload(TransformCF64::INPUTS_CIFFT_STEP_64_F64_ID,mgr);
295             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_64_F64_ID,mgr);
296 
297             status=arm_cfft_init_f64(&varInstCfftF64,64);
298 
299             this->ifft=1;
300 
301           break;
302 
303           case TransformCF64::TEST_CFFT_F64_13:
304 
305             input.reload(TransformCF64::INPUTS_CFFT_STEP_128_F64_ID,mgr);
306             ref.reload(  TransformCF64::REF_CFFT_STEP_128_F64_ID,mgr);
307 
308             status=arm_cfft_init_f64(&varInstCfftF64,128);
309 
310             this->ifft=0;
311 
312           break;
313 
314           case TransformCF64::TEST_CFFT_F64_31:
315 
316             input.reload(TransformCF64::INPUTS_CIFFT_STEP_128_F64_ID,mgr);
317             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_128_F64_ID,mgr);
318 
319             status=arm_cfft_init_f64(&varInstCfftF64,128);
320 
321             this->ifft=1;
322 
323           break;
324 
325           case TransformCF64::TEST_CFFT_F64_14:
326 
327             input.reload(TransformCF64::INPUTS_CFFT_STEP_256_F64_ID,mgr);
328             ref.reload(  TransformCF64::REF_CFFT_STEP_256_F64_ID,mgr);
329 
330             status=arm_cfft_init_f64(&varInstCfftF64,256);
331 
332             this->ifft=0;
333 
334           break;
335 
336           case TransformCF64::TEST_CFFT_F64_32:
337 
338             input.reload(TransformCF64::INPUTS_CIFFT_STEP_256_F64_ID,mgr);
339             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_256_F64_ID,mgr);
340 
341             status=arm_cfft_init_f64(&varInstCfftF64,256);
342 
343             this->ifft=1;
344 
345           break;
346 
347           case TransformCF64::TEST_CFFT_F64_15:
348 
349             input.reload(TransformCF64::INPUTS_CFFT_STEP_512_F64_ID,mgr);
350             ref.reload(  TransformCF64::REF_CFFT_STEP_512_F64_ID,mgr);
351 
352             status=arm_cfft_init_f64(&varInstCfftF64,512);
353 
354             this->ifft=0;
355 
356           break;
357 
358           case TransformCF64::TEST_CFFT_F64_33:
359 
360             input.reload(TransformCF64::INPUTS_CIFFT_STEP_512_F64_ID,mgr);
361             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_512_F64_ID,mgr);
362 
363             status=arm_cfft_init_f64(&varInstCfftF64,512);
364 
365             this->ifft=1;
366 
367           break;
368 
369           case TransformCF64::TEST_CFFT_F64_16:
370 
371             input.reload(TransformCF64::INPUTS_CFFT_STEP_1024_F64_ID,mgr);
372             ref.reload(  TransformCF64::REF_CFFT_STEP_1024_F64_ID,mgr);
373 
374             status=arm_cfft_init_f64(&varInstCfftF64,1024);
375 
376             this->ifft=0;
377 
378           break;
379 
380           case TransformCF64::TEST_CFFT_F64_34:
381 
382             input.reload(TransformCF64::INPUTS_CIFFT_STEP_1024_F64_ID,mgr);
383             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_1024_F64_ID,mgr);
384 
385             status=arm_cfft_init_f64(&varInstCfftF64,1024);
386 
387             this->ifft=1;
388 
389           break;
390 
391           case TransformCF64::TEST_CFFT_F64_17:
392 
393             input.reload(TransformCF64::INPUTS_CFFT_STEP_2048_F64_ID,mgr);
394             ref.reload(  TransformCF64::REF_CFFT_STEP_2048_F64_ID,mgr);
395 
396             status=arm_cfft_init_f64(&varInstCfftF64,2048);
397 
398             this->ifft=0;
399 
400           break;
401 
402           case TransformCF64::TEST_CFFT_F64_35:
403 
404             input.reload(TransformCF64::INPUTS_CIFFT_STEP_2048_F64_ID,mgr);
405             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_2048_F64_ID,mgr);
406 
407             status=arm_cfft_init_f64(&varInstCfftF64,2048);
408 
409             this->ifft=1;
410 
411           break;
412 
413           case TransformCF64::TEST_CFFT_F64_18:
414 
415             input.reload(TransformCF64::INPUTS_CFFT_STEP_4096_F64_ID,mgr);
416             ref.reload(  TransformCF64::REF_CFFT_STEP_4096_F64_ID,mgr);
417 
418             status=arm_cfft_init_f64(&varInstCfftF64,4096);
419 
420             this->ifft=0;
421 
422           break;
423 
424           case TransformCF64::TEST_CFFT_F64_36:
425 
426             input.reload(TransformCF64::INPUTS_CIFFT_STEP_4096_F64_ID,mgr);
427             ref.reload(  TransformCF64::INPUTS_CFFT_STEP_4096_F64_ID,mgr);
428 
429             status=arm_cfft_init_f64(&varInstCfftF64,4096);
430 
431             this->ifft=1;
432 
433           break;
434 
435        }
436 
437        outputfft.create(ref.nbSamples(),TransformCF64::OUTPUT_CFFT_F64_ID,mgr);
438 
439 
440     }
441 
tearDown(Testing::testID_t id,Client::PatternMgr * mgr)442     void TransformCF64::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
443     {
444         (void)id;
445         outputfft.dump(mgr);
446     }
447