docs: def polynomial_exp_mod( base, exponent, polymod, p ):
    """Polynomial exponentiation modulo a polynomial over ints mod p.
  
    Polynomials are represented as lists of coefficients
    of increasing powers of x."""
  
    # Based on the Handbook of Applied Cryptography, algorithm 2.227.
  
    # This module has been tested only by extensive use
    # in calculating modular square roots.
  
    assert exponent < p
  
    if exponent == 0: return [ 1 ]
  
    G = base
    k = exponent
    if k%2 == 1: s = G
    else:        s = [ 1 ]
  
    while k > 1:
      k = k // 2
      G = polynomial_multiply_mod( G, G, polymod, p )
      if k%2 == 1: s = polynomial_multiply_mod( G, s, polymod, p )
  
    return s