[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