def METHOD_NAME(evm: Evm) -> None:
    """
    Exponential operation of the top 2 elements. Pushes the result back on
    the stack.
    Parameters
    ----------
    evm :
        The current EVM frame.
    """
    # STACK
    base = Uint(pop(evm.stack))
    exponent = Uint(pop(evm.stack))
    # GAS
    # This is equivalent to 1 + floor(log(y, 256)). But in python the log
    # function is inaccurate leading to wrong results.
    exponent_bits = exponent.bit_length()
    exponent_bytes = (exponent_bits + 7) // 8
    charge_gas(
        evm, GAS_EXPONENTIATION + GAS_EXPONENTIATION_PER_BYTE * exponent_bytes
    )
    # OPERATION
    result = U256(pow(base, exponent, U256_CEIL_VALUE))
    push(evm.stack, result)
    # PROGRAM COUNTER
    evm.pc += 1