The most efficient way to implement an integer based power function pow(int, int)

algorithm, c, exponentiation, math

Solution

Exponentiation by squaring.

int ipow(int base, int exp)
{
    int result = 1;
    for (;;)
    {
        if (exp & 1)
            result *= base;
        exp >>= 1;
        if (!exp)
            break;
        base *= base;
    }

    return result;
}

This is the standard method for doing modular exponentiation for huge numbers in asymmetric cryptography.

Problem

What is the most efficient way given to raise an integer to the power of another integer in C? ``` // 2^3 pow(2,3) == 8 // 5^5 pow(5,5) == 3125 ```

Original source

Related problems