Ejemplo n.º 1
0
 def _gcd_monom(f, g):
     ring = f.ring
     ground_gcd = ring.domain.gcd
     ground_quo = ring.domain.quo
     mf, cf = list(f.terms())[0]
     _mgcd, _cgcd = mf, cf
     for mg, cg in g.terms():
         _mgcd = monomial_gcd(_mgcd, mg)
         _cgcd = ground_gcd(_cgcd, cg)
     h = f.new([(_mgcd, _cgcd)])
     cff = f.new([(monomial_ldiv(mf, _mgcd), ground_quo(cf, _cgcd))])
     cfg = f.new([(monomial_ldiv(mg, _mgcd), ground_quo(cg, _cgcd)) for mg, cg in g.terms()])
     return h, cff, cfg
Ejemplo n.º 2
0
    def diff(f, x):
        """Computes partial derivative in ``x``.

        Examples
        ========

        >>> from sympy.polys.rings import ring
        >>> from sympy.polys.domains import ZZ

        >>> _, x, y = ring("x,y", ZZ)
        >>> p = x + x**2*y**3
        >>> p.diff(x)
        2*x*y**3 + 1

        """
        ring = f.ring
        i = list(ring.gens).index(x)
        m = ring.monomial_basis(i)
        g = ring.zero
        for expv, coeff in f.terms():
            if expv[i]:
                e = monomial_ldiv(expv, m)
                g[e] = coeff*expv[i]
        return g