code: def test_gf_arith():
      assert gf_neg([], 11, ZZ) == []
      assert gf_neg([1], 11, ZZ) == [10]
      assert gf_neg([1, 2, 3], 11, ZZ) == [10, 9, 8]
  
      assert gf_add_ground([], 0, 11, ZZ) == []
      assert gf_sub_ground([], 0, 11, ZZ) == []
  
      assert gf_add_ground([], 3, 11, ZZ) == [3]
      assert gf_sub_ground([], 3, 11, ZZ) == [8]
  
      assert gf_add_ground([1], 3, 11, ZZ) == [4]
      assert gf_sub_ground([1], 3, 11, ZZ) == [9]
  
      assert gf_add_ground([8], 3, 11, ZZ) == []
      assert gf_sub_ground([3], 3, 11, ZZ) == []
  
      assert gf_add_ground([1, 2, 3], 3, 11, ZZ) == [1, 2, 6]
      assert gf_sub_ground([1, 2, 3], 3, 11, ZZ) == [1, 2, 0]
  
      assert gf_mul_ground([], 0, 11, ZZ) == []
      assert gf_mul_ground([], 1, 11, ZZ) == []
  
      assert gf_mul_ground([1], 0, 11, ZZ) == []
      assert gf_mul_ground([1], 1, 11, ZZ) == [1]
  
      assert gf_mul_ground([1, 2, 3], 0, 11, ZZ) == []
      assert gf_mul_ground([1, 2, 3], 1, 11, ZZ) == [1, 2, 3]
      assert gf_mul_ground([1, 2, 3], 7, 11, ZZ) == [7, 3, 10]
  
      assert gf_add([], [], 11, ZZ) == []
      assert gf_add([1], [], 11, ZZ) == [1]
      assert gf_add([], [1], 11, ZZ) == [1]
      assert gf_add([1], [1], 11, ZZ) == [2]
      assert gf_add([1], [2], 11, ZZ) == [3]
  
      assert gf_add([1, 2], [1], 11, ZZ) == [1, 3]
      assert gf_add([1], [1, 2], 11, ZZ) == [1, 3]
  
      assert gf_add([1, 2, 3], [8, 9, 10], 11, ZZ) == [9, 0, 2]
  
      assert gf_sub([], [], 11, ZZ) == []
      assert gf_sub([1], [], 11, ZZ) == [1]
      assert gf_sub([], [1], 11, ZZ) == [10]
      assert gf_sub([1], [1], 11, ZZ) == []
      assert gf_sub([1], [2], 11, ZZ) == [10]
  
      assert gf_sub([1, 2], [1], 11, ZZ) == [1, 1]
      assert gf_sub([1], [1, 2], 11, ZZ) == [10, 10]
  
      assert gf_sub([3, 2, 1], [8, 9, 10], 11, ZZ) == [6, 4, 2]
  
      assert gf_add_mul([1, 5, 6], [7, 3], [8, 0, 6, 1], 11, ZZ) == [
          1,
          2,
          10,
          8,
          9,
      ]
      assert gf_sub_mul([1, 5, 6], [7, 3], [8, 0, 6, 1], 11, ZZ) == [
          10,
          9,
          3,
          2,
          3,
      ]
  
      assert gf_mul([], [], 11, ZZ) == []
      assert gf_mul([], [1], 11, ZZ) == []
      assert gf_mul([1], [], 11, ZZ) == []
      assert gf_mul([1], [1], 11, ZZ) == [1]
      assert gf_mul([5], [7], 11, ZZ) == [2]
  
      assert gf_mul([3, 0, 0, 6, 1, 2], [4, 0, 1, 0], 11, ZZ) == [
          1,
          0,
          3,
          2,
          4,
          3,
          1,
          2,
          0,
      ]
      assert gf_mul([4, 0, 1, 0], [3, 0, 0, 6, 1, 2], 11, ZZ) == [
          1,
          0,
          3,
          2,
          4,
          3,
          1,
          2,
          0,
      ]
  
      assert gf_mul([2, 0, 0, 1, 7], [2, 0, 0, 1, 7], 11, ZZ) == [
          4,
          0,
          0,
          4,
          6,
          0,
          1,
          3,
          5,
      ]
  
      assert gf_sqr([], 11, ZZ) == []
      assert gf_sqr([2], 11, ZZ) == [4]
      assert gf_sqr([1, 2], 11, ZZ) == [1, 4, 4]
  
      assert gf_sqr([2, 0, 0, 1, 7], 11, ZZ) == [
          4,
          0,
          0,
          4,
          6,
          0,
          1,
          3,
          5,
      ]
  
imports: from sympy.polys.galoistools import gf_crt, gf_crt1, gf_crt2, gf_int, gf_degree, gf_strip, gf_trunc, gf_normal, gf_from_dict, gf_to_dict, gf_from_int_poly, gf_to_int_poly, gf_neg, gf_add_ground, gf_sub_ground, gf_mul_ground, gf_add, gf_sub, gf_add_mul, gf_sub_mul, gf_mul, gf_sqr, gf_div, gf_rem, gf_quo, gf_exquo, gf_lshift, gf_rshift, gf_expand, gf_pow, gf_pow_mod, gf_gcdex, gf_gcd, gf_lcm, gf_cofactors, gf_LC, gf_TC, gf_monic, gf_eval, gf_multi_eval, gf_compose, gf_compose_mod, gf_trace_map, gf_diff, gf_irreducible, gf_irreducible_p, gf_irred_p_ben_or, gf_irred_p_rabin, gf_sqf_list, gf_sqf_part, gf_sqf_p, gf_Qmatrix, gf_Qbasis, gf_ddf_zassenhaus, gf_ddf_shoup, gf_edf_zassenhaus, gf_edf_shoup, gf_berlekamp, gf_factor_sqf, gf_factor, gf_value, linear_congruence, _csolve_prime_las_vegas, csolve_prime, gf_csolve, gf_frobenius_map, gf_frobenius_monomial_base
  from sympy.polys.polyerrors import ExactQuotientFailed
  from sympy.polys import polyconfig
  from sympy.polys.domains import ZZ
  from sympy.core.numbers import pi
  from sympy.ntheory.generate import nextprime
  from sympy.testing.pytest import raises
label_desc: Use image node_id 12 for calling a global function with example usage: test_gf_arith() without return types