Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "arm_math.h"
00025
00050 void arm_scale_q31(
00051 q31_t * pSrc,
00052 q31_t scaleFract,
00053 int8_t shift,
00054 q31_t * pDst,
00055 uint32_t blockSize)
00056 {
00057 int8_t kShift = 31 - shift;
00058
00059 uint32_t blkCnt;
00060
00061
00062
00063 blkCnt = blockSize >> 2u;
00064
00065
00066
00067 while(blkCnt > 0u)
00068 {
00069
00070 *pDst++ = clip_q63_to_q31(((q63_t) * pSrc++ * scaleFract) >> kShift);
00071 *pDst++ = clip_q63_to_q31(((q63_t) * pSrc++ * scaleFract) >> kShift);
00072 *pDst++ = clip_q63_to_q31(((q63_t) * pSrc++ * scaleFract) >> kShift);
00073 *pDst++ = clip_q63_to_q31(((q63_t) * pSrc++ * scaleFract) >> kShift);
00074
00075
00076
00077 blkCnt--;
00078 }
00079
00080
00081
00082 blkCnt = blockSize % 0x4u;
00083
00084 while(blkCnt > 0u)
00085 {
00086
00087
00088 *pDst++ = clip_q63_to_q31(((q63_t) * pSrc++ * scaleFract) >> kShift);
00089
00090
00091 blkCnt--;
00092 }
00093 }
00094