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
00025
00026
00027 #include "arm_math.h"
00028
00053 void arm_cmplx_mult_real_q15(
00054 q15_t * pSrcCmplx,
00055 q15_t * pSrcReal,
00056 q15_t * pCmplxDst,
00057 uint32_t numSamples)
00058 {
00059 q15_t in;
00060 uint32_t blkCnt;
00061
00062
00063 blkCnt = numSamples >> 2u;
00064
00065
00066
00067 while(blkCnt > 0u)
00068 {
00069
00070
00071 in = *pSrcReal++;
00072
00073 *pCmplxDst++ = (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
00074 *pCmplxDst++ = (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
00075
00076 in = *pSrcReal++;
00077 *pCmplxDst++ = (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
00078 *pCmplxDst++ = (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
00079
00080 in = *pSrcReal++;
00081 *pCmplxDst++ = (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
00082 *pCmplxDst++ = (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
00083
00084 in = *pSrcReal++;
00085 *pCmplxDst++ = (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
00086 *pCmplxDst++ = (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
00087
00088
00089 blkCnt--;
00090 }
00091
00092
00093
00094 blkCnt = numSamples % 0x4u;
00095
00096 while(blkCnt > 0u)
00097 {
00098
00099
00100 in = *pSrcReal++;
00101
00102 *pCmplxDst++ = (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
00103 *pCmplxDst++ = (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
00104
00105
00106 blkCnt--;
00107 }
00108 }
00109