Subversion Repositories testOled

Rev

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

  1. #include "ref.h"
  2.  
  3. void ref_var_f32(
  4.   float32_t * pSrc,
  5.   uint32_t blockSize,
  6.   float32_t * pResult)
  7. {
  8.         uint32_t i;
  9.         float32_t sum=0, sumsq=0;
  10.        
  11.         if (blockSize == 1)
  12.         {
  13.                 *pResult = 0;
  14.                 return;
  15.         }
  16.        
  17.         for(i=0;i<blockSize;i++)
  18.         {
  19.                         sum += pSrc[i];
  20.                         sumsq += pSrc[i] * pSrc[i];
  21.         }
  22.         *pResult = (sumsq - sum * sum / (float32_t)blockSize) / ((float32_t)blockSize - 1);
  23. }
  24.  
  25. void ref_var_q31(
  26.   q31_t * pSrc,
  27.   uint32_t blockSize,
  28.   q31_t * pResult)
  29. {
  30.         uint32_t i;
  31.         q63_t sum=0, sumsq=0;
  32.         q31_t in;
  33.        
  34.         if (blockSize == 1)
  35.         {
  36.                 *pResult = 0;
  37.                 return;
  38.         }
  39.        
  40.         for(i=0;i<blockSize;i++)
  41.         {
  42.                         in = pSrc[i] >> 8;
  43.                         sum += in;
  44.                         sumsq += (q63_t)in * in;
  45.         }
  46.         *pResult = (sumsq - sum * sum / (q31_t)blockSize) / ((q31_t)blockSize - 1) >> 15;
  47. }
  48.  
  49. void ref_var_q15(
  50.   q15_t * pSrc,
  51.   uint32_t blockSize,
  52.   q15_t * pResult)
  53. {
  54.         uint32_t i;
  55.         q31_t sum=0;
  56.         q63_t sumsq=0;
  57.        
  58.         if (blockSize == 1)
  59.         {
  60.                 *pResult = 0;
  61.                 return;
  62.         }
  63.        
  64.         for(i=0;i<blockSize;i++)
  65.         {
  66.                         sum += pSrc[i];
  67.                         sumsq += (q63_t)pSrc[i] * pSrc[i];
  68.         }
  69.         *pResult = (q31_t)((sumsq - (q63_t)sum * sum / (q63_t)blockSize) / ((q63_t)blockSize - 1)) >> 15;
  70. }
  71.