CMSIS DSP library

Dependents:   performance_timer Surfboard_ gps2rtty Capstone ... more

Legacy Warning

This is an mbed 2 library. To learn more about mbed OS 5, visit the docs.

Revision:
2:da51fb522205
Parent:
1:fdd22bb7aa52
Child:
3:7a284390b0ce
--- a/cmsis_dsp/SupportFunctions/math_helper.c	Wed Nov 28 12:30:09 2012 +0000
+++ b/cmsis_dsp/SupportFunctions/math_helper.c	Thu May 30 17:10:11 2013 +0100
@@ -2,13 +2,13 @@
 * Copyright (C) 2010 ARM Limited. All rights reserved.  
 *  
 * $Date:        29. November 2010  
-* $Revision:     V1.0.3  
+* $Revision: 	V1.0.3  
 *  
-* Project:         CMSIS DSP Library 
+* Project: 	    CMSIS DSP Library 
 *
-* Title:        math_helper.c
+* Title:	    math_helper.c
 *
-* Description:    Definition of all helper functions required.  
+* Description:	Definition of all helper functions required.  
 *  
 * Target Processor: Cortex-M4/Cortex-M3
 *  
@@ -29,21 +29,21 @@
 * -------------------------------------------------------------------- */
 
 /* ----------------------------------------------------------------------
-*        Include standard header files  
+*		Include standard header files  
 * -------------------------------------------------------------------- */
 #include<math.h>
 
 /* ----------------------------------------------------------------------
-*        Include project header files  
+*		Include project header files  
 * -------------------------------------------------------------------- */
 #include "math_helper.h"
 
 /** 
  * @brief  Caluclation of SNR
- * @param  float*     Pointer to the reference buffer
- * @param  float*    Pointer to the test buffer
- * @param  uint32_t    total number of samples
- * @return float    SNR
+ * @param  float* 	Pointer to the reference buffer
+ * @param  float*	Pointer to the test buffer
+ * @param  uint32_t	total number of samples
+ * @return float	SNR
  * The function Caluclates signal to noise ratio for the reference output 
  * and test output 
  */
@@ -58,36 +58,36 @@
 
   for (i = 0; i < buffSize; i++)
     {
-       /* Checking for a NAN value in pRef array */
-      test =   (int *)(&pRef[i]);
+ 	  /* Checking for a NAN value in pRef array */
+	  test =   (int *)(&pRef[i]);
       temp =  *test;
 
-      if(temp == 0x7FC00000)
-      {
-              return(0);
-      }
+	  if(temp == 0x7FC00000)
+	  {
+	  		return(0);
+	  }
 
-      /* Checking for a NAN value in pTest array */
-      test =   (int *)(&pTest[i]);
+	  /* Checking for a NAN value in pTest array */
+	  test =   (int *)(&pTest[i]);
       temp =  *test;
 
-      if(temp == 0x7FC00000)
-      {
-              return(0);
-      }
+	  if(temp == 0x7FC00000)
+	  {
+	  		return(0);
+	  }
       EnergySignal += pRef[i] * pRef[i];
       EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); 
     }
 
-    /* Checking for a NAN value in EnergyError */
-    test =   (int *)(&EnergyError);
+	/* Checking for a NAN value in EnergyError */
+	test =   (int *)(&EnergyError);
     temp =  *test;
 
     if(temp == 0x7FC00000)
     {
-          return(0);
+  		return(0);
     }
-    
+	
 
   SNR = 10 * log10 (EnergySignal / EnergyError);
 
@@ -98,9 +98,9 @@
 
 /** 
  * @brief  Provide guard bits for Input buffer
- * @param  q15_t*         Pointer to input buffer
- * @param  uint32_t     blockSize
- * @param  uint32_t     guard_bits
+ * @param  q15_t* 	    Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
  * @return none
  * The function Provides the guard bits for the buffer 
  * to avoid overflow 
@@ -119,7 +119,7 @@
 
 /** 
  * @brief  Converts float to fixed in q12.20 format
- * @param  uint32_t     number of samples in the buffer
+ * @param  uint32_t 	number of samples in the buffer
  * @return none
  * The function converts floating point values to fixed point(q12.20) values 
  */
@@ -130,7 +130,7 @@
 
   for (i = 0; i < numSamples; i++)
     {
-      /* 1048576.0f corresponds to pow(2, 20) */
+	  /* 1048576.0f corresponds to pow(2, 20) */
       pOut[i] = (q31_t) (pIn[i] * 1048576.0f);
 
       pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
@@ -144,9 +144,9 @@
 
 /** 
  * @brief  Compare MATLAB Reference Output and ARM Test output
- * @param  q15_t*     Pointer to Ref buffer
- * @param  q15_t*     Pointer to Test buffer
- * @param  uint32_t     number of samples in the buffer
+ * @param  q15_t* 	Pointer to Ref buffer
+ * @param  q15_t* 	Pointer to Test buffer
+ * @param  uint32_t 	number of samples in the buffer
  * @return none 
  */
 
@@ -158,13 +158,13 @@
 
   for (i = 0; i < numSamples; i++)
   {
-      diff = pIn[i] - pOut[i];
-      diffCrnt = (diff > 0) ? diff : -diff;
+  	diff = pIn[i] - pOut[i];
+  	diffCrnt = (diff > 0) ? diff : -diff;
 
-    if(diffCrnt > maxDiff)
-    {
-        maxDiff = diffCrnt;
-    }    
+	if(diffCrnt > maxDiff)
+	{
+		maxDiff = diffCrnt;
+	}	
   }
 
   return(maxDiff);
@@ -172,9 +172,9 @@
 
 /** 
  * @brief  Compare MATLAB Reference Output and ARM Test output
- * @param  q31_t*     Pointer to Ref buffer
- * @param  q31_t*     Pointer to Test buffer
- * @param  uint32_t     number of samples in the buffer
+ * @param  q31_t* 	Pointer to Ref buffer
+ * @param  q31_t* 	Pointer to Test buffer
+ * @param  uint32_t 	number of samples in the buffer
  * @return none 
  */
 
@@ -186,13 +186,13 @@
 
   for (i = 0; i < numSamples; i++)
   {
-      diff = pIn[i] - pOut[i];
-      diffCrnt = (diff > 0) ? diff : -diff;
+  	diff = pIn[i] - pOut[i];
+  	diffCrnt = (diff > 0) ? diff : -diff;
 
-    if(diffCrnt > maxDiff)
-    {
-        maxDiff = diffCrnt;
-    }
+	if(diffCrnt > maxDiff)
+	{
+		maxDiff = diffCrnt;
+	}
   }
 
   return(maxDiff);
@@ -200,16 +200,16 @@
 
 /** 
  * @brief  Provide guard bits for Input buffer
- * @param  q31_t*     Pointer to input buffer
- * @param  uint32_t     blockSize
- * @param  uint32_t     guard_bits
+ * @param  q31_t* 	Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
  * @return none
  * The function Provides the guard bits for the buffer 
  * to avoid overflow 
  */
 
 void arm_provide_guard_bits_q31 (q31_t * input_buf, 
-                                 uint32_t blockSize,
+								 uint32_t blockSize,
                                  uint32_t guard_bits)
 {
   uint32_t i;
@@ -222,16 +222,16 @@
 
 /** 
  * @brief  Provide guard bits for Input buffer
- * @param  q31_t*     Pointer to input buffer
- * @param  uint32_t     blockSize
- * @param  uint32_t     guard_bits
+ * @param  q31_t* 	Pointer to input buffer
+ * @param  uint32_t 	blockSize
+ * @param  uint32_t 	guard_bits
  * @return none
  * The function Provides the guard bits for the buffer 
  * to avoid overflow 
  */
 
 void arm_provide_guard_bits_q7 (q7_t * input_buf, 
-                                uint32_t blockSize,
+								uint32_t blockSize,
                                 uint32_t guard_bits)
 {
   uint32_t i;
@@ -246,7 +246,7 @@
 
 /** 
  * @brief  Caluclates number of guard bits 
- * @param  uint32_t     number of additions
+ * @param  uint32_t 	number of additions
  * @return none
  * The function Caluclates the number of guard bits  
  * depending on the numtaps 
@@ -272,13 +272,13 @@
 
 /** 
  * @brief  Converts Q15 to floating-point
- * @param  uint32_t     number of samples in the buffer
+ * @param  uint32_t 	number of samples in the buffer
  * @return none
  */
 
 void arm_apply_guard_bits (float32_t * pIn, 
-                           uint32_t numSamples, 
-                           uint32_t guard_bits)
+						   uint32_t numSamples, 
+						   uint32_t guard_bits)
 {
   uint32_t i;
 
@@ -290,7 +290,7 @@
 
 /** 
  * @brief  Calculates pow(2, numShifts)
- * @param  uint32_t     number of shifts
+ * @param  uint32_t 	number of shifts
  * @return pow(2, numShifts)
  */
 uint32_t arm_calc_2pow(uint32_t numShifts)
@@ -301,7 +301,7 @@
   for (i = 0; i < numShifts; i++)
     {
       val = val * 2;
-    }    
+    }	
 
   return(val);
 }
@@ -310,7 +310,7 @@
 
 /** 
  * @brief  Converts float to fixed q14 
- * @param  uint32_t     number of samples in the buffer
+ * @param  uint32_t 	number of samples in the buffer
  * @return none
  * The function converts floating point values to fixed point values 
  */
@@ -322,7 +322,7 @@
 
   for (i = 0; i < numSamples; i++)
     {
-      /* 16384.0f corresponds to pow(2, 14) */
+	  /* 16384.0f corresponds to pow(2, 14) */
       pOut[i] = (q15_t) (pIn[i] * 16384.0f);
 
       pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
@@ -339,19 +339,19 @@
  
 /** 
  * @brief  Converts float to fixed q30 format
- * @param  uint32_t     number of samples in the buffer
+ * @param  uint32_t 	number of samples in the buffer
  * @return none
  * The function converts floating point values to fixed point values 
  */
 
 void arm_float_to_q30 (float *pIn, q31_t * pOut, 
-                       uint32_t numSamples)
+					   uint32_t numSamples)
 {
   uint32_t i;
 
   for (i = 0; i < numSamples; i++)
     {
-      /* 1073741824.0f corresponds to pow(2, 30) */
+	  /* 1073741824.0f corresponds to pow(2, 30) */
       pOut[i] = (q31_t) (pIn[i] * 1073741824.0f);
 
       pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
@@ -365,19 +365,19 @@
 
 /** 
  * @brief  Converts float to fixed q30 format
- * @param  uint32_t     number of samples in the buffer
+ * @param  uint32_t 	number of samples in the buffer
  * @return none
  * The function converts floating point values to fixed point values 
  */
 
 void arm_float_to_q29 (float *pIn, q31_t * pOut, 
-                       uint32_t numSamples)
+					   uint32_t numSamples)
 {
   uint32_t i;
 
   for (i = 0; i < numSamples; i++)
     {
-      /* 1073741824.0f corresponds to pow(2, 30) */
+	  /* 1073741824.0f corresponds to pow(2, 30) */
       pOut[i] = (q31_t) (pIn[i] * 536870912.0f);
 
       pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
@@ -392,7 +392,7 @@
 
 /** 
  * @brief  Converts float to fixed q28 format
- * @param  uint32_t     number of samples in the buffer
+ * @param  uint32_t 	number of samples in the buffer
  * @return none
  * The function converts floating point values to fixed point values 
  */
@@ -404,7 +404,7 @@
 
   for (i = 0; i < numSamples; i++)
     {
-    /* 268435456.0f corresponds to pow(2, 28) */
+	/* 268435456.0f corresponds to pow(2, 28) */
       pOut[i] = (q31_t) (pIn[i] * 268435456.0f);
 
       pOut[i] += pIn[i] > 0 ? 0.5 : -0.5;
@@ -418,8 +418,8 @@
 
 /** 
  * @brief  Clip the float values to +/- 1 
- * @param  pIn     input buffer
- * @param  numSamples     number of samples in the buffer
+ * @param  pIn 	input buffer
+ * @param  numSamples 	number of samples in the buffer
  * @return none
  * The function converts floating point values to fixed point values 
  */
@@ -431,14 +431,14 @@
   for (i = 0; i < numSamples; i++)
     {
       if(pIn[i] > 1.0f)
-      {
-        pIn[i] = 1.0;
-      }
-      else if( pIn[i] < -1.0f)
-      {
-        pIn[i] = -1.0;
-      }
-           
+	  {
+	    pIn[i] = 1.0;
+	  }
+	  else if( pIn[i] < -1.0f)
+	  {
+	    pIn[i] = -1.0;
+	  }
+	       
     }
 }