

def dmp_zz_modular_resultant(f, g, p, u, K):
    '\n    Compute resultant of `f` and `g` modulo a prime `p`.\n\n    Examples\n    ========\n\n    >>> from sympy.polys import ring, ZZ\n    >>> R, x,y = ring("x,y", ZZ)\n\n    >>> f = x + y + 2\n    >>> g = 2*x*y + x + 3\n\n    >>> R.dmp_zz_modular_resultant(f, g, 5)\n    -2*y**2 + 1\n\n    '
    if (not u):
        return gf_int((dup_prs_resultant(f, g, K)[0] % p), p)
    v = (u - 1)
    n = dmp_degree(f, u)
    m = dmp_degree(g, u)
    N = dmp_degree_in(f, 1, u)
    M = dmp_degree_in(g, 1, u)
    B = ((n * M) + (m * N))
    (D, a) = ([K.one], (- K.one))
    r = dmp_zero(v)
    while (dup_degree(D) <= B):
        while True:
            a += K.one
            if (a == p):
                raise HomomorphismFailed('no luck')
            F = dmp_eval_in(f, gf_int(a, p), 1, u, K)
            if (dmp_degree(F, v) == n):
                G = dmp_eval_in(g, gf_int(a, p), 1, u, K)
                if (dmp_degree(G, m) == m):
                    break
        R = dmp_zz_modular_resultant(F, G, p, v, K)
        e = dmp_eval(r, a, v, K)
        if (not v):
            R = dup_strip([R])
            e = dup_strip([e])
        else:
            R = [R]
            e = [e]
        d = K.invert(dup_eval(D, a, K), p)
        d = dup_mul_ground(D, d, K)
        d = dmp_raise(d, v, 0, K)
        c = dmp_mul(d, dmp_sub(R, e, v, K), v, K)
        r = dmp_add(r, c, v, K)
        r = dmp_ground_trunc(r, p, v, K)
        D = dup_mul(D, [K.one, (- a)], K)
        D = dup_trunc(D, p, K)
    return r

dataset/ETHPy150Open sympy/sympy/sympy/polys/euclidtools.py dmp_zz_modular_resultant/VarMisuse@242/470 `v`->`m`