Zephyr API Documentation 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
utils.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2024 OWL Services LLC. All rights reserved.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
12
13#ifndef INCLUDE_ZEPHYR_DSP_UTILS_H_
14#define INCLUDE_ZEPHYR_DSP_UTILS_H_
15
16#include <stdint.h>
17#include <zephyr/sys/minmax.h>
18#include <zephyr/kernel.h>
19#include <zephyr/dsp/types.h>
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
33
43
52{
53 return (float32_t)((src << m) / (float32_t)(1U << 7));
54}
55
64{
65 return (float32_t)((src << m) / (float32_t)(1U << 15));
66}
67
76{
77 return (float32_t)(((int64_t)src) << m) / (float32_t)(1U << 31);
78}
79
88{
89 return ((float64_t)(src << m)) / (1U << 7);
90}
91
100{
101 return ((float64_t)(src << m)) / (1UL << 15);
102}
103
112{
113 return (float64_t)(((int64_t)src) << m) / (1ULL << 31);
114}
115
119
129
138{
139 return (q7_t)clamp((int32_t)(src * (1U << 7)) >> m, INT8_MIN, INT8_MAX);
140}
141
150{
151 return (q15_t)clamp((int32_t)(src * (1U << 15)) >> m, INT16_MIN, INT16_MAX);
152}
153
162{
163 return (q31_t)clamp((int64_t)(src * (1U << 31)) >> m, INT32_MIN, INT32_MAX);
164}
165
174{
175 return (q7_t)clamp((int32_t)(src * (1U << 7)) >> m, INT8_MIN, INT8_MAX);
176}
177
186{
187 return (q15_t)clamp((int32_t)(src * (1U << 15)) >> m, INT16_MIN, INT16_MAX);
188}
189
198{
199 return (q31_t)clamp((int64_t)(src * (1U << 31)) >> m, INT32_MIN, INT32_MAX);
200}
201
205
209
210#ifdef __cplusplus
211}
212#endif
213
214#endif /* INCLUDE_ZEPHYR_DSP_UTILS_H_ */
static q15_t zdsp_f32_to_q15_shift(float32_t src, uint32_t m)
Convert a floating-point (float32_t) value to a Q15 fixed-point value with a right shift.
Definition utils.h:149
static q31_t zdsp_f64_to_q31_shift(float64_t src, uint32_t m)
Convert a floating-point (float64_t) value to a Q31 fixed-point value with a right shift.
Definition utils.h:197
static q31_t zdsp_f32_to_q31_shift(float32_t src, uint32_t m)
Convert a floating-point (float32_t) value to a Q31 fixed-point value with a right shift.
Definition utils.h:161
static q7_t zdsp_f32_to_q7_shift(float32_t src, uint32_t m)
Convert a floating-point (float32_t) value to a Q7 fixed-point value with a right shift.
Definition utils.h:137
static q15_t zdsp_f64_to_q15_shift(float64_t src, uint32_t m)
Convert a floating-point (float64_t) value to a Q15 fixed-point value with a right shift.
Definition utils.h:185
static q7_t zdsp_f64_to_q7_shift(float64_t src, uint32_t m)
Convert a floating-point (float64_t) value to a Q7 fixed-point value with a right shift.
Definition utils.h:173
static float32_t zdsp_q7_to_f32_shift(q7_t src, uint32_t m)
Convert a Q7 fixed-point value to a floating-point (float32_t) value with a left shift.
Definition utils.h:51
static float64_t zdsp_q7_to_f64_shift(q7_t src, uint32_t m)
Convert a Q7 fixed-point value to a floating-point (float64_t) value with a left shift.
Definition utils.h:87
static float32_t zdsp_q15_to_f32_shift(q15_t src, uint32_t m)
Convert a Q15 fixed-point value to a floating-point (float32_t) value with a left shift.
Definition utils.h:63
static float32_t zdsp_q31_to_f32_shift(q31_t src, uint32_t m)
Convert a Q31 fixed-point value to a floating-point (float32_t) value with a left shift.
Definition utils.h:75
static float64_t zdsp_q15_to_f64_shift(q15_t src, uint32_t m)
Convert a Q15 fixed-point value to a floating-point (float64_t) value with a left shift.
Definition utils.h:99
static float64_t zdsp_q31_to_f64_shift(q31_t src, uint32_t m)
Convert a Q31 fixed-point value to a floating-point (float64_t) value with a left shift.
Definition utils.h:111
float float32_t
32-bit floating-point type definition.
Definition types.h:55
int16_t q15_t
16-bit fractional data type in 1.15 format.
Definition types.h:29
double float64_t
64-bit floating-point type definition.
Definition types.h:61
int32_t q31_t
32-bit fractional data type in 1.31 format.
Definition types.h:35
int8_t q7_t
8-bit fractional data type in 1.7 format.
Definition types.h:23
Public kernel APIs.
Lowercase min/max/clamp helpers.
#define clamp(val, low, high)
Return a value clamped to a given range.
Definition minmax.h:97
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__INT32_TYPE__ int32_t
Definition stdint.h:74
#define INT32_MAX
Definition stdint.h:18
#define INT32_MIN
Definition stdint.h:24
#define INT8_MIN
Definition stdint.h:22
#define INT8_MAX
Definition stdint.h:16
#define INT16_MAX
Definition stdint.h:17
__INT64_TYPE__ int64_t
Definition stdint.h:75
#define INT16_MIN
Definition stdint.h:23