'Raises a to the power of b, to modulo if given.
With two arguments, compute a**b.  If a is negative then b
must be integral.  The result will be inexact unless b is
integral and the result is finite and can be expressed exactly
in \'precision\' digits.
With three arguments, compute (a**b) % modulo.  For the
three argument form, the following restrictions on the
arguments hold:
- all three arguments must be integral
- b must be nonnegative
- at least one of a or b must be nonzero
- modulo must be nonzero and have at most \'precision\' digits
The result of pow(a, b, modulo) is identical to the result
that would be obtained by computing (a**b) % modulo with
unbounded precision, but is computed more efficiently.  It is
always exact.
>>> c = ExtendedContext.copy()
>>> c.Emin = -999
>>> c.Emax = 999
>>> c.power(Decimal(\'2\'), Decimal(\'3\'))
Decimal(\'8\')
>>> c.power(Decimal(\'-2\'), Decimal(\'3\'))
Decimal(\'-8\')
>>> c.power(Decimal(\'2\'), Decimal(\'-3\'))
Decimal(\'0.125\')
>>> c.power(Decimal(\'1.7\'), Decimal(\'8\'))
Decimal(\'69.7575744\')
>>> c.power(Decimal(\'10\'), Decimal(\'0.301029996\'))
Decimal(\'2.00000000\')
>>> c.power(Decimal(\'Infinity\'), Decimal(\'-1\'))
Decimal(\'0\')
>>> c.power(Decimal(\'Infinity\'), Decimal(\'0\'))
Decimal(\'1\')
>>> c.power(Decimal(\'Infinity\'), Decimal(\'1\'))
Decimal(\'Infinity\')
>>> c.power(Decimal(\'-Infinity\'), Decimal(\'-1\'))
Decimal(\'-0\')
>>> c.power(Decimal(\'-Infinity\'), Decimal(\'0\'))
Decimal(\'1\')
>>> c.power(Decimal(\'-Infinity\'), Decimal(\'1\'))
Decimal(\'-Infinity\')
>>> c.power(Decimal(\'-Infinity\'), Decimal(\'2\'))
Decimal(\'Infinity\')
>>> c.power(Decimal(\'0\'), Decimal(\'0\'))
Decimal(\'NaN\')
>>> c.power(Decimal(\'3\'), Decimal(\'7\'), Decimal(\'16\'))
Decimal(\'11\')
>>> c.power(Decimal(\'-3\'), Decimal(\'7\'), Decimal(\'16\'))
Decimal(\'-11\')
>>> c.power(Decimal(\'-3\'), Decimal(\'8\'), Decimal(\'16\'))
Decimal(\'1\')
>>> c.power(Decimal(\'3\'), Decimal(\'7\'), Decimal(\'-16\'))
Decimal(\'11\')
>>> c.power(Decimal(\'23E12345\'), Decimal(\'67E189\'), Decimal(\'123456789\'))
Decimal(\'11729830\')
>>> c.power(Decimal(\'-0\'), Decimal(\'17\'), Decimal(\'1729\'))
Decimal(\'-0\')
>>> c.power(Decimal(\'-23\'), Decimal(\'0\'), Decimal(\'65537\'))
Decimal(\'1\')
>>> ExtendedContext.power(7, 7)
Decimal(\'823543\')
>>> ExtendedContext.power(Decimal(7), 7)
Decimal(\'823543\')
>>> ExtendedContext.power(7, Decimal(7), 2)
Decimal(\'1\')'

def power(self, a, b, modulo=None):

    a = _convert_other(a, raiseit=True)
    r = a.__pow__(b, modulo, context=self)
    if (r is NotImplemented):
        raise TypeError(('Unable    to    convert    %s    to    Decimal' % b))
    else:
        return r
