1 #include "WindowTestsF32.h"
2 #include <stdio.h>
3 #include "Error.h"
4 
5 #define SNR_THRESHOLD 120
6 
7 /*
8 
9 Reference patterns are generated with
10 a double precision computation.
11 
12 */
13 #define REL_ERROR (1.0e-6)
14 #define ABS_ERROR (2.0e-6)
15 
test_welch_f32()16 void WindowTestsF32::test_welch_f32()
17 {
18         float32_t *outp=output.ptr();
19 
20         arm_welch_f32(outp,output.nbSamples());
21 
22         ASSERT_EMPTY_TAIL(output);
23 
24         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
25 
26         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
27 
28 }
test_bartlett_f32()29 void WindowTestsF32::test_bartlett_f32()
30 {
31         float32_t *outp=output.ptr();
32 
33         arm_bartlett_f32(outp,output.nbSamples());
34 
35         ASSERT_EMPTY_TAIL(output);
36 
37         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
38 
39         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
40 
41 }
test_hamming_f32()42 void WindowTestsF32::test_hamming_f32()
43 {
44         float32_t *outp=output.ptr();
45 
46         arm_hamming_f32(outp,output.nbSamples());
47 
48         ASSERT_EMPTY_TAIL(output);
49 
50         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
51 
52         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
53 
54 }
test_hanning_f32()55 void WindowTestsF32::test_hanning_f32()
56 {
57         float32_t *outp=output.ptr();
58 
59         arm_hanning_f32(outp,output.nbSamples());
60 
61         ASSERT_EMPTY_TAIL(output);
62 
63         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
64 
65         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
66 
67 }
test_nuttall3_f32()68 void WindowTestsF32::test_nuttall3_f32()
69 {
70         float32_t *outp=output.ptr();
71 
72         arm_nuttall3_f32(outp,output.nbSamples());
73 
74         ASSERT_EMPTY_TAIL(output);
75 
76         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
77 
78         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
79 
80 }
test_nuttall4_f32()81 void WindowTestsF32::test_nuttall4_f32()
82 {
83         float32_t *outp=output.ptr();
84 
85         arm_nuttall4_f32(outp,output.nbSamples());
86 
87         ASSERT_EMPTY_TAIL(output);
88 
89         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
90 
91         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
92 
93 }
test_nuttall3a_f32()94 void WindowTestsF32::test_nuttall3a_f32()
95 {
96         float32_t *outp=output.ptr();
97 
98         arm_nuttall3a_f32(outp,output.nbSamples());
99 
100         ASSERT_EMPTY_TAIL(output);
101 
102         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
103 
104         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
105 
106 }
test_nuttall3b_f32()107 void WindowTestsF32::test_nuttall3b_f32()
108 {
109         float32_t *outp=output.ptr();
110 
111         arm_nuttall3b_f32(outp,output.nbSamples());
112 
113         ASSERT_EMPTY_TAIL(output);
114 
115         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
116 
117         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
118 
119 }
test_nuttall4a_f32()120 void WindowTestsF32::test_nuttall4a_f32()
121 {
122         float32_t *outp=output.ptr();
123 
124         arm_nuttall4a_f32(outp,output.nbSamples());
125 
126         ASSERT_EMPTY_TAIL(output);
127 
128         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
129 
130         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
131 
132 }
test_blackman_harris_92db_f32()133 void WindowTestsF32::test_blackman_harris_92db_f32()
134 {
135         float32_t *outp=output.ptr();
136 
137         arm_blackman_harris_92db_f32(outp,output.nbSamples());
138 
139         ASSERT_EMPTY_TAIL(output);
140 
141         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
142 
143         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
144 
145 }
test_nuttall4b_f32()146 void WindowTestsF32::test_nuttall4b_f32()
147 {
148         float32_t *outp=output.ptr();
149 
150         arm_nuttall4b_f32(outp,output.nbSamples());
151 
152         ASSERT_EMPTY_TAIL(output);
153 
154         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
155 
156         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
157 
158 }
test_nuttall4c_f32()159 void WindowTestsF32::test_nuttall4c_f32()
160 {
161         float32_t *outp=output.ptr();
162 
163         arm_nuttall4c_f32(outp,output.nbSamples());
164 
165         ASSERT_EMPTY_TAIL(output);
166 
167         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
168 
169         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
170 
171 }
test_hft90d_f32()172 void WindowTestsF32::test_hft90d_f32()
173 {
174         float32_t *outp=output.ptr();
175 
176         arm_hft90d_f32(outp,output.nbSamples());
177 
178         ASSERT_EMPTY_TAIL(output);
179 
180         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
181 
182         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
183 
184 }
test_hft95_f32()185 void WindowTestsF32::test_hft95_f32()
186 {
187         float32_t *outp=output.ptr();
188 
189         arm_hft95_f32(outp,output.nbSamples());
190 
191         ASSERT_EMPTY_TAIL(output);
192 
193         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
194 
195         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
196 
197 }
test_hft116d_f32()198 void WindowTestsF32::test_hft116d_f32()
199 {
200         float32_t *outp=output.ptr();
201 
202         arm_hft116d_f32(outp,output.nbSamples());
203 
204         ASSERT_EMPTY_TAIL(output);
205 
206         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
207 
208         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
209 
210 }
test_hft144d_f32()211 void WindowTestsF32::test_hft144d_f32()
212 {
213         float32_t *outp=output.ptr();
214 
215         arm_hft144d_f32(outp,output.nbSamples());
216 
217         ASSERT_EMPTY_TAIL(output);
218 
219         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
220 
221         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
222 
223 }
test_hft169d_f32()224 void WindowTestsF32::test_hft169d_f32()
225 {
226         float32_t *outp=output.ptr();
227 
228         arm_hft169d_f32(outp,output.nbSamples());
229 
230         ASSERT_EMPTY_TAIL(output);
231 
232         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
233 
234         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
235 
236 }
test_hft196d_f32()237 void WindowTestsF32::test_hft196d_f32()
238 {
239         float32_t *outp=output.ptr();
240 
241         arm_hft196d_f32(outp,output.nbSamples());
242 
243         ASSERT_EMPTY_TAIL(output);
244 
245         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
246 
247         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
248 
249 }
test_hft223d_f32()250 void WindowTestsF32::test_hft223d_f32()
251 {
252         float32_t *outp=output.ptr();
253 
254         arm_hft223d_f32(outp,output.nbSamples());
255 
256         ASSERT_EMPTY_TAIL(output);
257 
258         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
259 
260         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
261 
262 }
test_hft248d_f32()263 void WindowTestsF32::test_hft248d_f32()
264 {
265         float32_t *outp=output.ptr();
266 
267         arm_hft248d_f32(outp,output.nbSamples());
268 
269         ASSERT_EMPTY_TAIL(output);
270 
271         ASSERT_SNR(output,ref,(float32_t)SNR_THRESHOLD);
272 
273         ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
274 
275 }
276 
277 
setUp(Testing::testID_t id,std::vector<Testing::param_t> & params,Client::PatternMgr * mgr)278     void WindowTestsF32::setUp(Testing::testID_t id,std::vector<Testing::param_t>& params,Client::PatternMgr *mgr)
279     {
280 
281        (void)params;
282 
283        Testing::nbSamples_t nb=MAX_NB_SAMPLES;
284 
285 
286        switch(id)
287        {
288 
289           case WindowTestsF32::TEST_WELCH_F32_1:
290             ref.reload(WindowTestsF32::REF1_WELCH_F32_ID,mgr,nb);
291           break;
292 
293           case WindowTestsF32::TEST_BARTLETT_F32_2:
294             ref.reload(WindowTestsF32::REF2_BARTLETT_F32_ID,mgr,nb);
295           break;
296 
297           case WindowTestsF32::TEST_HAMMING_F32_3:
298             ref.reload(WindowTestsF32::REF3_HAMMING_F32_ID,mgr,nb);
299           break;
300 
301           case WindowTestsF32::TEST_HANNING_F32_4:
302             ref.reload(WindowTestsF32::REF4_HANNING_F32_ID,mgr,nb);
303           break;
304 
305           case WindowTestsF32::TEST_NUTTALL3_F32_5:
306             ref.reload(WindowTestsF32::REF5_NUTTALL3_F32_ID,mgr,nb);
307           break;
308 
309           case WindowTestsF32::TEST_NUTTALL4_F32_6:
310             ref.reload(WindowTestsF32::REF6_NUTTALL4_F32_ID,mgr,nb);
311           break;
312 
313           case WindowTestsF32::TEST_NUTTALL3A_F32_7:
314             ref.reload(WindowTestsF32::REF7_NUTTALL3A_F32_ID,mgr,nb);
315           break;
316 
317           case WindowTestsF32::TEST_NUTTALL3B_F32_8:
318             ref.reload(WindowTestsF32::REF8_NUTTALL3B_F32_ID,mgr,nb);
319           break;
320 
321           case WindowTestsF32::TEST_NUTTALL4A_F32_9:
322             ref.reload(WindowTestsF32::REF9_NUTTALL4A_F32_ID,mgr,nb);
323           break;
324 
325           case WindowTestsF32::TEST_BLACKMAN_HARRIS_92DB_F32_10:
326             ref.reload(WindowTestsF32::REF10_BLACKMAN_HARRIS_92DB_F32_ID,mgr,nb);
327           break;
328 
329           case WindowTestsF32::TEST_NUTTALL4B_F32_11:
330             ref.reload(WindowTestsF32::REF11_NUTTALL4B_F32_ID,mgr,nb);
331           break;
332 
333           case WindowTestsF32::TEST_NUTTALL4C_F32_12:
334             ref.reload(WindowTestsF32::REF12_NUTTALL4C_F32_ID,mgr,nb);
335           break;
336 
337           case WindowTestsF32::TEST_HFT90D_F32_13:
338             ref.reload(WindowTestsF32::REF13_HFT90D_F32_ID,mgr,nb);
339           break;
340 
341           case WindowTestsF32::TEST_HFT95_F32_14:
342             ref.reload(WindowTestsF32::REF14_HFT95_F32_ID,mgr,nb);
343           break;
344 
345           case WindowTestsF32::TEST_HFT116D_F32_15:
346             ref.reload(WindowTestsF32::REF15_HFT116D_F32_ID,mgr,nb);
347           break;
348 
349           case WindowTestsF32::TEST_HFT144D_F32_16:
350             ref.reload(WindowTestsF32::REF16_HFT144D_F32_ID,mgr,nb);
351           break;
352 
353           case WindowTestsF32::TEST_HFT169D_F32_17:
354             ref.reload(WindowTestsF32::REF17_HFT169D_F32_ID,mgr,nb);
355           break;
356 
357           case WindowTestsF32::TEST_HFT196D_F32_18:
358             ref.reload(WindowTestsF32::REF18_HFT196D_F32_ID,mgr,nb);
359           break;
360 
361           case WindowTestsF32::TEST_HFT223D_F32_19:
362             ref.reload(WindowTestsF32::REF19_HFT223D_F32_ID,mgr,nb);
363           break;
364 
365           case WindowTestsF32::TEST_HFT248D_F32_20:
366             ref.reload(WindowTestsF32::REF20_HFT248D_F32_ID,mgr,nb);
367           break;
368 
369        }
370 
371 
372 
373 
374        output.create(ref.nbSamples(),WindowTestsF32::OUT_F32_ID,mgr);
375     }
376 
tearDown(Testing::testID_t id,Client::PatternMgr * mgr)377     void WindowTestsF32::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
378     {
379         (void)id;
380         output.dump(mgr);
381     }
382