V4.0.1 of the ARM CMSIS DSP libraries. Note that arm_bitreversal2.s, arm_cfft_f32.c and arm_rfft_fast_f32.c had to be removed. arm_bitreversal2.s will not assemble with the online tools. So, the fast f32 FFT functions are not yet available. All the other FFT functions are available.

Dependents:   MPU9150_Example fir_f32 fir_f32 MPU9150_nucleo_noni2cdev ... more

Embed: (wiki syntax)

« Back to documentation index

Vector Shift

Shifts the elements of a fixed-point vector by a specified number of bits. More...

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.

Detailed 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

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.

Parameters:
[in]*pSrcpoints to the input vector
[in]shiftBitsnumber of bits to shift. A positive value shifts left; a negative value shifts right.
[out]*pDstpoints to the output vector
[in]blockSizenumber 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.

Definition at line 66 of file arm_shift_q15.c.

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.

Parameters:
[in]*pSrcpoints to the input vector
[in]shiftBitsnumber of bits to shift. A positive value shifts left; a negative value shifts right.
[out]*pDstpoints to the output vector
[in]blockSizenumber 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.

Definition at line 84 of file arm_shift_q31.c.

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.

Parameters:
[in]*pSrcpoints to the input vector
[in]shiftBitsnumber of bits to shift. A positive value shifts left; a negative value shifts right.
[out]*pDstpoints to the output vector
[in]blockSizenumber 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.

Definition at line 71 of file arm_shift_q7.c.