FastMathQ63.cpp 2.5 KB

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