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