diff --git a/libcelt/fixed_c5x.h b/libcelt/fixed_c5x.h index 80efd9bf..53c16c5f 100644 --- a/libcelt/fixed_c5x.h +++ b/libcelt/fixed_c5x.h @@ -59,4 +59,7 @@ #undef MULT_16_16 #define MULT_16_16(a,b) _lmpy(a,b) +#define celt_ilog2(x) (30 - _lnorm(x)) +#define OVERRIDE_CELT_ILOG2 + #endif /* FIXED_C5X_H */ diff --git a/libcelt/mathops.h b/libcelt/mathops.h index adaa3d1f..9269fb7e 100644 --- a/libcelt/mathops.h +++ b/libcelt/mathops.h @@ -55,12 +55,15 @@ #include "entcode.h" #include "os_support.h" +#ifndef OVERRIDE_CELT_ILOG2 /** Integer log in base2. Undefined for zero and negative numbers */ static inline celt_int16_t celt_ilog2(celt_word32_t x) { celt_assert2(x>0, "celt_ilog2() only defined for strictly positive numbers"); return EC_ILOG(x)-1; } +#endif + /** Integer log in base2. Defined for zero, but not for negative numbers */ static inline celt_int16_t celt_zlog2(celt_word32_t x)