diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-04-24 04:37:48 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-04-24 04:37:48 +0300 |
commit | bdf6393c98cf87d1e67e6b664037a00383806ffe (patch) | |
tree | d448186859c7cd3bd2df16751202ba687b314fd8 | |
parent | f829f556b430050ff8e87e7f287a468e94cd7e77 (diff) |
Math Lib: pow_i for int power-of
-rw-r--r-- | source/blender/blenlib/BLI_math_base.h | 1 | ||||
-rw-r--r-- | source/blender/blenlib/intern/math_base.c | 15 |
2 files changed, 16 insertions, 0 deletions
diff --git a/source/blender/blenlib/BLI_math_base.h b/source/blender/blenlib/BLI_math_base.h index ae2b6a4da9f..79a2d57c966 100644 --- a/source/blender/blenlib/BLI_math_base.h +++ b/source/blender/blenlib/BLI_math_base.h @@ -214,6 +214,7 @@ MINLINE int iroundf(float a); MINLINE int divide_round_i(int a, int b); MINLINE int mod_i(int i, int n); +int pow_i(int base, int exp); double double_round(double x, int ndigits); #ifdef BLI_MATH_GCC_WARN_PRAGMA diff --git a/source/blender/blenlib/intern/math_base.c b/source/blender/blenlib/intern/math_base.c index cddfde371f5..0a1e9e8a8a1 100644 --- a/source/blender/blenlib/intern/math_base.c +++ b/source/blender/blenlib/intern/math_base.c @@ -31,6 +31,21 @@ #include "BLI_strict_flags.h" +int pow_i(int base, int exp) +{ + int result = 1; + BLI_assert(exp >= 0); + while (exp) { + if (exp & 1) { + result *= base; + } + exp >>= 1; + base *= base; + } + + return result; +} + /* from python 3.1 floatobject.c * ndigits must be between 0 and 21 */ double double_round(double x, int ndigits) |