Chirp SonicLib  4.5.2
Macros | Typedefs | Functions
ch_math_utils.h File Reference

Functions for performing fixed point arithmetic. https://github.com/dmoulding/log2fix https://github.com/chmike/fpsqrt. More...

#include <stdio.h>
#include <math.h>
#include <stdint.h>

Go to the source code of this file.

Macros

#define FIXED2FLOAT(x)   (((float)(x)) / (1 << FRACT_BITS))
 
#define FIXED2INT(x)   ((x) >> FRACT_BITS)
 
#define FIXED_PI   0x3243FU
 
#define FIXEDDIV(x, y)   ((fixed_t)(((uint64_t)(x) << FRACT_BITS) / (y)))
 
#define FIXEDMUL(x, y)   ((fixed_t)(((x) >> (FRACT_BITS / 2)) * ((y) >> (FRACT_BITS / 2))))
 
#define FLOAT2FIXED(x)   ((fixed_t)((x) * (1 << FRACT_BITS)))
 
#define FRACT_BITS   16
 
#define INT2FIXED(x)   ((x) << FRACT_BITS)
 
#define INV_LOG2_E_Q1DOT31   0x58b90bfcU
 
#define Q31_TO_Q16_SHIFT_1   10
 
#define Q31_TO_Q16_SHIFT_2   (Q31_TO_Q16_SHIFT_BITS - Q31_TO_Q16_SHIFT_1)
 
#define Q31_TO_Q16_SHIFT_BITS   15
 

Typedefs

typedef uint32_t fixed_t
 

Functions

fixed_t FP_log (fixed_t x)
 Find the natural logarithm in UQ16.16 fixed-point format. More...
 
fixed_t FP_log2 (fixed_t x)
 Find the base 2 logarithm in UQ16.16 fixed-point format. More...
 
fixed_t FP_sqrt (fixed_t x)
 
int32_t sqrt_int32 (int32_t v)
 Compute the square root of a 32-bit integer. More...
 

Detailed Description

Functions for performing fixed point arithmetic. https://github.com/dmoulding/log2fix https://github.com/chmike/fpsqrt.

Date
July 20, 2017
Author
nparikh

Function Documentation

◆ FP_log()

fixed_t FP_log ( fixed_t  x)

Find the natural logarithm in UQ16.16 fixed-point format.

Parameters
xFind the natural log of the provided number. This number is is UQ16.16 fixed-point format.
Returns
The natural log of x in UQ16.16 format.

This function is adapted from work by dmoulding with very minor changes. The source for the original function, logfix, can be found here:

https://github.com/dmoulding/log2fix/blob/master/log2fix.c

◆ FP_log2()

fixed_t FP_log2 ( fixed_t  x)

Find the base 2 logarithm in UQ16.16 fixed-point format.

Parameters
xFind the log base-2 of the provided number. This number is is UQ16.16 fixed-point format.
Returns
The log base-2 of x in UQ16.16 format.

This function is adapted from work by dmoulding with very minor changes. The source for the original function, log2fix, can be found here:

https://github.com/dmoulding/log2fix/blob/master/log2fix.c

◆ sqrt_int32()

int32_t sqrt_int32 ( int32_t  v)

Compute the square root of a 32-bit integer.

Parameters
xFind the square root of the provided integer.
Returns
The square root of x as a 32-bit integer.

This function is adapted from work by chmike with very minor changes. The source for the original function, sqrt_i32, can be found here:

https://github.com/chmike/fpsqrt/blob/master/fpsqrt.c