Home | History | Annotate | Download | only in include
      1 /*
      2  $License:
      3     Copyright (C) 2011 InvenSense Corporation, All Rights Reserved.
      4  $
      5  */
      6 /*******************************************************************************
      7  *
      8  * $Id: mlmath.h 5629 2011-06-11 03:13:08Z mcaramello $
      9  *
     10  *******************************************************************************/
     11 
     12 #ifndef _ML_MATH_H_
     13 #define	_ML_MATH_H_
     14 
     15 #ifndef MLMATH
     16 // This define makes Microsoft pickup things like M_PI
     17 #define _USE_MATH_DEFINES
     18 #include <math.h>
     19 
     20 #ifdef WIN32
     21 // Microsoft doesn't follow standards
     22 #define  round(x)(((double)((long long)((x)>0?(x)+.5:(x)-.5))))
     23 #define roundf(x)(((float )((long long)((x)>0?(x)+.5f:(x)-.5f))))
     24 #endif
     25 
     26 #else  // MLMATH
     27 
     28 #ifdef __cplusplus
     29 extern "C" {
     30 #endif
     31 /* MPL needs below functions */
     32 double	ml_asin(double);
     33 double	ml_atan(double);
     34 double	ml_atan2(double, double);
     35 double	ml_log(double);
     36 double	ml_sqrt(double);
     37 double	ml_ceil(double);
     38 double	ml_floor(double);
     39 double  ml_cos(double);
     40 double  ml_sin(double);
     41 double  ml_acos(double);
     42 #ifdef __cplusplus
     43 } // extern "C"
     44 #endif
     45 
     46 /*
     47  * We rename functions here to provide the hook for other
     48  * customized math functions.
     49  */
     50 #define	sqrt(x)      ml_sqrt(x)
     51 #define	log(x)       ml_log(x)
     52 #define	asin(x)      ml_asin(x)
     53 #define	atan(x)      ml_atan(x)
     54 #define	atan2(x,y)   ml_atan2(x,y)
     55 #define	ceil(x)      ml_ceil(x)
     56 #define	floor(x)     ml_floor(x)
     57 #define fabs(x)      (((x)<0)?-(x):(x))
     58 #define round(x)     (((double)((long long)((x)>0?(x)+.5:(x)-.5))))
     59 #define roundf(x)    (((float )((long long)((x)>0?(x)+.5f:(x)-.5f))))
     60 #define cos(x)       ml_cos(x)
     61 #define sin(x)       ml_sin(x)
     62 #define acos(x)      ml_acos(x)
     63 
     64 #define pow(x,y)     ml_pow(x,y)
     65 
     66 #ifdef LINUX
     67 /* stubs for float version of math functions */
     68 #define cosf(x)      ml_cos(x)
     69 #define sinf(x)      ml_sin(x)
     70 #define atan2f(x,y)  ml_atan2(x,y)
     71 #define sqrtf(x)     ml_sqrt(x)
     72 #endif
     73 
     74 
     75 
     76 #endif // MLMATH
     77 
     78 #ifndef M_PI
     79 #define M_PI 3.14159265358979
     80 #endif
     81 
     82 #ifndef ABS
     83 #define ABS(x) (((x)>=0)?(x):-(x))
     84 #endif
     85 
     86 #ifndef MIN
     87 #define MIN(x,y) (((x)<(y))?(x):(y))
     88 #endif
     89 
     90 #ifndef MAX
     91 #define MAX(x,y) (((x)>(y))?(x):(y))
     92 #endif
     93 
     94 /*---------------------------*/
     95 #endif /* !_ML_MATH_H_ */
     96