94 lines
2.2 KiB
C
94 lines
2.2 KiB
C
/***************************************************************************
|
|
*
|
|
* Copyright 2015-2019 BES.
|
|
* All rights reserved. All unpublished rights reserved.
|
|
*
|
|
* No part of this work may be used or reproduced in any form or by any
|
|
* means, or stored in a database or retrieval system, without prior written
|
|
* permission of BES.
|
|
*
|
|
* Use of this work is governed by a license granted by BES.
|
|
* This work contains confidential and proprietary information of
|
|
* BES. which is protected by copyright, trade secret,
|
|
* trademark and other intellectual property rights.
|
|
*
|
|
****************************************************************************/
|
|
#ifndef AE_MATH_H
|
|
#define AE_MATH_H
|
|
|
|
#include <stdint.h>
|
|
#include <math.h>
|
|
|
|
#ifdef __arm__
|
|
#include "arm_math.h"
|
|
#endif
|
|
|
|
#define AE_PI 3.14159265358979323846f
|
|
|
|
#define EPS (1e-7f)
|
|
|
|
#define AE_CLAMP(x,lo,hi) ((x) < (lo) ? (lo) : (x) > (hi) ? (hi) : (x))
|
|
|
|
#ifdef __arm__
|
|
#define AE_SSAT16(x) __SSAT((int32_t)(x), 16)
|
|
#define AE_SSAT24(x) __SSAT((int32_t)(x), 24)
|
|
#else
|
|
#define AE_SSAT16(x) AE_CLAMP(x,-32768,32767)
|
|
#define AE_SSAT24(x) AE_CLAMP(x,-16777216,16777215)
|
|
#endif
|
|
|
|
#define AE_ABS(x) ((x) > 0 ? (x) : (-(x)))
|
|
|
|
#define AE_FLOOR(x) (floorf(x))
|
|
|
|
#define AE_ROUND(x) (roundf(x))
|
|
|
|
#define AE_INT(x) ((int)(x))
|
|
|
|
// deal with x > -1 && x < 0
|
|
#define AE_SIGN(x) ((AE_INT(x) == 0 && (x) < 0) ? "-" : "")
|
|
|
|
#define AE_FRAC(x) ((int)(((x) > 0 ? ((x) - AE_INT(x)) : (AE_INT(x) - (x))) * 1000000))
|
|
|
|
#define AE_MIN(a,b) ((a) < (b) ? (a) : (b))
|
|
|
|
#define AE_MAX(a,b) ((a) > (b) ? (a) : (b))
|
|
|
|
#define SQUARE(x) ((x) * (x))
|
|
|
|
#define DB2LIN(x) (powf(10.f, (x) / 20.f))
|
|
|
|
#ifdef VQE_SIMULATE
|
|
#define AE_SIN(x) sinf(x)
|
|
#define AE_COS(x) cosf(x)
|
|
#else
|
|
#define AE_SIN(x) arm_sin_f32(x)
|
|
#define AE_COS(x) arm_cos_f32(x)
|
|
#endif
|
|
|
|
int ae_gcd(int u, int v);
|
|
|
|
int ipow(int base, int exp);
|
|
|
|
float ipowf(float base, int exp);
|
|
|
|
float pow_int(float base, int exp);
|
|
|
|
float expint(int n, float x);
|
|
|
|
float sqrt_approx(float z);
|
|
|
|
#define AE_RAND_MAX (32767)
|
|
|
|
void ae_srand(unsigned int init);
|
|
|
|
int ae_rand(void);
|
|
|
|
void speech_conv(float *x, float *y, short len1,int len2, float *out);
|
|
|
|
void scale_int16(int16_t *pDst, int16_t *pSrc, float scale, uint32_t blockSize);
|
|
|
|
int32_t nextpow2(int32_t N);
|
|
|
|
#endif
|