class_docstr: Mixin class for classes that define a `__mul__` method, and want to be
  raised to integer powers in the natural way that follows. Implements
  powering via binary expansion, for efficiency.
  
  By default, only integer powers $\geq 2$ are supported. To support the
  first, zeroth, or negative powers, override the corresponding methods,
  `_first_power`, `_zeroth_power`, `_negative_power`, below.
class_docstr_tok: ["Mixin","class","for","classes","that","define","a","`","__mul__","`","method",",","and","want","to","be","raised","to","integer","powers","in","the","natural","way","that","follows",".","Implements","powering","via","binary","expansion",",","for","efficiency",".","By","default",",","only","integer","powers","$","\\geq","2","$","are","supported",".","To","support","the","first",",","zeroth",",","or","negative","powers",",","override","the","corresponding","methods",",","`","_first_power","`",",","`","_zeroth_power","`",",","`","_negative_power","`",",","below","."]
docstr: Compute inverse of self, then raise that to the abs(e) power.
  For example, if the class has an `inv()` method,
      return self.inv() ** abs(e) % modulo
docstr_tok: ["Compute","inverse","of","self",",","then","raise","that","to","the","abs","(","e",")","power",".","For","example",",","if","the","class","has","an","`","inv","(",")","`","method",",","return","self.inv","(",")","*","*","abs","(","e",")","%","modulo"]
code: def _negative_power(self, e, modulo=None):
      """
      Compute inverse of self, then raise that to the abs(e) power.
      For example, if the class has an `inv()` method,
          return self.inv() ** abs(e) % modulo
      """
      raise NotImplementedError
  
imports: from __future__ import annotations
  from sympy.external.gmpy import GROUND_TYPES
  from sympy.core import S, Add, Mul, Pow, Eq, Expr, expand_mul, expand_multinomial
  from sympy.core.exprtools import decompose_power, decompose_power_rat
  from sympy.core.numbers import _illegal
  from sympy.polys.polyerrors import PolynomialError, GeneratorsError
  from sympy.polys.polyoptions import build_options
  import re
label_desc: Use image node_id 2 for calling the IntegerPowerable obj's underlying member method code with example usage: obj._negative_power(e, modulo) without return types