|
Zephyr API Documentation 4.3.0-rc1
A Scalable Open Source RTOS
|
Multiply a vector by a scalar value. More...
Functions | |
| DSP_FUNC_SCOPE void | zdsp_scale_f32 (const DSP_DATA float32_t *src, float32_t scale, DSP_DATA float32_t *dst, uint32_t block_size) |
| Multiplies a floating-point vector by a scalar. | |
| DSP_FUNC_SCOPE void | zdsp_scale_q7 (const DSP_DATA q7_t *src, q7_t scale_fract, int8_t shift, DSP_DATA q7_t *dst, uint32_t block_size) |
| Multiplies a Q7 vector by a scalar. | |
| DSP_FUNC_SCOPE void | zdsp_scale_q15 (const DSP_DATA q15_t *src, q15_t scale_fract, int8_t shift, DSP_DATA q15_t *dst, uint32_t block_size) |
| Multiplies a Q15 vector by a scalar. | |
| DSP_FUNC_SCOPE void | zdsp_scale_q31 (const DSP_DATA q31_t *src, q31_t scale_fract, int8_t shift, DSP_DATA q31_t *dst, uint32_t block_size) |
| Multiplies a Q31 vector by a scalar. | |
| void | zdsp_scale_f16 (const float16_t *src, float16_t scale, float16_t *dst, uint32_t block_size) |
| Multiplies a floating-point vector by a scalar. | |
Multiply a vector by a scalar value.
For floating-point data, the algorithm used is:
dst[n] = src[n] * scale, 0 <= n < block_size.
In the fixed-point Q7, Q15, and Q31 functions, scale is represented by a fractional multiplication scale_fract 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:
dst[n] = (src[n] * scale_fract) << shift, 0 <= n < block_size.
The overall scale factor applied to the fixed-point data is
scale = scale_fract * 2^shift.
The functions support in-place computation allowing the source and destination pointers to reference the same memory buffer.
| void zdsp_scale_f16 | ( | const float16_t * | src, |
| float16_t | scale, | ||
| float16_t * | dst, | ||
| uint32_t | block_size ) |
#include <zephyr/dsp/basicmath_f16.h>
Multiplies a floating-point vector by a scalar.
| [in] | src | points to the input vector |
| [in] | scale | scale factor to be applied |
| [out] | dst | points to the output vector |
| [in] | block_size | number of samples in the vector |
| DSP_FUNC_SCOPE void zdsp_scale_f32 | ( | const DSP_DATA float32_t * | src, |
| float32_t | scale, | ||
| DSP_DATA float32_t * | dst, | ||
| uint32_t | block_size ) |
#include <zephyr/dsp/basicmath.h>
Multiplies a floating-point vector by a scalar.
| [in] | src | points to the input vector |
| [in] | scale | scale factor to be applied |
| [out] | dst | points to the output vector |
| [in] | block_size | number of samples in the vector |
| DSP_FUNC_SCOPE void zdsp_scale_q15 | ( | const DSP_DATA q15_t * | src, |
| q15_t | scale_fract, | ||
| int8_t | shift, | ||
| DSP_DATA q15_t * | dst, | ||
| uint32_t | block_size ) |
#include <zephyr/dsp/basicmath.h>
Multiplies a Q15 vector by a scalar.
*src and scale_fract 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.| [in] | src | points to the input vector |
| [in] | scale_fract | fractional portion of the scale value |
| [in] | shift | number of bits to shift the result by |
| [out] | dst | points to the output vector |
| [in] | block_size | number of samples in the vector |
| DSP_FUNC_SCOPE void zdsp_scale_q31 | ( | const DSP_DATA q31_t * | src, |
| q31_t | scale_fract, | ||
| int8_t | shift, | ||
| DSP_DATA q31_t * | dst, | ||
| uint32_t | block_size ) |
#include <zephyr/dsp/basicmath.h>
Multiplies a Q31 vector by a scalar.
*src and scale_fract 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.| [in] | src | points to the input vector |
| [in] | scale_fract | fractional portion of the scale value |
| [in] | shift | number of bits to shift the result by |
| [out] | dst | points to the output vector |
| [in] | block_size | number of samples in the vector |
| DSP_FUNC_SCOPE void zdsp_scale_q7 | ( | const DSP_DATA q7_t * | src, |
| q7_t | scale_fract, | ||
| int8_t | shift, | ||
| DSP_DATA q7_t * | dst, | ||
| uint32_t | block_size ) |
#include <zephyr/dsp/basicmath.h>
Multiplies a Q7 vector by a scalar.
*src and scale_fract 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.| [in] | src | points to the input vector |
| [in] | scale_fract | fractional portion of the scale value |
| [in] | shift | number of bits to shift the result by |
| [out] | dst | points to the output vector |
| [in] | block_size | number of samples in the vector |