Branch data Line data Source code
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 : 0 : u64 int_pow(u64 base, unsigned int exp) 20 : : { 21 : : u64 result = 1; 22 : : 23 [ # # ]: 0 : while (exp) { 24 [ # # ]: 0 : if (exp & 1) 25 : 0 : result *= base; 26 : 0 : exp >>= 1; 27 : 0 : base *= base; 28 : : } 29 : : 30 : 0 : return result; 31 : : } 32 : : EXPORT_SYMBOL_GPL(int_pow);