81 uint32_t uShift = ((uint32_t) S->
postShift + 1u);
82 uint32_t lShift = 32u - uShift;
87 q31_t Xn1, Xn2, Yn1, Yn2;
88 q31_t b0, b1, b2, a1, a2;
93 #ifndef ARM_MATH_CM0_FAMILY_FAMILY 120 sample = blockSize >> 2u;
132 acc = (
q63_t) b0 *Xn;
134 acc += (
q63_t) b1 *Xn1;
136 acc += (
q63_t) b2 *Xn2;
138 acc += (
q63_t) a1 *Yn1;
140 acc += (
q63_t) a2 *Yn2;
145 acc_l = acc & 0xffffffff;
148 acc_h = (acc >> 32) & 0xffffffff;
151 Yn2 = (uint32_t) acc_l >> lShift | acc_h << uShift;
162 acc = (
q63_t) b0 *Xn2;
164 acc += (
q63_t) b1 *Xn;
166 acc += (
q63_t) b2 *Xn1;
168 acc += (
q63_t) a1 *Yn2;
170 acc += (
q63_t) a2 *Yn1;
176 acc_l = acc & 0xffffffff;
179 acc_h = (acc >> 32) & 0xffffffff;
183 Yn1 = (uint32_t) acc_l >> lShift | acc_h << uShift;
194 acc = (
q63_t) b0 *Xn1;
196 acc += (
q63_t) b1 *Xn2;
198 acc += (
q63_t) b2 *Xn;
200 acc += (
q63_t) a1 *Yn1;
202 acc += (
q63_t) a2 *Yn2;
206 acc_l = acc & 0xffffffff;
209 acc_h = (acc >> 32) & 0xffffffff;
213 Yn2 = (uint32_t) acc_l >> lShift | acc_h << uShift;
224 acc = (
q63_t) b0 *Xn;
226 acc += (
q63_t) b1 *Xn1;
228 acc += (
q63_t) b2 *Xn2;
230 acc += (
q63_t) a1 *Yn2;
232 acc += (
q63_t) a2 *Yn1;
236 acc_l = acc & 0xffffffff;
239 acc_h = (acc >> 32) & 0xffffffff;
242 Yn1 = (uint32_t) acc_l >> lShift | acc_h << uShift;
262 sample = (blockSize & 0x3u);
272 acc = (
q63_t) b0 *Xn;
274 acc += (
q63_t) b1 *Xn1;
276 acc += (
q63_t) b2 *Xn2;
278 acc += (
q63_t) a1 *Yn1;
280 acc += (
q63_t) a2 *Yn2;
297 *pOut++ = (
q31_t) acc;
350 acc = (
q63_t) b0 *Xn;
353 acc += (
q63_t) b1 *Xn1;
355 acc += (
q63_t) b2 *Xn2;
357 acc += (
q63_t) a1 *Yn1;
359 acc += (
q63_t) a2 *Yn2;
376 *pOut++ = (
q31_t) acc;
int64_t q63_t
64-bit fractional data type in 1.63 format.
void arm_biquad_cascade_df1_q31(const arm_biquad_casd_df1_inst_q31 *S, q31_t *pSrc, q31_t *pDst, uint32_t blockSize)
Processing function for the Q31 Biquad cascade filter.
Instance structure for the Q31 Biquad cascade filter.
int32_t q31_t
32-bit fractional data type in 1.31 format.