CMSIS-DSP  
CMSIS DSP Software Library

Functions

void arm_scale_f16 (const float16_t *pSrc, float16_t scale, float16_t *pDst, uint32_t blockSize)
 Multiplies a floating-point vector by a scalar. More...
 
void arm_scale_f32 (const float32_t *pSrc, float32_t scale, float32_t *pDst, uint32_t blockSize)
 Multiplies a floating-point vector by a scalar. More...
 
void arm_scale_f64 (const float64_t *pSrc, float64_t scale, float64_t *pDst, uint32_t blockSize)
 Multiplies a floating-point vector by a scalar. More...
 
void arm_scale_q15 (const q15_t *pSrc, q15_t scaleFract, int8_t shift, q15_t *pDst, uint32_t blockSize)
 Multiplies a Q15 vector by a scalar. More...
 
void arm_scale_q31 (const q31_t *pSrc, q31_t scaleFract, int8_t shift, q31_t *pDst, uint32_t blockSize)
 Multiplies a Q31 vector by a scalar. More...
 
void arm_scale_q7 (const q7_t *pSrc, q7_t scaleFract, int8_t shift, q7_t *pDst, uint32_t blockSize)
 Multiplies a Q7 vector by a scalar. More...
 

Description

Multiply a vector by a scalar value. For floating-point data, the algorithm used is:

    pDst[n] = pSrc[n] * scale,   0 <= n < blockSize.

In the fixed-point Q7, Q15, and Q31 functions, scale is represented by a fractional multiplication scaleFract and an arithmetic shift shift. The shift allows the gain of the scaling operation to exceed 1.0. The algorithm used with fixed-point data is:

    pDst[n] = (pSrc[n] * scaleFract) << shift,   0 <= n < blockSize.

The overall scale factor applied to the fixed-point data is

    scale = scaleFract * 2^shift.

The functions support in-place computation allowing the source and destination pointers to reference the same memory buffer.

Function Documentation

◆ arm_scale_f16()

void arm_scale_f16 ( const float16_t *  pSrc,
float16_t  scale,
float16_t *  pDst,
uint32_t  blockSize 
)
Parameters
[in]pSrcpoints to the input vector
[in]scalescale factor to be applied
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
Returns
none

◆ arm_scale_f32()

void arm_scale_f32 ( const float32_t pSrc,
float32_t  scale,
float32_t pDst,
uint32_t  blockSize 
)
Parameters
[in]pSrcpoints to the input vector
[in]scalescale factor to be applied
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
Returns
none

◆ arm_scale_f64()

void arm_scale_f64 ( const float64_t pSrc,
float64_t  scale,
float64_t pDst,
uint32_t  blockSize 
)
Parameters
[in]pSrcpoints to the input vector
[in]scalescale factor to be applied
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
Returns
none

◆ arm_scale_q15()

void arm_scale_q15 ( const q15_t pSrc,
q15_t  scaleFract,
int8_t  shift,
q15_t pDst,
uint32_t  blockSize 
)
Parameters
[in]pSrcpoints to the input vector
[in]scaleFractfractional portion of the scale value
[in]shiftnumber of bits to shift the result by
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
Returns
none
Scaling and Overflow Behavior
The input data *pSrc and scaleFract are in 1.15 format. These are multiplied to yield a 2.30 intermediate result and this is shifted with saturation to 1.15 format.

◆ arm_scale_q31()

void arm_scale_q31 ( const q31_t pSrc,
q31_t  scaleFract,
int8_t  shift,
q31_t pDst,
uint32_t  blockSize 
)
Parameters
[in]pSrcpoints to the input vector
[in]scaleFractfractional portion of the scale value
[in]shiftnumber of bits to shift the result by
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
Returns
none
Scaling and Overflow Behavior
The input data *pSrc and scaleFract are in 1.31 format. These are multiplied to yield a 2.62 intermediate result and this is shifted with saturation to 1.31 format. There is an intermediate shift by 32 to go from the 2.62 to 1.31 format. The shift argument is applied on the 1.31 result and not to the intermediate 2.62 format.

◆ arm_scale_q7()

void arm_scale_q7 ( const q7_t pSrc,
q7_t  scaleFract,
int8_t  shift,
q7_t pDst,
uint32_t  blockSize 
)
Parameters
[in]pSrcpoints to the input vector
[in]scaleFractfractional portion of the scale value
[in]shiftnumber of bits to shift the result by
[out]pDstpoints to the output vector
[in]blockSizenumber of samples in each vector
Returns
none
Scaling and Overflow Behavior
The input data *pSrc and scaleFract are in 1.7 format. These are multiplied to yield a 2.14 intermediate result and this is shifted with saturation to 1.7 format.