1 #include "FastMathQ63.h"
2 #include <stdio.h>
3 #include "Error.h"
4 #include "Test.h"
5 
6 #include "arm_common_tables.h"
7 #include "dsp/utils.h"
8 
9 #define SNR_THRESHOLD 100
10 /*
11 
12 Reference patterns are generated with
13 a double precision computation.
14 
15 */
16 #define ABS_ERROR ((q63_t)0)
17 
test_norm_64_to_32u()18     void FastMathQ63::test_norm_64_to_32u()
19     {
20 
21         const uint64_t *inp  = inputU64.ptr();
22         int32_t *outValp  = outputVals.ptr();
23         int16_t *outNormp  = outputNorms.ptr();
24         unsigned long i;
25 
26         for(i=0; i < refVal.nbSamples(); i++)
27         {
28           int32_t val;
29           int32_t norm;
30 
31           arm_norm_64_to_32u(inp[i],&val,&norm);
32           outValp[i]=val;
33           outNormp[i]=norm;
34         }
35 
36         ASSERT_EQ(refVal,outputVals);
37         ASSERT_EQ(refNorm,outputNorms);
38 
39     }
40 
test_div_int64_to_int32()41     void FastMathQ63::test_div_int64_to_int32()
42     {
43         const int64_t *denp  = inputS64.ptr();
44         const int32_t *nump  = inputS32.ptr();
45 
46         int32_t *outValp  = outputVals.ptr();
47         unsigned long i;
48 
49         for(i=0; i < refVal.nbSamples(); i++)
50         {
51           int32_t val;
52 
53           val = arm_div_int64_to_int32(denp[i],nump[i]);
54           outValp[i]=val;
55 
56         }
57 
58         ASSERT_EQ(refVal,outputVals);
59     }
60 
61 
setUp(Testing::testID_t id,std::vector<Testing::param_t> & paramsArgs,Client::PatternMgr * mgr)62     void FastMathQ63::setUp(Testing::testID_t id,std::vector<Testing::param_t>& paramsArgs,Client::PatternMgr *mgr)
63     {
64         (void)paramsArgs;
65         switch(id)
66         {
67             case FastMathQ63::TEST_NORM_64_TO_32U_1:
68             {
69                inputU64.reload(FastMathQ63::NORMINPUT1_U64_ID,mgr);
70 
71                refVal.reload(FastMathQ63::NORM_REF_VALS_S32_ID,mgr);
72                refNorm.reload(FastMathQ63::NORM_REF_S16_ID,mgr);
73 
74                outputVals.create(refVal.nbSamples(),FastMathQ63::OUT_S32_ID,mgr);
75                outputNorms.create(refNorm.nbSamples(),FastMathQ63::NORMS_S16_ID,mgr);
76 
77             }
78             break;
79 
80             case FastMathQ63::TEST_DIV_INT64_TO_INT32_2:
81             {
82                inputS64.reload(FastMathQ63::DIV_DEN_INPUT1_S64_ID,mgr);
83                inputS32.reload(FastMathQ63::DIV_NUM_INPUT1_S32_ID,mgr);
84 
85                refVal.reload(FastMathQ63::DIV_REF_S32_ID,mgr);
86 
87                outputVals.create(refVal.nbSamples(),FastMathQ63::OUT_S32_ID,mgr);
88 
89             }
90             break;
91 
92         }
93 
94     }
95 
tearDown(Testing::testID_t id,Client::PatternMgr * mgr)96     void FastMathQ63::tearDown(Testing::testID_t id,Client::PatternMgr *mgr)
97     {
98       (void)id;
99       (void)mgr;
100       //output.dump(mgr);
101 
102     }
103