xref: /openbmc/linux/lib/math/int_pow.c (revision cdd38c5f1ce4398ec58fec95904b75824daab7b5)
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/math.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   */
int_pow(u64 base,unsigned int exp)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