Subversion Repositories testOled

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #include "ref.h"
  2.  
  3. void ref_dot_prod_f32(
  4.   float32_t * pSrcA,
  5.   float32_t * pSrcB,
  6.   uint32_t blockSize,
  7.   float32_t * result)
  8. {
  9.         uint32_t i;
  10.   float32_t sum = 0.0f;
  11.        
  12.         for(i=0;i<blockSize;i++)
  13.         {
  14.                 sum += pSrcA[i] * pSrcB[i];
  15.         }
  16.   *result = sum;
  17. }
  18.  
  19. void ref_dot_prod_q31(
  20.   q31_t * pSrcA,
  21.   q31_t * pSrcB,
  22.   uint32_t blockSize,
  23.   q63_t * result)
  24. {
  25.         uint32_t i;
  26.   q63_t sum = 0.0f;
  27.        
  28.         for(i=0;i<blockSize;i++)
  29.         {
  30.                 sum += ((q63_t)pSrcA[i] * pSrcB[i]) >> 14; //16.48
  31.         }
  32.   *result = sum;
  33. }
  34.  
  35. void ref_dot_prod_q15(
  36.   q15_t * pSrcA,
  37.   q15_t * pSrcB,
  38.   uint32_t blockSize,
  39.   q63_t * result)
  40. {
  41.         uint32_t i;
  42.   q63_t sum = 0.0f;
  43.        
  44.         for(i=0;i<blockSize;i++)
  45.         {
  46.                 sum += (q31_t)pSrcA[i] * pSrcB[i]; //34.30
  47.         }
  48.   *result = sum;
  49. }
  50.  
  51. void ref_dot_prod_q7(
  52.   q7_t * pSrcA,
  53.   q7_t * pSrcB,
  54.   uint32_t blockSize,
  55.   q31_t * result)
  56. {
  57.         uint32_t i;
  58.   q31_t sum = 0.0f;
  59.        
  60.         for(i=0;i<blockSize;i++)
  61.         {
  62.                 sum += (q31_t)pSrcA[i] * pSrcB[i]; //18.14
  63.         }
  64.   *result = sum;
  65. }
  66.