Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How I can create my own pow function using PHP?

I want to create a function in which I put two values (value and its power - Example function: multiply(3, 3) result 27). I have tried so far but failed, I have searched using Google but I have been unable to find any result because I don't know the name of this function.

What I want exactly:

3,3 => 3 x 3 x 3 = 27
4,4 => 4 x 4 x 4 x 4 = 256

What I tried:

function multiply($value,$power){
    for($x = 1; $x <= $value; $x++ ){
        return $c = $value * $power;
    }   
}
echo multiply(3,3);
like image 422
ayaz khane Avatar asked Dec 17 '25 17:12

ayaz khane


1 Answers

The answer has already been accepted, but I had to come here and say that all answers here use a bad algorithm. There are better ones. Including very simple ones, like exponentiation by squaring that reduces the complexity from O(power) to O(log(power)).

The idea is to square the base while dividing the exponent by 2. For example

3^8 = 9^4 = 81^2 = 6561

There is a special case when the exponent is odd. In this case, you must store a separate variable to represent this factor:

2^10 = 4^5 = 16^2 * 4 = 256 * 4 = 1024

PHP isn't one of my strong skills, but the final algorithm is as simple as:

function multiply($value, $power){
    $free = 1;
    while ($power > 1) {
        if ($power % 2 == 1)
            $free *= $value;
        $value *= $value;
        $power >>= 1; //integer divison by 2
    }
    return $value*$free;
}
echo multiply(3, 3) . "\n";
echo multiply(2, 10) . "\n";
echo multiply(3, 8) . "\n";
like image 191
Juan Lopes Avatar answered Dec 20 '25 08:12

Juan Lopes



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!