1 #include "StatsTestsQ15.h"
2 #include <stdio.h>
3 #include "Error.h"
4 #include "Test.h"
5 
6 //#include <cstdio>
7 
8 #define SNR_THRESHOLD 50
9 #define SNR_THRESHOLD_MSE 50
10 
11 /*
12 
13 Reference patterns are generated with
14 a double precision computation.
15 
16 */
17 #define ABS_ERROR_Q15 ((q15_t)100)
18 #define ABS_ERROR_Q15_MSE ((q15_t)100)
19 
20 #define ABS_ERROR_Q63 (1<<17)
21 
test_max_q15()22     void StatsTestsQ15::test_max_q15()
23     {
24         const q15_t *inp  = inputA.ptr();
25 
26         q15_t result;
27         uint32_t  indexval;
28 
29         q15_t *refp  = ref.ptr();
30         int16_t  *refind = maxIndexes.ptr();
31 
32         q15_t *outp  = output.ptr();
33         int16_t  *ind    = index.ptr();
34 
35         arm_max_q15(inp,
36               inputA.nbSamples(),
37               &result,
38               &indexval);
39 
40         outp[0] = result;
41         ind[0] = indexval;
42 
43         ASSERT_EQ(result,refp[this->refOffset]);
44         ASSERT_EQ((int16_t)indexval,refind[this->refOffset]);
45 
46     }
47 
test_max_no_idx_q15()48     void StatsTestsQ15::test_max_no_idx_q15()
49     {
50         const q15_t *inp  = inputA.ptr();
51 
52         q15_t result;
53 
54         q15_t *refp  = ref.ptr();
55 
56         q15_t *outp  = output.ptr();
57 
58         arm_max_no_idx_q15(inp,
59               inputA.nbSamples(),
60               &result);
61 
62         outp[0] = result;
63 
64         ASSERT_EQ(result,refp[this->refOffset]);
65 
66     }
67 
test_absmax_no_idx_q15()68     void StatsTestsQ15::test_absmax_no_idx_q15()
69     {
70         const q15_t *inp  = inputA.ptr();
71 
72         q15_t result;
73 
74         q15_t *refp  = ref.ptr();
75 
76         q15_t *outp  = output.ptr();
77 
78         arm_absmax_no_idx_q15(inp,
79               inputA.nbSamples(),
80               &result);
81 
82         outp[0] = result;
83 
84         ASSERT_EQ(result,refp[this->refOffset]);
85 
86     }
87 
test_absmax_q15()88     void StatsTestsQ15::test_absmax_q15()
89     {
90         const q15_t *inp  = inputA.ptr();
91 
92         q15_t result;
93         uint32_t  indexval;
94 
95         q15_t *refp  = ref.ptr();
96         int16_t  *refind = maxIndexes.ptr();
97 
98         q15_t *outp  = output.ptr();
99         int16_t  *ind    = index.ptr();
100 
101         arm_absmax_q15(inp,
102               inputA.nbSamples(),
103               &result,
104               &indexval);
105 
106         outp[0] = result;
107         ind[0] = indexval;
108 
109         ASSERT_EQ(result,refp[this->refOffset]);
110         ASSERT_EQ((int16_t)indexval,refind[this->refOffset]);
111 
112     }
113 
test_min_q15()114     void StatsTestsQ15::test_min_q15()
115     {
116         const q15_t *inp  = inputA.ptr();
117 
118         q15_t result;
119         uint32_t  indexval;
120 
121         q15_t *refp  = ref.ptr();
122         int16_t  *refind = minIndexes.ptr();
123 
124         q15_t *outp  = output.ptr();
125         int16_t  *ind    = index.ptr();
126 
127         arm_min_q15(inp,
128               inputA.nbSamples(),
129               &result,
130               &indexval);
131 
132         outp[0] = result;
133         ind[0] = indexval;
134 
135         ASSERT_EQ(result,refp[this->refOffset]);
136         ASSERT_EQ((int16_t)indexval,refind[this->refOffset]);
137 
138     }
139 
test_min_no_idx_q15()140     void StatsTestsQ15::test_min_no_idx_q15()
141     {
142         const q15_t *inp  = inputA.ptr();
143 
144         q15_t result;
145 
146         q15_t *refp  = ref.ptr();
147 
148         q15_t *outp  = output.ptr();
149 
150         arm_min_no_idx_q15(inp,
151               inputA.nbSamples(),
152               &result);
153 
154         outp[0] = result;
155 
156         ASSERT_EQ(result,refp[this->refOffset]);
157 
158     }
159 
test_absmin_no_idx_q15()160     void StatsTestsQ15::test_absmin_no_idx_q15()
161     {
162         const q15_t *inp  = inputA.ptr();
163 
164         q15_t result;
165 
166         q15_t *refp  = ref.ptr();
167 
168         q15_t *outp  = output.ptr();
169 
170         arm_absmin_no_idx_q15(inp,
171               inputA.nbSamples(),
172               &result);
173 
174         outp[0] = result;
175 
176         ASSERT_EQ(result,refp[this->refOffset]);
177 
178     }
179 
test_absmin_q15()180     void StatsTestsQ15::test_absmin_q15()
181     {
182         const q15_t *inp  = inputA.ptr();
183 
184         q15_t result;
185         uint32_t  indexval;
186 
187         q15_t *refp  = ref.ptr();
188         int16_t  *refind = minIndexes.ptr();
189 
190         q15_t *outp  = output.ptr();
191         int16_t  *ind    = index.ptr();
192 
193         arm_absmin_q15(inp,
194               inputA.nbSamples(),
195               &result,
196               &indexval);
197 
198         outp[0] = result;
199         ind[0] = indexval;
200 
201         ASSERT_EQ(result,refp[this->refOffset]);
202         ASSERT_EQ((int16_t)indexval,refind[this->refOffset]);
203 
204     }
205 
test_mean_q15()206     void StatsTestsQ15::test_mean_q15()
207     {
208         const q15_t *inp  = inputA.ptr();
209 
210         q15_t result;
211 
212         q15_t *refp  = ref.ptr();
213 
214         q15_t *outp  = output.ptr();
215 
216         arm_mean_q15(inp,
217               inputA.nbSamples(),
218               &result);
219 
220         outp[0] = result;
221 
222         ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD);
223 
224         ASSERT_NEAR_EQ(result,refp[this->refOffset],ABS_ERROR_Q15);
225 
226     }
227 
test_power_q15()228     void StatsTestsQ15::test_power_q15()
229     {
230         const q15_t *inp  = inputA.ptr();
231 
232         q63_t result;
233 
234         q63_t *refp  = refPower.ptr();
235 
236         q63_t *outp  = outputPower.ptr();
237 
238         arm_power_q15(inp,
239               inputA.nbSamples(),
240               &result);
241 
242         outp[0] = result;
243 
244         ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD);
245 
246         ASSERT_NEAR_EQ(result,refp[this->refOffset],(q63_t)ABS_ERROR_Q63);
247 
248     }
249 
test_rms_q15()250     void StatsTestsQ15::test_rms_q15()
251     {
252         const q15_t *inp  = inputA.ptr();
253 
254         q15_t result;
255 
256         q15_t *refp  = ref.ptr();
257 
258         q15_t *outp  = output.ptr();
259 
260         arm_rms_q15(inp,
261               inputA.nbSamples(),
262               &result);
263 
264         outp[0] = result;
265 
266         ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD);
267 
268         ASSERT_NEAR_EQ(result,refp[this->refOffset],ABS_ERROR_Q15);
269 
270     }
271 
test_std_q15()272     void StatsTestsQ15::test_std_q15()
273     {
274         const q15_t *inp  = inputA.ptr();
275 
276         q15_t result;
277 
278         q15_t *refp  = ref.ptr();
279 
280         q15_t *outp  = output.ptr();
281 
282         arm_std_q15(inp,
283               inputA.nbSamples(),
284               &result);
285 
286         outp[0] = result;
287 
288         ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD);
289 
290         ASSERT_NEAR_EQ(result,refp[this->refOffset],ABS_ERROR_Q15);
291 
292     }
293 
test_var_q15()294     void StatsTestsQ15::test_var_q15()
295     {
296         const q15_t *inp  = inputA.ptr();
297 
298         q15_t result;
299 
300         q15_t *refp  = ref.ptr();
301 
302         q15_t *outp  = output.ptr();
303 
304         arm_var_q15(inp,
305               inputA.nbSamples(),
306               &result);
307 
308         outp[0] = result;
309 
310         ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD);
311 
312         ASSERT_NEAR_EQ(result,refp[this->refOffset],ABS_ERROR_Q15);
313 
314     }
315 
316 
test_mse_q15()317     void StatsTestsQ15::test_mse_q15()
318     {
319         const q15_t *inpA  = inputA.ptr();
320         const q15_t *inpB  = inputB.ptr();
321 
322         q15_t result;
323 
324         q15_t *refp  = ref.ptr();
325 
326         q15_t *outp  = output.ptr();
327 
328         arm_mse_q15(inpA,inpB,
329               inputA.nbSamples(),
330               &result);
331 
332         outp[0] = result;
333 
334         ASSERT_SNR(result,refp[this->refOffset],(float32_t)SNR_THRESHOLD_MSE);
335 
336         ASSERT_NEAR_EQ(result,refp[this->refOffset],(q15_t)ABS_ERROR_Q15_MSE);
337 
338     }
339 
340 
setUp(Testing::testID_t id,std::vector<Testing::param_t> & paramsArgs,Client::PatternMgr * mgr)341     void StatsTestsQ15::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
342     {
343         (void)paramsArgs;
344         switch(id)
345         {
346             case StatsTestsQ15::TEST_MAX_Q15_1:
347             {
348                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,7);
349 
350                maxIndexes.reload(StatsTestsQ15::MAXINDEXES_S16_ID,mgr);
351                ref.reload(StatsTestsQ15::MAXVALS_Q15_ID,mgr);
352 
353                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
354                index.create(1,StatsTestsQ15::OUT_S16_ID,mgr);
355 
356                refOffset = 0;
357             }
358             break;
359 
360             case StatsTestsQ15::TEST_MAX_Q15_2:
361             {
362                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,16);
363 
364                maxIndexes.reload(StatsTestsQ15::MAXINDEXES_S16_ID,mgr);
365                ref.reload(StatsTestsQ15::MAXVALS_Q15_ID,mgr);
366 
367                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
368                index.create(1,StatsTestsQ15::OUT_S16_ID,mgr);
369 
370                refOffset = 1;
371             }
372             break;
373 
374             case StatsTestsQ15::TEST_MAX_Q15_3:
375             {
376                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,23);
377 
378                maxIndexes.reload(StatsTestsQ15::MAXINDEXES_S16_ID,mgr);
379                ref.reload(StatsTestsQ15::MAXVALS_Q15_ID,mgr);
380 
381                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
382                index.create(1,StatsTestsQ15::OUT_S16_ID,mgr);
383 
384                refOffset = 2;
385             }
386             break;
387 
388             case StatsTestsQ15::TEST_MEAN_Q15_4:
389             {
390                inputA.reload(StatsTestsQ15::INPUT2_Q15_ID,mgr,7);
391 
392                ref.reload(StatsTestsQ15::MEANVALS_Q15_ID,mgr);
393 
394                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
395 
396                refOffset = 0;
397             }
398             break;
399 
400             case StatsTestsQ15::TEST_MEAN_Q15_5:
401             {
402                inputA.reload(StatsTestsQ15::INPUT2_Q15_ID,mgr,16);
403 
404                ref.reload(StatsTestsQ15::MEANVALS_Q15_ID,mgr);
405 
406                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
407 
408                refOffset = 1;
409             }
410             break;
411 
412             case StatsTestsQ15::TEST_MEAN_Q15_6:
413             {
414                inputA.reload(StatsTestsQ15::INPUT2_Q15_ID,mgr,23);
415 
416                ref.reload(StatsTestsQ15::MEANVALS_Q15_ID,mgr);
417 
418                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
419 
420                refOffset = 2;
421             }
422             break;
423 
424             case StatsTestsQ15::TEST_MIN_Q15_7:
425             {
426                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,7);
427 
428                minIndexes.reload(StatsTestsQ15::MININDEXES_S16_ID,mgr);
429                ref.reload(StatsTestsQ15::MINVALS_Q15_ID,mgr);
430 
431                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
432                index.create(1,StatsTestsQ15::OUT_S16_ID,mgr);
433 
434                refOffset = 0;
435             }
436             break;
437 
438             case StatsTestsQ15::TEST_MIN_Q15_8:
439             {
440                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,16);
441 
442                minIndexes.reload(StatsTestsQ15::MININDEXES_S16_ID,mgr);
443                ref.reload(StatsTestsQ15::MINVALS_Q15_ID,mgr);
444 
445                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
446                index.create(1,StatsTestsQ15::OUT_S16_ID,mgr);
447 
448                refOffset = 1;
449             }
450             break;
451 
452             case StatsTestsQ15::TEST_MIN_Q15_9:
453             {
454                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,23);
455 
456                minIndexes.reload(StatsTestsQ15::MININDEXES_S16_ID,mgr);
457                ref.reload(StatsTestsQ15::MINVALS_Q15_ID,mgr);
458 
459                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
460                index.create(1,StatsTestsQ15::OUT_S16_ID,mgr);
461 
462                refOffset = 2;
463             }
464             break;
465 
466             case StatsTestsQ15::TEST_POWER_Q15_10:
467             {
468                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,7);
469 
470                refPower.reload(StatsTestsQ15::POWERVALS_Q63_ID,mgr);
471 
472                outputPower.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
473 
474                refOffset = 0;
475             }
476             break;
477 
478             case StatsTestsQ15::TEST_POWER_Q15_11:
479             {
480                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,16);
481 
482                refPower.reload(StatsTestsQ15::POWERVALS_Q63_ID,mgr);
483 
484                outputPower.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
485 
486                refOffset = 1;
487             }
488             break;
489 
490             case StatsTestsQ15::TEST_POWER_Q15_12:
491             {
492                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,23);
493 
494                refPower.reload(StatsTestsQ15::POWERVALS_Q63_ID,mgr);
495 
496                outputPower.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
497 
498                refOffset = 2;
499             }
500             break;
501 
502             case StatsTestsQ15::TEST_RMS_Q15_13:
503             {
504                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,7);
505 
506                ref.reload(StatsTestsQ15::RMSVALS_Q15_ID,mgr);
507 
508                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
509 
510                refOffset = 0;
511             }
512             break;
513 
514             case StatsTestsQ15::TEST_RMS_Q15_14:
515             {
516                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,16);
517 
518                ref.reload(StatsTestsQ15::RMSVALS_Q15_ID,mgr);
519 
520                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
521 
522                refOffset = 1;
523             }
524             break;
525 
526             case StatsTestsQ15::TEST_RMS_Q15_15:
527             {
528                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,23);
529 
530                ref.reload(StatsTestsQ15::RMSVALS_Q15_ID,mgr);
531 
532                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
533 
534                refOffset = 2;
535             }
536             break;
537 
538             case StatsTestsQ15::TEST_STD_Q15_16:
539             {
540                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,7);
541 
542                ref.reload(StatsTestsQ15::STDVALS_Q15_ID,mgr);
543 
544                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
545 
546                refOffset = 0;
547             }
548             break;
549 
550             case StatsTestsQ15::TEST_STD_Q15_17:
551             {
552                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,16);
553 
554                ref.reload(StatsTestsQ15::STDVALS_Q15_ID,mgr);
555 
556                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
557 
558                refOffset = 1;
559             }
560             break;
561 
562             case StatsTestsQ15::TEST_STD_Q15_18:
563             {
564                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,23);
565 
566                ref.reload(StatsTestsQ15::STDVALS_Q15_ID,mgr);
567 
568                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
569 
570                refOffset = 2;
571             }
572             break;
573 
574             case StatsTestsQ15::TEST_VAR_Q15_19:
575             {
576                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,7);
577 
578                ref.reload(StatsTestsQ15::VARVALS_Q15_ID,mgr);
579 
580                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
581 
582                refOffset = 0;
583             }
584             break;
585 
586             case StatsTestsQ15::TEST_VAR_Q15_20:
587             {
588                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,16);
589 
590                ref.reload(StatsTestsQ15::VARVALS_Q15_ID,mgr);
591 
592                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
593 
594                refOffset = 1;
595             }
596             break;
597 
598             case StatsTestsQ15::TEST_VAR_Q15_21:
599             {
600                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,23);
601 
602                ref.reload(StatsTestsQ15::VARVALS_Q15_ID,mgr);
603 
604                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
605 
606                refOffset = 2;
607             }
608             break;
609 
610             case StatsTestsQ15::TEST_ABSMAX_Q15_22:
611             {
612                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,7);
613 
614                maxIndexes.reload(StatsTestsQ15::ABSMAXINDEXES_S16_ID,mgr);
615                ref.reload(StatsTestsQ15::ABSMAXVALS_Q15_ID,mgr);
616 
617                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
618                index.create(1,StatsTestsQ15::OUT_S16_ID,mgr);
619 
620                refOffset = 0;
621             }
622             break;
623 
624             case StatsTestsQ15::TEST_ABSMAX_Q15_23:
625             {
626                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,16);
627 
628                maxIndexes.reload(StatsTestsQ15::ABSMAXINDEXES_S16_ID,mgr);
629                ref.reload(StatsTestsQ15::ABSMAXVALS_Q15_ID,mgr);
630 
631                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
632                index.create(1,StatsTestsQ15::OUT_S16_ID,mgr);
633 
634                refOffset = 1;
635             }
636             break;
637 
638             case StatsTestsQ15::TEST_ABSMAX_Q15_24:
639             {
640                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,23);
641 
642                maxIndexes.reload(StatsTestsQ15::ABSMAXINDEXES_S16_ID,mgr);
643                ref.reload(StatsTestsQ15::ABSMAXVALS_Q15_ID,mgr);
644 
645                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
646                index.create(1,StatsTestsQ15::OUT_S16_ID,mgr);
647 
648                refOffset = 2;
649             }
650             break;
651 
652             case StatsTestsQ15::TEST_ABSMIN_Q15_25:
653             {
654                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,7);
655 
656                minIndexes.reload(StatsTestsQ15::ABSMININDEXES_S16_ID,mgr);
657                ref.reload(StatsTestsQ15::ABSMINVALS_Q15_ID,mgr);
658 
659                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
660                index.create(1,StatsTestsQ15::OUT_S16_ID,mgr);
661 
662                refOffset = 0;
663             }
664             break;
665 
666             case StatsTestsQ15::TEST_ABSMIN_Q15_26:
667             {
668                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,16);
669 
670                minIndexes.reload(StatsTestsQ15::ABSMININDEXES_S16_ID,mgr);
671                ref.reload(StatsTestsQ15::ABSMINVALS_Q15_ID,mgr);
672 
673                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
674                index.create(1,StatsTestsQ15::OUT_S16_ID,mgr);
675 
676                refOffset = 1;
677             }
678             break;
679 
680             case StatsTestsQ15::TEST_ABSMIN_Q15_27:
681             {
682                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,23);
683 
684                minIndexes.reload(StatsTestsQ15::ABSMININDEXES_S16_ID,mgr);
685                ref.reload(StatsTestsQ15::ABSMINVALS_Q15_ID,mgr);
686 
687                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
688                index.create(1,StatsTestsQ15::OUT_S16_ID,mgr);
689 
690                refOffset = 2;
691             }
692             break;
693 
694             case StatsTestsQ15::TEST_MAX_NO_IDX_Q15_28:
695             {
696                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,7);
697 
698                ref.reload(StatsTestsQ15::MAXVALS_Q15_ID,mgr);
699 
700                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
701 
702                refOffset = 0;
703             }
704             break;
705 
706             case StatsTestsQ15::TEST_MAX_NO_IDX_Q15_29:
707             {
708                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,16);
709 
710                ref.reload(StatsTestsQ15::MAXVALS_Q15_ID,mgr);
711 
712                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
713 
714                refOffset = 1;
715             }
716             break;
717 
718             case StatsTestsQ15::TEST_MAX_NO_IDX_Q15_30:
719             {
720                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,23);
721 
722                ref.reload(StatsTestsQ15::MAXVALS_Q15_ID,mgr);
723 
724                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
725 
726                refOffset = 2;
727             }
728             break;
729 
730             case StatsTestsQ15::TEST_MIN_NO_IDX_Q15_31:
731             {
732                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,7);
733 
734                ref.reload(StatsTestsQ15::MINVALS_Q15_ID,mgr);
735 
736                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
737 
738                refOffset = 0;
739             }
740             break;
741 
742             case StatsTestsQ15::TEST_MIN_NO_IDX_Q15_32:
743             {
744                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,16);
745 
746                ref.reload(StatsTestsQ15::MINVALS_Q15_ID,mgr);
747 
748                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
749 
750                refOffset = 1;
751             }
752             break;
753 
754             case StatsTestsQ15::TEST_MIN_NO_IDX_Q15_33:
755             {
756                inputA.reload(StatsTestsQ15::INPUT1_Q15_ID,mgr,23);
757 
758                ref.reload(StatsTestsQ15::MINVALS_Q15_ID,mgr);
759 
760                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
761 
762                refOffset = 2;
763             }
764             break;
765 
766             case StatsTestsQ15::TEST_ABSMAX_NO_IDX_Q15_34:
767             {
768                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,7);
769 
770                ref.reload(StatsTestsQ15::ABSMAXVALS_Q15_ID,mgr);
771 
772                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
773 
774                refOffset = 0;
775             }
776             break;
777 
778             case StatsTestsQ15::TEST_ABSMAX_NO_IDX_Q15_35:
779             {
780                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,16);
781 
782                ref.reload(StatsTestsQ15::ABSMAXVALS_Q15_ID,mgr);
783 
784                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
785 
786                refOffset = 1;
787             }
788             break;
789 
790             case StatsTestsQ15::TEST_ABSMAX_NO_IDX_Q15_36:
791             {
792                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,23);
793 
794                ref.reload(StatsTestsQ15::ABSMAXVALS_Q15_ID,mgr);
795 
796                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
797 
798                refOffset = 2;
799             }
800             break;
801 
802             case StatsTestsQ15::TEST_ABSMIN_NO_IDX_Q15_37:
803             {
804                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,7);
805 
806                ref.reload(StatsTestsQ15::ABSMINVALS_Q15_ID,mgr);
807 
808                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
809 
810                refOffset = 0;
811             }
812             break;
813 
814             case StatsTestsQ15::TEST_ABSMIN_NO_IDX_Q15_38:
815             {
816                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,16);
817 
818                ref.reload(StatsTestsQ15::ABSMINVALS_Q15_ID,mgr);
819 
820                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
821 
822                refOffset = 1;
823             }
824             break;
825 
826             case StatsTestsQ15::TEST_ABSMIN_NO_IDX_Q15_39:
827             {
828                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,23);
829 
830                ref.reload(StatsTestsQ15::ABSMINVALS_Q15_ID,mgr);
831 
832                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
833 
834                refOffset = 2;
835             }
836             break;
837 
838             case StatsTestsQ15::TEST_MSE_Q15_40:
839             {
840                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,7);
841                inputB.reload(StatsTestsQ15::INPUTNEW2_Q15_ID,mgr,7);
842 
843                ref.reload(StatsTestsQ15::MSE_Q15_ID,mgr);
844 
845                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
846 
847                refOffset = 0;
848             }
849             break;
850 
851             case StatsTestsQ15::TEST_MSE_Q15_41:
852             {
853                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,16);
854                inputB.reload(StatsTestsQ15::INPUTNEW2_Q15_ID,mgr,16);
855 
856                ref.reload(StatsTestsQ15::MSE_Q15_ID,mgr);
857 
858                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
859 
860                refOffset = 1;
861             }
862             break;
863 
864             case StatsTestsQ15::TEST_MSE_Q15_42:
865             {
866                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,23);
867                inputB.reload(StatsTestsQ15::INPUTNEW2_Q15_ID,mgr,23);
868 
869                ref.reload(StatsTestsQ15::MSE_Q15_ID,mgr);
870 
871                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
872 
873                refOffset = 2;
874             }
875             break;
876 
877             case StatsTestsQ15::TEST_MSE_Q15_43:
878             {
879                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr,100);
880                inputB.reload(StatsTestsQ15::INPUTNEW2_Q15_ID,mgr,100);
881 
882                ref.reload(StatsTestsQ15::MSE_Q15_ID,mgr);
883 
884                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
885 
886                refOffset = 3;
887             }
888             break;
889 
890             case StatsTestsQ15::TEST_ABSMAX_NO_IDX_Q15_44:
891             {
892                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr);
893 
894                ref.reload(StatsTestsQ15::ABSMAXVALS_Q15_ID,mgr);
895 
896                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
897 
898                refOffset = 3;
899             }
900             break;
901 
902             case StatsTestsQ15::TEST_ABSMAX_Q15_45:
903             {
904                inputA.reload(StatsTestsQ15::INPUTNEW1_Q15_ID,mgr);
905 
906                maxIndexes.reload(StatsTestsQ15::ABSMAXINDEXES_S16_ID,mgr);
907                ref.reload(StatsTestsQ15::ABSMAXVALS_Q15_ID,mgr);
908 
909                output.create(1,StatsTestsQ15::OUT_Q15_ID,mgr);
910                index.create(1,StatsTestsQ15::OUT_S16_ID,mgr);
911 
912                refOffset = 3;
913             }
914             break;
915 
916 
917         }
918 
919     }
920 
tearDown(Testing::testID_t id,Client::PatternMgr * mgr)921     void StatsTestsQ15::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
922     {
923       (void)id;
924       switch(id)
925       {
926             case StatsTestsQ15::TEST_MAX_Q15_1:
927             case StatsTestsQ15::TEST_MAX_Q15_2:
928             case StatsTestsQ15::TEST_MAX_Q15_3:
929             case StatsTestsQ15::TEST_MIN_Q15_7:
930             case StatsTestsQ15::TEST_MIN_Q15_8:
931             case StatsTestsQ15::TEST_MIN_Q15_9:
932               index.dump(mgr);
933               output.dump(mgr);
934             break;
935 
936             case TEST_POWER_Q15_10:
937             case TEST_POWER_Q15_11:
938             case TEST_POWER_Q15_12:
939               outputPower.dump(mgr);
940             break;
941 
942             default:
943               output.dump(mgr);
944       }
945     }
946