The built-in Math.Pow()
function in .NET raises a double
base to a double
exponent and returns a double
result.
What's the best way to do the same with integers?
Added: It seems that one can just cast Math.Pow()
result to (int), but will this always produce the correct number and no rounding errors?
Basically in C exponent value is calculated using the pow() function. pow() is function to get the power of a number, but we have to use #include<math. h> in c/c++ to use that pow() function. then two numbers are passed.
A pretty fast one might be something like this:
int IntPow(int x, uint pow) { int ret = 1; while ( pow != 0 ) { if ( (pow & 1) == 1 ) ret *= x; x *= x; pow >>= 1; } return ret; }
Note that this does not allow negative powers. I'll leave that as an exercise to you. :)
Added: Oh yes, almost forgot - also add overflow/underflow checking, or you might be in for a few nasty surprises down the road.
LINQ anyone?
public static int Pow(this int bas, int exp) { return Enumerable .Repeat(bas, exp) .Aggregate(1, (a, b) => a * b); }
usage as extension:
var threeToThePowerOfNine = 3.Pow(9);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With