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