200 q31_t b0, b1, b2, a1, a2;
202 int32_t shift = (int32_t) S->
postShift + 1;
205 uint32_t uShift = ((uint32_t) S->
postShift + 1u);
206 uint32_t lShift = 32u - uShift;
209 #ifndef ARM_MATH_CM0_FAMILY 223 Xn1 = (
q31_t) (pState[0]);
224 Xn2 = (
q31_t) (pState[1]);
234 sample = blockSize >> 2u;
246 acc = (
q63_t) Xn *b0;
249 acc += (
q63_t) Xn1 *b1;
252 acc += (
q63_t) Xn2 *b2;
255 acc += mult32x64(Yn1, a1);
258 acc += mult32x64(Yn2, a2);
264 acc_l = acc & 0xffffffff;
267 acc_h = (acc >> 32) & 0xffffffff;
270 acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;
281 acc = (
q63_t) Xn *b1;
284 acc += (
q63_t) Xn2 *b0;
287 acc += (
q63_t) Xn1 *b2;
290 acc += mult32x64(Yn2, a1);
293 acc += mult32x64(Yn1, a2);
299 acc_l = acc & 0xffffffff;
302 acc_h = (acc >> 32) & 0xffffffff;
305 acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;
312 *(pOut + 1u) = acc_h;
317 acc = (
q63_t) Xn1 *b0;
320 acc += (
q63_t) Xn2 *b1;
323 acc += (
q63_t) Xn *b2;
326 acc += mult32x64(Yn1, a1);
329 acc += mult32x64(Yn2, a2);
335 acc_l = acc & 0xffffffff;
338 acc_h = (acc >> 32) & 0xffffffff;
341 acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;
344 *(pOut + 2u) = acc_h;
351 acc = (
q63_t) Xn *b0;
354 acc += (
q63_t) Xn1 *b1;
357 acc += (
q63_t) Xn2 *b2;
360 acc += mult32x64(Yn2, a1);
363 acc += mult32x64(Yn1, a2);
369 acc_l = acc & 0xffffffff;
372 acc_h = (acc >> 32) & 0xffffffff;
375 acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;
378 *(pOut + 3u) = acc_h;
398 sample = (blockSize & 0x3u);
408 acc = (
q63_t) Xn *b0;
410 acc += (
q63_t) Xn1 *b1;
412 acc += (
q63_t) Xn2 *b2;
414 acc += mult32x64(Yn1, a1);
416 acc += mult32x64(Yn2, a2);
431 acc_l = acc & 0xffffffff;
434 acc_h = (acc >> 32) & 0xffffffff;
437 acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;
458 *pState++ = (
q63_t) Xn1;
459 *pState++ = (
q63_t) Xn2;
498 acc = (
q63_t) Xn *b0;
500 acc += (
q63_t) Xn1 *b1;
502 acc += (
q63_t) Xn2 *b2;
504 acc += mult32x64(Yn1, a1);
506 acc += mult32x64(Yn2, a2);
522 acc_l = acc & 0xffffffff;
525 acc_h = (acc >> 32) & 0xffffffff;
528 acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift;
549 *pState++ = (
q63_t) Xn1;
550 *pState++ = (
q63_t) Xn2;
int64_t q63_t
64-bit fractional data type in 1.63 format.
int32_t q31_t
32-bit fractional data type in 1.31 format.
Instance structure for the high precision Q31 Biquad cascade filter.
void arm_biquad_cas_df1_32x64_q31(const arm_biquad_cas_df1_32x64_ins_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)