[Bf-blender-cvs] [bdf6393] master: Math Lib: pow_i for int power-of
Campbell Barton
noreply at git.blender.org
Fri Apr 24 03:41:46 CEST 2015
Commit: bdf6393c98cf87d1e67e6b664037a00383806ffe
Author: Campbell Barton
Date: Fri Apr 24 11:37:48 2015 +1000
Branches: master
https://developer.blender.org/rBbdf6393c98cf87d1e67e6b664037a00383806ffe
Math Lib: pow_i for int power-of
===================================================================
M source/blender/blenlib/BLI_math_base.h
M source/blender/blenlib/intern/math_base.c
===================================================================
diff --git a/source/blender/blenlib/BLI_math_base.h b/source/blender/blenlib/BLI_math_base.h
index ae2b6a4..79a2d57 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 cddfde3..0a1e9e8 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)
More information about the Bf-blender-cvs
mailing list