93 uint32_t tapCnt, blkCnt;
100 q15_t errorXmu, oneByEnergy;
104 int32_t lShift = (15 - (int32_t) S->
postShift);
105 int32_t uShift = (32 - lShift);
112 pStateCurnt = &(S->
pState[(numTaps - 1u)]);
118 #ifndef ARM_MATH_CM0_FAMILY 125 *pStateCurnt++ = *pSrc;
137 energy -= (((
q31_t) x0 * (x0)) >> 15);
138 energy += (((
q31_t) in * (in)) >> 15);
144 tapCnt = numTaps >> 2;
150 #ifndef UNALIGNED_SUPPORT_DISABLE 157 acc += (((
q31_t) * px++ * (*pb++)));
158 acc += (((
q31_t) * px++ * (*pb++)));
159 acc += (((
q31_t) * px++ * (*pb++)));
160 acc += (((
q31_t) * px++ * (*pb++)));
169 tapCnt = numTaps % 0x4u;
174 acc += (((
q31_t) * px++ * (*pb++)));
181 acc_l = acc & 0xffffffff;
184 acc_h = (acc >> 32) & 0xffffffff;
187 acc = (uint32_t) acc_l >> lShift | acc_h << uShift;
190 acc = __SSAT(acc, 16u);
193 *pOut++ = (
q15_t) acc;
208 acc = (((
q31_t) errorXmu * oneByEnergy) >> (15 - postShift));
220 tapCnt = numTaps >> 2;
225 coef = *pb + (((
q31_t) w * (*px++)) >> 15);
226 *pb++ = (
q15_t) __SSAT((coef), 16);
227 coef = *pb + (((
q31_t) w * (*px++)) >> 15);
228 *pb++ = (
q15_t) __SSAT((coef), 16);
229 coef = *pb + (((
q31_t) w * (*px++)) >> 15);
230 *pb++ = (
q15_t) __SSAT((coef), 16);
231 coef = *pb + (((
q31_t) w * (*px++)) >> 15);
232 *pb++ = (
q15_t) __SSAT((coef), 16);
239 tapCnt = numTaps % 0x4u;
244 coef = *pb + (((
q31_t) w * (*px++)) >> 15);
245 *pb++ = (
q15_t) __SSAT((coef), 16);
255 pState = pState + 1u;
273 tapCnt = (numTaps - 1u) >> 2;
278 #ifndef UNALIGNED_SUPPORT_DISABLE 285 *pStateCurnt++ = *pState++;
286 *pStateCurnt++ = *pState++;
287 *pStateCurnt++ = *pState++;
288 *pStateCurnt++ = *pState++;
297 tapCnt = (numTaps - 1u) % 0x4u;
302 *pStateCurnt++ = *pState++;
315 *pStateCurnt++ = *pSrc;
327 energy -= (((
q31_t) x0 * (x0)) >> 15);
328 energy += (((
q31_t) in * (in)) >> 15);
339 acc += (((
q31_t) * px++ * (*pb++)));
346 acc_l = acc & 0xffffffff;
349 acc_h = (acc >> 32) & 0xffffffff;
352 acc = (uint32_t) acc_l >> lShift | acc_h << uShift;
355 acc = __SSAT(acc, 16u);
361 *pOut++ = (
q15_t) acc;
376 acc = (((
q31_t) errorXmu * oneByEnergy) >> (15 - postShift));
393 coef = *pb + (((
q31_t) w * (*px++)) >> 15);
394 *pb++ = (
q15_t) __SSAT((coef), 16);
404 pState = pState + 1u;
422 tapCnt = (numTaps - 1u);
427 *pStateCurnt++ = *pState++;
int64_t q63_t
64-bit fractional data type in 1.63 format.
void arm_lms_norm_q15(arm_lms_norm_instance_q15 *S, q15_t *pSrc, q15_t *pRef, q15_t *pOut, q15_t *pErr, uint32_t blockSize)
Processing function for Q15 normalized LMS filter.
int16_t q15_t
16-bit fractional data type in 1.15 format.
#define __SIMD32(addr)
definition to read/write two 16 bit values.
Instance structure for the Q15 normalized LMS filter.
int32_t q31_t
32-bit fractional data type in 1.31 format.