1 #include "WindowTestsF64.h"
2 #include <stdio.h>
3 #include "Error.h"
4
5 #define SNR_THRESHOLD 250
6
7 /*
8
9 Reference patterns are generated with
10 a double precision computation.
11
12 */
13 #define REL_ERROR (3.0e-15)
14 #define ABS_ERROR (3.0e-15)
15
test_welch_f64()16 void WindowTestsF64::test_welch_f64()
17 {
18 float64_t *outp=output.ptr();
19
20 arm_welch_f64(outp,output.nbSamples());
21
22 ASSERT_EMPTY_TAIL(output);
23
24 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
25
26 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
27
28 }
test_bartlett_f64()29 void WindowTestsF64::test_bartlett_f64()
30 {
31 float64_t *outp=output.ptr();
32
33 arm_bartlett_f64(outp,output.nbSamples());
34
35 ASSERT_EMPTY_TAIL(output);
36
37 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
38
39 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
40
41 }
test_hamming_f64()42 void WindowTestsF64::test_hamming_f64()
43 {
44 float64_t *outp=output.ptr();
45
46 arm_hamming_f64(outp,output.nbSamples());
47
48 ASSERT_EMPTY_TAIL(output);
49
50 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
51
52 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
53
54 }
test_hanning_f64()55 void WindowTestsF64::test_hanning_f64()
56 {
57 float64_t *outp=output.ptr();
58
59 arm_hanning_f64(outp,output.nbSamples());
60
61 ASSERT_EMPTY_TAIL(output);
62
63 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
64
65 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
66
67 }
test_nuttall3_f64()68 void WindowTestsF64::test_nuttall3_f64()
69 {
70 float64_t *outp=output.ptr();
71
72 arm_nuttall3_f64(outp,output.nbSamples());
73
74 ASSERT_EMPTY_TAIL(output);
75
76 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
77
78 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
79
80 }
test_nuttall4_f64()81 void WindowTestsF64::test_nuttall4_f64()
82 {
83 float64_t *outp=output.ptr();
84
85 arm_nuttall4_f64(outp,output.nbSamples());
86
87 ASSERT_EMPTY_TAIL(output);
88
89 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
90
91 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
92
93 }
test_nuttall3a_f64()94 void WindowTestsF64::test_nuttall3a_f64()
95 {
96 float64_t *outp=output.ptr();
97
98 arm_nuttall3a_f64(outp,output.nbSamples());
99
100 ASSERT_EMPTY_TAIL(output);
101
102 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
103
104 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
105
106 }
test_nuttall3b_f64()107 void WindowTestsF64::test_nuttall3b_f64()
108 {
109 float64_t *outp=output.ptr();
110
111 arm_nuttall3b_f64(outp,output.nbSamples());
112
113 ASSERT_EMPTY_TAIL(output);
114
115 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
116
117 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
118
119 }
test_nuttall4a_f64()120 void WindowTestsF64::test_nuttall4a_f64()
121 {
122 float64_t *outp=output.ptr();
123
124 arm_nuttall4a_f64(outp,output.nbSamples());
125
126 ASSERT_EMPTY_TAIL(output);
127
128 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
129
130 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
131
132 }
test_blackman_harris_92db_f64()133 void WindowTestsF64::test_blackman_harris_92db_f64()
134 {
135 float64_t *outp=output.ptr();
136
137 arm_blackman_harris_92db_f64(outp,output.nbSamples());
138
139 ASSERT_EMPTY_TAIL(output);
140
141 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
142
143 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
144
145 }
test_nuttall4b_f64()146 void WindowTestsF64::test_nuttall4b_f64()
147 {
148 float64_t *outp=output.ptr();
149
150 arm_nuttall4b_f64(outp,output.nbSamples());
151
152 ASSERT_EMPTY_TAIL(output);
153
154 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
155
156 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
157
158 }
test_nuttall4c_f64()159 void WindowTestsF64::test_nuttall4c_f64()
160 {
161 float64_t *outp=output.ptr();
162
163 arm_nuttall4c_f64(outp,output.nbSamples());
164
165 ASSERT_EMPTY_TAIL(output);
166
167 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
168
169 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
170
171 }
test_hft90d_f64()172 void WindowTestsF64::test_hft90d_f64()
173 {
174 float64_t *outp=output.ptr();
175
176 arm_hft90d_f64(outp,output.nbSamples());
177
178 ASSERT_EMPTY_TAIL(output);
179
180 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
181
182 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
183
184 }
test_hft95_f64()185 void WindowTestsF64::test_hft95_f64()
186 {
187 float64_t *outp=output.ptr();
188
189 arm_hft95_f64(outp,output.nbSamples());
190
191 ASSERT_EMPTY_TAIL(output);
192
193 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
194
195 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
196
197 }
test_hft116d_f64()198 void WindowTestsF64::test_hft116d_f64()
199 {
200 float64_t *outp=output.ptr();
201
202 arm_hft116d_f64(outp,output.nbSamples());
203
204 ASSERT_EMPTY_TAIL(output);
205
206 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
207
208 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
209
210 }
test_hft144d_f64()211 void WindowTestsF64::test_hft144d_f64()
212 {
213 float64_t *outp=output.ptr();
214
215 arm_hft144d_f64(outp,output.nbSamples());
216
217 ASSERT_EMPTY_TAIL(output);
218
219 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
220
221 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
222
223 }
test_hft169d_f64()224 void WindowTestsF64::test_hft169d_f64()
225 {
226 float64_t *outp=output.ptr();
227
228 arm_hft169d_f64(outp,output.nbSamples());
229
230 ASSERT_EMPTY_TAIL(output);
231
232 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
233
234 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
235
236 }
test_hft196d_f64()237 void WindowTestsF64::test_hft196d_f64()
238 {
239 float64_t *outp=output.ptr();
240
241 arm_hft196d_f64(outp,output.nbSamples());
242
243 ASSERT_EMPTY_TAIL(output);
244
245 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
246
247 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
248
249 }
test_hft223d_f64()250 void WindowTestsF64::test_hft223d_f64()
251 {
252 float64_t *outp=output.ptr();
253
254 arm_hft223d_f64(outp,output.nbSamples());
255
256 ASSERT_EMPTY_TAIL(output);
257
258 ASSERT_SNR(output,ref,(float64_t)SNR_THRESHOLD);
259
260 ASSERT_CLOSE_ERROR(output,ref,ABS_ERROR,REL_ERROR);
261
262 }
test_hft248d_f64()263 void WindowTestsF64::test_hft248d_f64()
264 {
265 float64_t *outp=output.ptr();
266
267 arm_hft248d_f64(outp,output.nbSamples());
268
269 ASSERT_EMPTY_TAIL(output);
270
271 ASSERT_SNR(output,ref,(float64_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 WindowTestsF64::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 WindowTestsF64::TEST_WELCH_F64_1:
290 ref.reload(WindowTestsF64::REF1_WELCH_F64_ID,mgr,nb);
291 break;
292
293 case WindowTestsF64::TEST_BARTLETT_F64_2:
294 ref.reload(WindowTestsF64::REF2_BARTLETT_F64_ID,mgr,nb);
295 break;
296
297 case WindowTestsF64::TEST_HAMMING_F64_3:
298 ref.reload(WindowTestsF64::REF3_HAMMING_F64_ID,mgr,nb);
299 break;
300
301 case WindowTestsF64::TEST_HANNING_F64_4:
302 ref.reload(WindowTestsF64::REF4_HANNING_F64_ID,mgr,nb);
303 break;
304
305 case WindowTestsF64::TEST_NUTTALL3_F64_5:
306 ref.reload(WindowTestsF64::REF5_NUTTALL3_F64_ID,mgr,nb);
307 break;
308
309 case WindowTestsF64::TEST_NUTTALL4_F64_6:
310 ref.reload(WindowTestsF64::REF6_NUTTALL4_F64_ID,mgr,nb);
311 break;
312
313 case WindowTestsF64::TEST_NUTTALL3A_F64_7:
314 ref.reload(WindowTestsF64::REF7_NUTTALL3A_F64_ID,mgr,nb);
315 break;
316
317 case WindowTestsF64::TEST_NUTTALL3B_F64_8:
318 ref.reload(WindowTestsF64::REF8_NUTTALL3B_F64_ID,mgr,nb);
319 break;
320
321 case WindowTestsF64::TEST_NUTTALL4A_F64_9:
322 ref.reload(WindowTestsF64::REF9_NUTTALL4A_F64_ID,mgr,nb);
323 break;
324
325 case WindowTestsF64::TEST_BLACKMAN_HARRIS_92DB_F64_10:
326 ref.reload(WindowTestsF64::REF10_BLACKMAN_HARRIS_92DB_F64_ID,mgr,nb);
327 break;
328
329 case WindowTestsF64::TEST_NUTTALL4B_F64_11:
330 ref.reload(WindowTestsF64::REF11_NUTTALL4B_F64_ID,mgr,nb);
331 break;
332
333 case WindowTestsF64::TEST_NUTTALL4C_F64_12:
334 ref.reload(WindowTestsF64::REF12_NUTTALL4C_F64_ID,mgr,nb);
335 break;
336
337 case WindowTestsF64::TEST_HFT90D_F64_13:
338 ref.reload(WindowTestsF64::REF13_HFT90D_F64_ID,mgr,nb);
339 break;
340
341 case WindowTestsF64::TEST_HFT95_F64_14:
342 ref.reload(WindowTestsF64::REF14_HFT95_F64_ID,mgr,nb);
343 break;
344
345 case WindowTestsF64::TEST_HFT116D_F64_15:
346 ref.reload(WindowTestsF64::REF15_HFT116D_F64_ID,mgr,nb);
347 break;
348
349 case WindowTestsF64::TEST_HFT144D_F64_16:
350 ref.reload(WindowTestsF64::REF16_HFT144D_F64_ID,mgr,nb);
351 break;
352
353 case WindowTestsF64::TEST_HFT169D_F64_17:
354 ref.reload(WindowTestsF64::REF17_HFT169D_F64_ID,mgr,nb);
355 break;
356
357 case WindowTestsF64::TEST_HFT196D_F64_18:
358 ref.reload(WindowTestsF64::REF18_HFT196D_F64_ID,mgr,nb);
359 break;
360
361 case WindowTestsF64::TEST_HFT223D_F64_19:
362 ref.reload(WindowTestsF64::REF19_HFT223D_F64_ID,mgr,nb);
363 break;
364
365 case WindowTestsF64::TEST_HFT248D_F64_20:
366 ref.reload(WindowTestsF64::REF20_HFT248D_F64_ID,mgr,nb);
367 break;
368
369 }
370
371
372
373
374 output.create(ref.nbSamples(),WindowTestsF64::OUT_F64_ID,mgr);
375 }
376
tearDown(Testing::testID_t id,Client::PatternMgr * mgr)377 void WindowTestsF64::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
378 {
379 (void)id;
380 output.dump(mgr);
381 }
382