Vector ShiftBasic Math Functions
Functions | |
void | arm_shift_q15 (q15_t *pSrc, int8_t shiftBits, q15_t *pDst, uint32_t blockSize) |
Shifts the elements of a Q15 vector a specified number of bits. | |
void | arm_shift_q31 (q31_t *pSrc, int8_t shiftBits, q31_t *pDst, uint32_t blockSize) |
Shifts the elements of a Q31 vector a specified number of bits. | |
void | arm_shift_q7 (q7_t *pSrc, int8_t shiftBits, q7_t *pDst, uint32_t blockSize) |
Shifts the elements of a Q7 vector a specified number of bits. | |
Description
Shifts the elements of a fixed-point vector by a specified number of bits. There are separate functions for Q7, Q15, and Q31 data types. The underlying algorithm used is:
pDst[n] = pSrc[n] << shift, 0 <= n < blockSize.
If shift
is positive then the elements of the vector are shifted to the left. If shift
is negative then the elements of the vector are shifted to the right.
The functions support in-place computation allowing the source and destination pointers to reference the same memory buffer.
Function Documentation
- Parameters
-
[in] *pSrc
points to the input vector [in] shiftBits
number of bits to shift. A positive value shifts left; a negative value shifts right. [out] *pDst
points to the output vector [in] blockSize
number of samples in the vector
- Returns
- none.
Scaling and Overflow Behavior:
- The function uses saturating arithmetic. Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.
References __PKHBT, __SIMD32, and blockSize.
Referenced by arm_dct4_q15().
- Parameters
-
[in] *pSrc
points to the input vector [in] shiftBits
number of bits to shift. A positive value shifts left; a negative value shifts right. [out] *pDst
points to the output vector [in] blockSize
number of samples in the vector
- Returns
- none.
Scaling and Overflow Behavior:
- The function uses saturating arithmetic. Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated.
References blockSize, and clip_q63_to_q31().
Referenced by arm_dct4_q31().
- Parameters
-
[in] *pSrc
points to the input vector [in] shiftBits
number of bits to shift. A positive value shifts left; a negative value shifts right. [out] *pDst
points to the output vector [in] blockSize
number of samples in the vector
- Returns
- none.
- Conditions for optimum performance
- Input and output buffers should be aligned by 32-bit
Scaling and Overflow Behavior:
- The function uses saturating arithmetic. Results outside of the allowable Q7 range [0x8 0x7F] will be saturated.