xref: /openbmc/linux/lib/math/int_pow.c (revision 3dc4b6fb)
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * An integer based power function
4  *
5  * Derived from drivers/video/backlight/pwm_bl.c
6  */
7 
8 #include <linux/export.h>
9 #include <linux/kernel.h>
10 #include <linux/types.h>
11 
12 /**
13  * int_pow - computes the exponentiation of the given base and exponent
14  * @base: base which will be raised to the given power
15  * @exp: power to be raised to
16  *
17  * Computes: pow(base, exp), i.e. @base raised to the @exp power
18  */
19 u64 int_pow(u64 base, unsigned int exp)
20 {
21 	u64 result = 1;
22 
23 	while (exp) {
24 		if (exp & 1)
25 			result *= base;
26 		exp >>= 1;
27 		base *= base;
28 	}
29 
30 	return result;
31 }
32 EXPORT_SYMBOL_GPL(int_pow);
33