Subversion Repositories AFRtranscoder

Rev

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

  1. #include "ref.h"
  2.  
  3. float32_t scratchArray[8192*2];
  4.  
  5. arm_cfft_instance_f32 ref_cfft_sR_f32_len8192 = { 8192, 0, 0, 0 };
  6.        
  7. q31_t ref_sat_n(q31_t num, uint32_t bits)
  8. {
  9.         int32_t posMax, negMin;
  10.         uint32_t i;
  11.  
  12.         posMax = 1;
  13.         for (i = 0; i < (bits - 1); i++)
  14.         {
  15.                 posMax = posMax * 2;
  16.         }
  17.  
  18.         if (num > 0)
  19.         {
  20.                 posMax = (posMax - 1);
  21.  
  22.                 if (num > posMax)
  23.                 {
  24.                         num = posMax;
  25.                 }
  26.         }
  27.         else
  28.         {
  29.                 negMin = -posMax;
  30.  
  31.                 if (num < negMin)
  32.                 {
  33.                         num = negMin;
  34.                 }
  35.         }
  36.         return (num);
  37. }
  38.  
  39. q31_t ref_sat_q31(q63_t num)
  40. {
  41.         if (num > (q63_t)INT_MAX)
  42.         {
  43.                 return INT_MAX;
  44.         }
  45.         else if (num < (q63_t)0xffffffff80000000ll)
  46.         {
  47.                 return INT_MIN;
  48.         }
  49.         else
  50.         {
  51.                 return (q31_t)num;
  52.         }
  53. }
  54.  
  55. q15_t ref_sat_q15(q31_t num)
  56. {
  57.         if (num > (q31_t)SHRT_MAX)
  58.         {
  59.                 return SHRT_MAX;
  60.         }
  61.         else if (num < (q31_t)0xffff8000)
  62.         {
  63.                 return SHRT_MIN;
  64.         }
  65.         else
  66.         {
  67.                 return (q15_t)num;
  68.         }
  69. }
  70.  
  71. q7_t ref_sat_q7(q15_t num)
  72. {
  73.         if (num > (q15_t)SCHAR_MAX)
  74.         {
  75.                 return SCHAR_MAX;
  76.         }
  77.         else if (num < (q15_t)0xff80)
  78.         {
  79.                 return SCHAR_MIN;
  80.         }
  81.         else
  82.         {
  83.                 return (q7_t)num;
  84.         }
  85. }
  86.  
  87. float32_t ref_pow(float32_t a, uint32_t b)
  88. {
  89.         uint32_t i;
  90.         float32_t r = a;
  91.        
  92.         for(i=1;i<b;i++)
  93.         {
  94.                 r *= a;
  95.         }
  96.        
  97.         if ( b == 0)
  98.         {
  99.                 return 1;
  100.         }
  101.        
  102.         return r;
  103. }
  104.