minor doc update
[opus.git] / libcelt / mathops.h
index 92adbe1..4944391 100644 (file)
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions
    are met:
-   
+
    - Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
-   
+
    - Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.
-   
-   - Neither the name of the Xiph.org Foundation nor the names of its
-   contributors may be used to endorse or promote products derived from
-   this software without specific prior written permission.
-   
+
    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 #include "os_support.h"
 
 /* Multiplies two 16-bit fractional values. Bit-exactness of this macro is important */
-#define FRAC_MUL16(a,b) ((16384+((celt_int32)(celt_int16)(a)*(celt_int16)(b)))>>15)
+#define FRAC_MUL16(a,b) ((16384+((opus_int32)(opus_int16)(a)*(opus_int16)(b)))>>15)
 
-unsigned isqrt32(celt_uint32 _val);
+unsigned isqrt32(opus_uint32 _val);
 
 #ifndef FIXED_POINT
 
+#define PI 3.141592653f
 #define celt_sqrt(x) ((float)sqrt(x))
 #define celt_rsqrt(x) (1.f/celt_sqrt(x))
 #define celt_rsqrt_norm(x) (celt_rsqrt(x))
-#define celt_acos acos
-#define celt_exp exp
-#define celt_cos_norm(x) ((float)cos((.5f*M_PI)*(x)))
-#define celt_atan atan
+#define celt_cos_norm(x) ((float)cos((.5f*PI)*(x)))
 #define celt_rcp(x) (1.f/(x))
 #define celt_div(a,b) ((a)/(b))
 #define frac_div32(a,b) ((float)(a)/(b))
@@ -72,7 +66,7 @@ static inline float celt_log2(float x)
    float frac;
    union {
       float f;
-      celt_uint32 i;
+      opus_uint32 i;
    } in;
    in.f = x;
    integer = (in.i>>23)-127;
@@ -90,7 +84,7 @@ static inline float celt_exp2(float x)
    float frac;
    union {
       float f;
-      celt_uint32 i;
+      opus_uint32 i;
    } res;
    integer = floor(x);
    if (integer < -50)
@@ -110,27 +104,24 @@ static inline float celt_exp2(float x)
 
 #endif
 
-
-
 #ifdef FIXED_POINT
 
 #include "os_support.h"
 
 #ifndef OVERRIDE_CELT_ILOG2
 /** Integer log in base2. Undefined for zero and negative numbers */
-static inline celt_int16 celt_ilog2(celt_int32 x)
+static inline opus_int16 celt_ilog2(opus_int32 x)
 {
    celt_assert2(x>0, "celt_ilog2() only defined for strictly positive numbers");
    return EC_ILOG(x)-1;
 }
 #endif
 
-
 #ifndef OVERRIDE_CELT_MAXABS16
-static inline celt_word16 celt_maxabs16(celt_word16 *x, int len)
+static inline opus_val16 celt_maxabs16(opus_val16 *x, int len)
 {
    int i;
-   celt_word16 maxval = 0;
+   opus_val16 maxval = 0;
    for (i=0;i<len;i++)
       maxval = MAX16(maxval, ABS16(x[i]));
    return maxval;
@@ -138,25 +129,24 @@ static inline celt_word16 celt_maxabs16(celt_word16 *x, int len)
 #endif
 
 /** Integer log in base2. Defined for zero, but not for negative numbers */
-static inline celt_int16 celt_zlog2(celt_word32 x)
+static inline opus_int16 celt_zlog2(opus_val32 x)
 {
    return x <= 0 ? 0 : celt_ilog2(x);
 }
 
-celt_word16 celt_rsqrt_norm(celt_word32 x);
-
-celt_word32 celt_sqrt(celt_word32 x);
+opus_val16 celt_rsqrt_norm(opus_val32 x);
 
-celt_word16 celt_cos_norm(celt_word32 x);
+opus_val32 celt_sqrt(opus_val32 x);
 
+opus_val16 celt_cos_norm(opus_val32 x);
 
-static inline celt_word16 celt_log2(celt_word32 x)
+static inline opus_val16 celt_log2(opus_val32 x)
 {
    int i;
-   celt_word16 n, frac;
+   opus_val16 n, frac;
    /* -0.41509302963303146, 0.9609890551383969, -0.31836011537636605,
        0.15530808010959576, -0.08556153059057618 */
-   static const celt_word16 C[5] = {-6801+(1<<13-DB_SHIFT), 15746, -5217, 2545, -1401};
+   static const opus_val16 C[5] = {-6801+(1<<(13-DB_SHIFT)), 15746, -5217, 2545, -1401};
    if (x==0)
       return -32767;
    i = celt_ilog2(x);
@@ -176,10 +166,10 @@ static inline celt_word16 celt_log2(celt_word32 x)
 #define D2 14819
 #define D3 10204
 /** Base-2 exponential approximation (2^x). (Q10 input, Q16 output) */
-static inline celt_word32 celt_exp2(celt_word16 x)
+static inline opus_val32 celt_exp2(opus_val16 x)
 {
    int integer;
-   celt_word16 frac;
+   opus_val16 frac;
    integer = SHR16(x,10);
    if (integer>14)
       return 0x7f000000;
@@ -190,11 +180,11 @@ static inline celt_word32 celt_exp2(celt_word16 x)
    return VSHR32(EXTEND32(frac), -integer-2);
 }
 
-celt_word32 celt_rcp(celt_word32 x);
+opus_val32 celt_rcp(opus_val32 x);
 
-#define celt_div(a,b) MULT32_32_Q31((celt_word32)(a),celt_rcp(b))
+#define celt_div(a,b) MULT32_32_Q31((opus_val32)(a),celt_rcp(b))
 
-celt_word32 frac_div32(celt_word32 a, celt_word32 b);
+opus_val32 frac_div32(opus_val32 a, opus_val32 b);
 
 #define M1 32767
 #define M2 -21
@@ -203,7 +193,7 @@ celt_word32 frac_div32(celt_word32 a, celt_word32 b);
 
 /* Atan approximation using a 4th order polynomial. Input is in Q15 format
    and normalized by pi/4. Output is in Q15 format */
-static inline celt_word16 celt_atan01(celt_word16 x)
+static inline opus_val16 celt_atan01(opus_val16 x)
 {
    return MULT16_16_P15(x, ADD32(M1, MULT16_16_P15(x, ADD32(M2, MULT16_16_P15(x, ADD32(M3, MULT16_16_P15(M4, x)))))));
 }
@@ -214,17 +204,17 @@ static inline celt_word16 celt_atan01(celt_word16 x)
 #undef M4
 
 /* atan2() approximation valid for positive input values */
-static inline celt_word16 celt_atan2p(celt_word16 y, celt_word16 x)
+static inline opus_val16 celt_atan2p(opus_val16 y, opus_val16 x)
 {
    if (y < x)
    {
-      celt_word32 arg;
+      opus_val32 arg;
       arg = celt_div(SHL32(EXTEND32(y),15),x);
       if (arg >= 32767)
          arg = 32767;
       return SHR16(celt_atan01(EXTRACT16(arg)),1);
    } else {
-      celt_word32 arg;
+      opus_val32 arg;
       arg = celt_div(SHL32(EXTEND32(x),15),y);
       if (arg >= 32767)
          arg = 32767;
@@ -233,6 +223,4 @@ static inline celt_word16 celt_atan2p(celt_word16 y, celt_word16 x)
 }
 
 #endif /* FIXED_POINT */
-
-
 #endif /* MATHOPS_H */