parameters: (self, a, b, modulo=None)
docstring: 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')
docstring_summary: Raises a to the power of b, to modulo if given.
docstring_tokens: Raises a to the power of b to modulo if given .
function: def power(self, a, b, modulo=None):
          """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')
          """
          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
function_tokens: 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