| 1 | |
| 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 |
|
| 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);
|