Fixed point fractional number types and conversion routines. More...
Functions | |
Q7n8 | Q7n8_mult (Q7n8 a, Q7n8 b) |
Fast fixed point multiply for Q7n8 fractional numbers. More... | |
uint8_t | uint8_tMod (uint8_t n, uint8_t d) |
fast uint8_t modulus More... | |
uint8_t | uint8_tDiv (uint8_t n, uint8_t d) |
Fast uint8_t division. More... | |
uint8_t | uint8_tRnd (uint8_t min, uint8_t max) |
int | ipow (int base, int exp) |
Q16n16 | Q16n16_pow2 (Q8n8 exponent) |
fast replacement for pow(2,x), where x is a Q8n8 fractional fixed-point exponent. More... | |
uint32_t | isqrt32 (uint32_t n) |
uint16_t | isqrt16 (uint16_t n) |
typedef int8_t | Q0n7 |
signed fractional number using 7 fractional bits, represents -0.5 to 0.496 | |
typedef int8_t | Q7n0 |
ordinary old signed Q7n0 int8_t with 0 fractional bits, represents -128 to 127 | |
typedef uint8_t | Q0n8 |
unsigned fractional number using 8 fractional bits, represents 0.0 to 0.996 | |
typedef uint8_t | Q8n0 |
normal uint8_t with 0 fractional bits, represents 0.0 to 255.0 | |
typedef uint16_t | Q0n16 |
unsigned fractional number using 16 fractional bits, represents 0.0 to 0.999 | |
typedef uint32_t | Q0n31 |
signed number using 0 integer bits and 31 fractional bits, represents -0.2147483648 to 0.2147483647 | |
typedef int16_t | Q7n8 |
signed fractional number using 7 integer bits and 8 fractional bits, represents -127.996 to 127.996 | |
typedef uint16_t | Q3n13 |
unsigned fractional number using 3 integer bits and 13 fractional bits, represents 0 to 7.999 | |
typedef int16_t | Q1n14 |
signed fractional number using 1 integer bit and 14 fractional bits, represents -1.999 to 1.999 | |
typedef int16_t | Q15n0 |
signed number using 15 integer bits and 0 fractional bits, represents -32768 to 32767 | |
typedef uint16_t | Q8n8 |
unsigned fractional number using 8 integer bits and 8 fractional bits, represents 0 to 255.996 | |
typedef int16_t | Q0n15 |
signed fractional number using 0 integer bits and 15 fractional bits, represents -0.32768 to 0.32767 | |
typedef uint16_t | Q1n15 |
unsigned fractional number using 1 integer bit and 15 fractional bits, represents 0 to 1.999 | |
typedef uint16_t | Q16n0 |
unsigned number using 16 integer bits and 0 fractional bits, represents 0 to 65536.0 | |
typedef int32_t | Q23n8 |
signed fractional number using 23 integer bits and 8 fractional bits, represents -8388607.996 to 8388607.996 | |
typedef int32_t | Q15n16 |
signed fractional number using 15 integer bits and 16 fractional bits, represents -32767.999 to 32767.999 | |
typedef int32_t | Q31n0 |
signed (normal int32_t int16_t) number using 31 integer bits and 0 fractional bits, represents -2147483648 to 2147483647 | |
typedef uint32_t | Q32n0 |
unsigned (normal uint32_t int16_t) number using 32 integer bits and 0 fractional bits, represents 0 to 4294967295 | |
typedef uint32_t | Q0n32 |
unsigned fractional number using 0 integer bits and 32 fractional bits, represents 0 to 0.999999999767169 | |
typedef uint32_t | Q8n24 |
signed fractional number using 8 integer bits and 24 fractional bits, represents 0 to 255.999 | |
typedef uint32_t | Q24n8 |
unsigned fractional number using 24 integer bits and 8 fractional bits, represents 0 to 16777215 | |
typedef uint32_t | Q16n16 |
unsigned fractional number using 16 integer bits and 16 fractional bits, represents 0 to 65535.999 | |
#define | Q0n7_FIX1 ((Q0n7) 127) |
0.992 in Q0n7 format | |
#define | Q7n8_FIX1 ((Q7n8) 256) |
1 in Q7n8 format | |
#define | Q8n8_FIX1 ((Q8n8) 256) |
1 in Q8n8 format | |
#define | Q23n8_FIX1 ((Q23n8) 256) |
1 in Q23n8 format | |
#define | Q1n14_FIX1 ((Q1n14) 16384) |
1 in Q1n14 format | |
#define | Q1n15_FIX1 ((Q1n15) 32768) |
1 in Q1n15 format | |
#define | Q16n16_FIX1 ((Q16n16) 65536) |
1 in Q16n16 format | |
#define | Q0n15_FIX1 ((Q0n15) 32767) |
0.999 in Q0n15 format | |
#define | Q0n16_FIX1 ((Q0n16) 65535) |
0.999 in Q0n16 format | |
#define | Q15n0_FIX1 ((Q15n0) 16384) |
1 in Q15n0 format | |
#define | Q15n16_FIX1 ((Q15n16) 65536) |
1 in Q15n16 format | |
#define | Q8n24_FIX1 ((Q8n24) 16777216) |
1 in Q8n24 format | |
#define | Q0n32_FIX1 ((Q0n32) 4294967295) |
0.999999999767169 in Q0n32 format | |
#define | Q16n16_PI ((Q16n16) 205887) |
PI in Q16n16 format. | |
#define | Q3n13_2PI ((Q3n13) 411775) |
2*PI in Q3n13 format | |
#define | Q16n16_2PI ((Q16n16) 411775) |
2*PI in Q16n16 format | |
#define | low15bits ((Q1n15) 32767) |
Useful for keeping the lower 15 bits of a Q1n15 number, using &. | |
Q0n7 | float_to_Q0n7 (float a) |
Convert float to Q0n7 fix. More... | |
Q0n8 | float_to_Q0n8 (float a) |
Convert float to Q0n8 fix. More... | |
Q7n8 | float_to_Q7n8 (float a) |
Convert float to Q7n8 fix. More... | |
Q8n8 | float_to_Q8n8 (float a) |
Convert float to Q8n8 fix. More... | |
Q1n14 | float_to_Q1n14 (float a) |
Convert float to Q1n14 fix. More... | |
Q1n15 | float_to_Q1n15 (float a) |
Convert float to Q1n15 fix. More... | |
Q8n24 | float_to_Q8n24 (float a) |
Convert float to Q8n24 fix. More... | |
Q23n8 | float_to_Q23n8 (float a) |
Convert float to Q23n8 fix. More... | |
Q24n8 | float_to_Q24n8 (float a) |
Convert float to Q24n8 fix. More... | |
Q16n16 | float_to_Q16n16 (float a) |
Convert float to Q16n16 fix. More... | |
Q0n16 | float_to_Q0n16 (float a) |
Convert float to Q0n16 fix. More... | |
Q15n16 | float_to_Q15n16 (float a) |
Convert float to Q15n16 fix. More... | |
Q1n14 | Q0n7_to_Q1n14 (Q0n7 a) |
Convert Q0n7 int8_t to Q1n14 fix. More... | |
Q15n16 | Q0n7_to_Q15n16 (Q0n7 a) |
Convert Q0n7 signed int8_t to Q15n16 fix. More... | |
float | Q0n7_to_float (Q0n7 a) |
Convert Q0n7 fix to float. More... | |
Q1n15 | Q0n8_to_Q1n15 (Q0n8 a) |
Convert Q0n8 uint8_t to Q1n15 fix. More... | |
Q8n8 | Q0n8_to_Q8n8 (Q0n8 a) |
Convert Q0n8 uint8_t to Q8n8 fix. More... | |
Q8n24 | Q0n8_to_Q8n24 (Q0n8 a) |
Convert Q0n8 uint8_t to Q8n24 fix. More... | |
Q24n8 | Q0n8_to_Q24n8 (Q0n8 a) |
Convert Q0n8 uint8_t to Q24n8 fix. More... | |
Q15n16 | Q0n8_to_Q15n16 (Q0n8 a) |
Convert Q0n8 uint8_t to Q15n16 fix. More... | |
Q16n16 | Q0n8_to_Q16n16 (Q0n8 a) |
Convert Q0n8 uint8_t to Q16n16 fix. More... | |
float | Q0n8_to_float (Q0n8 a) |
Convert Q0n8 fix to float. More... | |
Q7n8 | Q7n0_to_Q7n8 (Q7n0 a) |
Convert Q7n0 int8_t to Q7n8 fix. More... | |
Q15n16 | Q7n0_to_Q15n16 (Q7n0 a) |
Convert Q7n0 int8_t to Q15n16 fix. More... | |
Q7n8 | Q8n0_to_Q7n8 (Q8n0 a) |
Convert Q8n0 uint8_t to Q7n8 fix. More... | |
Q8n8 | Q8n0_to_Q8n8 (Q8n0 a) |
Convert uint8_t to Q8n8 fix. More... | |
Q15n16 | Q8n0_to_Q15n16 (Q8n0 a) |
Convert Q8n0 uint8_t to Q15n16 fix. More... | |
Q16n16 | Q8n0_to_Q16n16 (Q8n0 a) |
Convert Q8n0 uint8_t to Q16n16 fix. More... | |
Q7n0 | Q7n8_to_Q7n0 (Q7n8 a) |
Convert Q7n8 fix to Q7n0. More... | |
Q15n16 | Q7n8_to_Q15n16 (Q7n8 a) |
Convert Q7n8 fix to Q15n16. More... | |
float | Q7n8_to_float (Q7n8 a) |
Convert Q7n8 fix to float. More... | |
Q8n0 | Q8n8_to_Q8n0 (Q8n8 a) |
Convert Q8n8 fix to Q8n0 uint8_t. More... | |
Q16n16 | Q8n8_to_Q16n16 (Q8n8 a) |
Convert Q8n8 fix to Q16n16 uint32_t. More... | |
float | Q8n8_to_float (Q8n8 a) |
Convert Q8n8 fix to float. More... | |
Q0n7 | Q1n14_to_Q0n7 (Q1n14 a) |
Convert Q1n14 fixed to Q0n7 int8_t. More... | |
float | Q1n14_to_float (Q1n14 a) |
Convert fix to float. More... | |
Q0n8 | Q1n15_to_Q0n8 (Q1n15 a) |
Convert Q1n15 fixed to Q0n8 uint8_t. More... | |
float | Q1n15_to_float (Q1n15 a) |
Convert fix to float. More... | |
float | Q0n16_to_float (Q0n16 a) |
Convert fix to float. More... | |
Q15n16 | Q15n0_to_Q15n16 (Q15n0 a) |
Convert Q15n0 int16_t to Q15n16 fix. More... | |
Q15n16 | Q16n0_to_Q15n16 (Q16n0 a) |
Convert Q16n0 uint16_t to Q15n16 fix. More... | |
Q23n8 | Q16n0_to_Q23n8 (Q16n0 a) |
Convert Q16n0 uint16_t to Q23n8 fixed point signed int32_t. More... | |
Q24n8 | Q16n0_to_Q24n8 (Q16n0 a) |
Convert Q16n0 uint16_t to Q24n8 fixed point uint32_t. More... | |
Q16n16 | Q16n0_to_Q16n16 (Q16n0 a) |
Convert Q16n0 uint16_t to Q16n16 fixed point uint32_t. More... | |
float | Q16n0_to_float (Q16n0 a) |
Convert Q16n0 uint16_t to float. More... | |
Q0n8 | Q8n24_to_Q0n8 (Q8n24 a) |
Convert Q8n24 fixed to Q0n8 uint8_t. More... | |
float | Q8n24_to_float (Q8n24 a) |
Convert fix to float. More... | |
Q31n0 | Q23n8_to_Q31n0 (Q23n8 a) |
Convert Q23n8 fixed to Q31n0 int32_t. More... | |
Q16n0 | Q23n8_to_Q16n0 (Q23n8 a) |
Convert Q23n8 fixed to Q16n0 uint16_t. More... | |
Q15n0 | Q23n8_to_Q15n0 (Q23n8 a) |
Convert Q23n8 fixed to Q15n0 signed int16_t. More... | |
Q7n8 | Q23n8_to_Q7n8 (Q23n8 a) |
Convert Q23n8 fixed to Q7n8 signed int16_t, losing most significant bits. More... | |
float | Q23n8_to_float (Q23n8 a) |
Convert fix to float. More... | |
Q0n8 | Q24n8_to_Q0n8 (Q24n8 a) |
Convert Q24n8 fixed to Q0n8 uint8_t. More... | |
Q16n16 | Q24n8_to_Q16n0 (Q24n8 a) |
Convert Q24n8 fixed to Q16n0 uint16_t. More... | |
Q32n0 | Q24n8_to_Q32n0 (Q24n8 a) |
Convert Q24n8 fixed to Q32n0 uint32_t. More... | |
Q16n16 | Q24n8_to_Q16n16 (Q24n8 a) |
Convert Q24n8 fixed to Q16n16 uint32_t. More... | |
float | Q24n8_to_float (Q24n8 a) |
Convert fix to float. More... | |
Q0n8 | Q15n16_to_Q0n8 (Q15n16 a) |
Convert Q15n16 fixed to Q0n8 uint8_t. More... | |
Q8n0 | Q15n16_to_Q8n0 (Q15n16 a) |
Convert Q15n16 fixed to Q8n0 uint8_t. More... | |
Q15n0 | Q15n16_to_Q15n0 (Q15n16 a) |
Convert Q15n16 fixed to Q15n0 signed int16_t. More... | |
Q7n8 | Q15n16_to_Q7n8 (Q15n16 a) |
Convert Q15n16 fixed to Q7n8 signed int16_t, keeping middle bits only. More... | |
Q8n8 | Q15n16_to_Q8n8 (Q15n16 a) |
Convert Q15n16 fixed to Q8n8 signed int16_t, keeping middle bits only. More... | |
Q23n8 | Q15n16_to_Q23n8 (Q15n16 a) |
Convert Q15n16 fixed to Q23n8 signed int32_t. More... | |
float | Q15n16_to_float (Q15n16 a) |
Convert fix to float. More... | |
Q0n8 | Q16n16_to_Q0n8 (Q16n16 a) |
Convert Q16n16 fixed to Q0n8 uint8_t. More... | |
Q8n8 | Q16n16_to_Q8n8 (Q8n8 a) |
Convert Q16n16 fixed to Q8n8 uint16_t. More... | |
Q16n0 | Q16n16_to_Q16n0 (Q16n16 a) |
Convert Q16n16 fixed to Q16n0 uint16_t. More... | |
Q24n8 | Q16n16_to_Q24n8 (Q16n16 a) |
Convert Q16n16 fixed to Q24n8 uint32_t. More... | |
float | Q16n16_to_float (Q16n16 a) |
Convert fix to float. More... | |
Fixed point fractional number types and conversion routines.
Fixed point is often best for fast audio code for Arduino, and these can ease some of the pain.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Convert fix to float.
a | is a Q0n16 uint16_t |
Definition at line 208 of file mozzi_fixmath.h.
|
inline |
Convert Q0n7 fix to float.
a | is a Q0n7 int8_t |
Definition at line 136 of file mozzi_fixmath.h.
Convert Q0n7 signed int8_t to Q15n16 fix.
a | is a Q0n7 signed int8_t |
Definition at line 133 of file mozzi_fixmath.h.
Convert Q0n7 int8_t to Q1n14 fix.
a | is a Q0n7 int8_t |
Definition at line 130 of file mozzi_fixmath.h.
|
inline |
Convert Q0n8 fix to float.
a | is a Q0n8 uint8_t |
Definition at line 157 of file mozzi_fixmath.h.
Convert Q0n8 uint8_t to Q15n16 fix.
a | is a Q0n8 uint8_t |
Definition at line 151 of file mozzi_fixmath.h.
Convert Q0n8 uint8_t to Q16n16 fix.
a | is a Q0n8 uint8_t |
Definition at line 154 of file mozzi_fixmath.h.
Convert Q0n8 uint8_t to Q1n15 fix.
a | is a Q0n8 uint8_t |
Definition at line 139 of file mozzi_fixmath.h.
Convert Q0n8 uint8_t to Q24n8 fix.
a | is a Q0n8 uint8_t |
Definition at line 148 of file mozzi_fixmath.h.
Convert Q0n8 uint8_t to Q8n24 fix.
a | is a Q0n8 uint8_t |
Definition at line 145 of file mozzi_fixmath.h.
Convert Q0n8 uint8_t to Q8n8 fix.
a | is a Q0n8 uint8_t |
Definition at line 142 of file mozzi_fixmath.h.
Convert Q15n0 int16_t to Q15n16 fix.
a | is a Q15n0 int16_t |
Definition at line 211 of file mozzi_fixmath.h.
|
inline |
Convert fix to float.
a | is a Q15n16 signed int32_t |
Definition at line 285 of file mozzi_fixmath.h.
Convert Q15n16 fixed to Q0n8 uint8_t.
Only for positive values!
a | is a Q15n16 signed int32_t |
Definition at line 267 of file mozzi_fixmath.h.
Convert Q15n16 fixed to Q15n0 signed int16_t.
a | is a Q15n16 signed int32_t |
Definition at line 273 of file mozzi_fixmath.h.
Convert Q15n16 fixed to Q23n8 signed int32_t.
a | is a Q15n16 signed int32_t. |
Definition at line 282 of file mozzi_fixmath.h.
Convert Q15n16 fixed to Q7n8 signed int16_t, keeping middle bits only.
a | is a Q15n16 signed int32_t. |
Definition at line 276 of file mozzi_fixmath.h.
Convert Q15n16 fixed to Q8n0 uint8_t.
Only for positive values!
a | is a Q15n16 signed int32_t |
Definition at line 270 of file mozzi_fixmath.h.
Convert Q15n16 fixed to Q8n8 signed int16_t, keeping middle bits only.
a | is a Q15n16 signed int32_t. |
Definition at line 279 of file mozzi_fixmath.h.
|
inline |
Convert Q16n0 uint16_t to float.
a | is a Q16n0 uint16_t |
Definition at line 226 of file mozzi_fixmath.h.
Convert Q16n0 uint16_t to Q15n16 fix.
a | is a Q16n0 uint16_t |
Definition at line 214 of file mozzi_fixmath.h.
Convert Q16n0 uint16_t to Q16n16 fixed point uint32_t.
a | is a Q16n0 uint16_t |
Definition at line 223 of file mozzi_fixmath.h.
Convert Q16n0 uint16_t to Q23n8 fixed point signed int32_t.
a | is a Q16n0 uint16_t |
Definition at line 217 of file mozzi_fixmath.h.
Convert Q16n0 uint16_t to Q24n8 fixed point uint32_t.
a | is a Q16n0 uint16_t |
Definition at line 220 of file mozzi_fixmath.h.
fast replacement for pow(2,x), where x is a Q8n8 fractional fixed-point exponent.
It's less accurate than pow(2,x), but useful where a tradeoff between accuracy and speed is required to keep audio from glitching.
exponent | in Q8n8 format. |
Definition at line 105 of file mozzi_fixmath.cpp.
|
inline |
Convert fix to float.
a | is a Q16n16 uint32_t |
Definition at line 300 of file mozzi_fixmath.h.
Convert Q16n16 fixed to Q0n8 uint8_t.
a | is a Q16n16 uint32_t |
Definition at line 288 of file mozzi_fixmath.h.
Convert Q16n16 fixed to Q16n0 uint16_t.
a | is a Q16n16 uint32_t |
Definition at line 294 of file mozzi_fixmath.h.
Convert Q16n16 fixed to Q24n8 uint32_t.
a | is a Q16n16 uint32_t |
Definition at line 297 of file mozzi_fixmath.h.
Convert Q16n16 fixed to Q8n8 uint16_t.
a | is a Q16n16 uint32_t |
Definition at line 291 of file mozzi_fixmath.h.
|
inline |
Convert Q1n14 fixed to Q0n7 int8_t.
a | is a Q1n14 int16_t |
Definition at line 196 of file mozzi_fixmath.h.
|
inline |
Convert fix to float.
a | is a Q1n15 uint16_t |
Definition at line 205 of file mozzi_fixmath.h.
Convert Q1n15 fixed to Q0n8 uint8_t.
Only for positive values!
a | is a Q1n15 uint16_t |
Definition at line 202 of file mozzi_fixmath.h.
|
inline |
Convert fix to float.
a | is a Q23n8 signed int32_t |
Definition at line 249 of file mozzi_fixmath.h.
Convert Q23n8 fixed to Q15n0 signed int16_t.
a | is a Q23n8 int32_t |
Definition at line 242 of file mozzi_fixmath.h.
Convert Q23n8 fixed to Q16n0 uint16_t.
Positive values only.
a | is a Q23n8 int32_t |
Definition at line 239 of file mozzi_fixmath.h.
Convert Q23n8 fixed to Q31n0 int32_t.
a | is a Q23n8 int32_t |
Definition at line 236 of file mozzi_fixmath.h.
Convert Q23n8 fixed to Q7n8 signed int16_t, losing most significant bits.
a | is a Q23n8 signed int32_t. |
Definition at line 245 of file mozzi_fixmath.h.
|
inline |
Convert fix to float.
a | is a Q24n8 uint32_t |
Definition at line 264 of file mozzi_fixmath.h.
Convert Q24n8 fixed to Q0n8 uint8_t.
a | is a Q24n8 uint32_t |
Definition at line 252 of file mozzi_fixmath.h.
Convert Q24n8 fixed to Q16n0 uint16_t.
a | is a Q24n8 uint32_t |
Definition at line 255 of file mozzi_fixmath.h.
Convert Q24n8 fixed to Q16n16 uint32_t.
a | is a Q24n8 uint32_t |
Definition at line 261 of file mozzi_fixmath.h.
Convert Q24n8 fixed to Q32n0 uint32_t.
a | is a Q24n8 uint32_t |
Definition at line 258 of file mozzi_fixmath.h.
Convert Q7n0 int8_t to Q15n16 fix.
a | is a int8_t |
Definition at line 163 of file mozzi_fixmath.h.
Convert Q7n0 int8_t to Q7n8 fix.
a | is a int8_t |
Definition at line 160 of file mozzi_fixmath.h.
Fast fixed point multiply for Q7n8 fractional numbers.
a | Q7n8 format multiplicand |
b | Q7n8 format multiplier |
Definition at line 340 of file mozzi_fixmath.h.
|
inline |
Convert Q7n8 fix to float.
a | is a Q7n8 int16_t |
Definition at line 184 of file mozzi_fixmath.h.
Convert Q7n8 fix to Q15n16.
a | is a Q7n8 int16_t |
Definition at line 181 of file mozzi_fixmath.h.
Convert Q7n8 fix to Q7n0.
a | is a Q7n8 int16_t |
Definition at line 178 of file mozzi_fixmath.h.
Convert Q8n0 uint8_t to Q15n16 fix.
a | is a Q8n0 uint8_t |
Definition at line 172 of file mozzi_fixmath.h.
Convert Q8n0 uint8_t to Q16n16 fix.
a | is a Q8n0 uint8_t |
Definition at line 175 of file mozzi_fixmath.h.
Convert Q8n0 uint8_t to Q7n8 fix.
a | is a Q8n0 uint8_t*. Beware of overflow. |
Definition at line 166 of file mozzi_fixmath.h.
Convert uint8_t to Q8n8 fix.
a | is a Q8n0 uint8_t |
Definition at line 169 of file mozzi_fixmath.h.
|
inline |
Convert fix to float.
a | is a Q8n24 uint32_t |
Definition at line 232 of file mozzi_fixmath.h.
Convert Q8n24 fixed to Q0n8 uint8_t.
a | is a Q8n24 uint32_t |
Definition at line 229 of file mozzi_fixmath.h.
|
inline |
Convert Q8n8 fix to float.
a | is a Q8n8 uint16_t |
Definition at line 193 of file mozzi_fixmath.h.
Convert Q8n8 fix to Q16n16 uint32_t.
a | is a Q8n8 uint16_t |
Definition at line 190 of file mozzi_fixmath.h.
Convert Q8n8 fix to Q8n0 uint8_t.
a | is a Q8n8 uint16_t |
Definition at line 187 of file mozzi_fixmath.h.
uint8_t uint8_tDiv | ( | uint8_t | n, |
uint8_t | d | ||
) |
Fast uint8_t division.
n | numerator |
d | denominator |
Definition at line 37 of file mozzi_fixmath.cpp.
uint8_t uint8_tMod | ( | uint8_t | n, |
uint8_t | d | ||
) |
fast uint8_t modulus
n | numerator |
d | denominator |
Definition at line 25 of file mozzi_fixmath.cpp.