def test_dmp_lcm(): assert dmp_lcm([[2]], [[6]], 1, ZZ) == [[6]] assert dmp_lcm([[1],[]], [[1,0]], 1, ZZ) == [[1,0],[]] assert dmp_lcm([[2],[],[],[]], [[6,0,0],[]], 1, ZZ) == [[6,0,0],[],[],[]] assert dmp_lcm([[2],[],[],[]], [[3,0,0],[]], 1, ZZ) == [[6,0,0],[],[],[]] assert dmp_lcm([[1,0],[],[]], [[1,0,0],[]], 1, ZZ) == [[1,0,0],[],[]] f = [[2,-3,-2,3,0,0],[]] g = [[1,0,-2,0,1,0]] h = [[2,-3,-4,6,2,-3,0,0],[]] assert dmp_lcm(f, g, 1, ZZ) == h f = [[1],[-3,0],[-9,0,0],[-5,0,0,0]] g = [[1],[6,0],[12,0,0],[10,0,0,0],[3,0,0,0,0]] h = [[1],[1,0],[-18,0,0],[-50,0,0,0],[-47,0,0,0,0],[-15,0,0,0,0,0]] assert dmp_lcm(f, g, 1, ZZ) == h
def lcm(f, g): """Returns polynomial LCM of `f` and `g`. """ lev, dom, per, F, G = f.unify(g) return per(dmp_lcm(F, G, lev, dom))