code: def test_PowerBasis_mult_tab():
      T = Poly(cyclotomic_poly(5, x))
      A = PowerBasis(T)
      M = A.mult_tab()
      exp = {
          0: {
              0: [1, 0, 0, 0],
              1: [0, 1, 0, 0],
              2: [0, 0, 1, 0],
              3: [0, 0, 0, 1],
          },
          1: {1: [0, 0, 1, 0], 2: [0, 0, 0, 1], 3: [-1, -1, -1, -1]},
          2: {2: [-1, -1, -1, -1], 3: [1, 0, 0, 0]},
          3: {3: [0, 1, 0, 0]},
      }
      # We get the table we expect:
      assert M == exp
      # And all entries are of expected type:
      assert all(is_int(c) for u in M for v in M[u] for c in M[u][v])
  
imports: from sympy.abc import x, zeta
  from sympy.polys import Poly, cyclotomic_poly
  from sympy.polys.domains import FF, QQ, ZZ
  from sympy.polys.matrices import DomainMatrix, DM
  from sympy.polys.numberfields.exceptions import ClosureFailure, MissingUnityError, StructureError
  from sympy.polys.numberfields.modules import Module, ModuleElement, ModuleEndomorphism, PowerBasis, PowerBasisElement, find_min_poly, is_sq_maxrank_HNF, make_mod_elt, to_col
  from sympy.polys.numberfields.utilities import is_int
  from sympy.polys.polyerrors import UnificationFailed
  from sympy.testing.pytest import raises
label_desc: Use image node_id 16 for calling a global function with example usage: test_PowerBasis_mult_tab() without return types