74 int8_t kShift = shift + 1;
75 int8_t sign = (kShift & 0x80);
79 #ifndef ARM_MATH_CM0_FAMILY 83 q31_t in1, in2, in3, in4;
84 q31_t out1, out2, out3, out4;
88 blkCnt = blockSize >> 2u;
103 in1 = ((
q63_t) in1 * scaleFract) >> 32;
104 in2 = ((
q63_t) in2 * scaleFract) >> 32;
105 in3 = ((
q63_t) in3 * scaleFract) >> 32;
106 in4 = ((
q63_t) in4 * scaleFract) >> 32;
109 out1 = in1 << kShift;
110 out2 = in2 << kShift;
113 if(in1 != (out1 >> kShift))
114 out1 = 0x7FFFFFFF ^ (in1 >> 31);
116 if(in2 != (out2 >> kShift))
117 out2 = 0x7FFFFFFF ^ (in2 >> 31);
119 out3 = in3 << kShift;
120 out4 = in4 << kShift;
125 if(in3 != (out3 >> kShift))
126 out3 = 0x7FFFFFFF ^ (in3 >> 31);
128 if(in4 != (out4 >> kShift))
129 out4 = 0x7FFFFFFF ^ (in4 >> 31);
157 in1 = ((
q63_t) in1 * scaleFract) >> 32;
158 in2 = ((
q63_t) in2 * scaleFract) >> 32;
159 in3 = ((
q63_t) in3 * scaleFract) >> 32;
160 in4 = ((
q63_t) in4 * scaleFract) >> 32;
163 out1 = in1 >> -kShift;
164 out2 = in2 >> -kShift;
166 out3 = in3 >> -kShift;
167 out4 = in4 >> -kShift;
186 blkCnt = blockSize % 0x4u;
204 in = ((
q63_t) in * scaleFract) >> 32;
208 if(in != (out >> kShift))
209 out = 0x7FFFFFFF ^ (in >> 31);
224 in = ((
q63_t) in * scaleFract) >> 32;
int64_t q63_t
64-bit fractional data type in 1.63 format.
void arm_scale_q31(q31_t *pSrc, q31_t scaleFract, int8_t shift, q31_t *pDst, uint32_t blockSize)
Multiplies a Q31 vector by a scalar.
int32_t q31_t
32-bit fractional data type in 1.31 format.