Ticket #7587: trac_7587-multi_polynomial_libsingular_exponents.patch

File trac_7587-multi_polynomial_libsingular_exponents.patch, 1.9 KB (added by ylchapuy, 13 years ago)

based on 4.3.alpha0

  • sage/rings/polynomial/multi_polynomial_libsingular.pyx

    # HG changeset patch
    # User Yann Laigle-Chapuy <yannlaiglechapuy@gmail.com>
    # Date 1259792211 -3600
    # Node ID 067c5fd7936bd663f6d1aacbaf5741874fa893e4
    # Parent  44f70d431d43e3dfaa1487641ee6864d5025fb06
    improve multi_polynomial_libsingular exponents
    
    diff -r 44f70d431d43 -r 067c5fd7936b sage/rings/polynomial/multi_polynomial_libsingular.pyx
    a b  
    25102510        p_Delete(&m,r)
    25112511        return (<MPolynomialRing_libsingular>self._parent)._base._zero_element
    25122512
    2513     def exponents(self):
     2513    def exponents(self, as_ETuples=True):
    25142514        """
    25152515        Return the exponents of the monomials appearing in this
    25162516        polynomial.
    25172517       
     2518        INPUT:
     2519
     2520        - ``as_ETuples`` - (default: ``True``) if true returns the result as an list of ETuples
     2521                          otherwise returns a list of tuples
     2522
     2523
    25182524        EXAMPLES::
    25192525
    25202526            sage: R.<a,b,c> = QQ[]
    25212527            sage: f = a^3 + b + 2*b^2
    25222528            sage: f.exponents()
    25232529            [(3, 0, 0), (0, 2, 0), (0, 1, 0)]
     2530            sage: f.exponents(as_ETuples=False)
     2531            [(3, 0, 0), (0, 2, 0), (0, 1, 0)]
    25242532        """
    25252533        cdef poly *p
    25262534        cdef ring *r
    25272535        cdef int v
    2528         r = (<MPolynomialRing_libsingular>self._parent)._ring
    2529 
     2536        cdef list pl, ml
     2537
     2538        r = (<MPolynomialRing_libsingular>self._parent)._ring
    25302539        p = self._poly
    25312540
    25322541        pl = list()
    2533         while p:
    2534             ml = list()
     2542        ml = range(r.N)
     2543        while p:
    25352544            for v from 1 <= v <= r.N:
    2536                 ml.append(p_GetExp(p,v,r))
    2537             pl.append(ETuple(ml))
     2545                ml[v-1] = p_GetExp(p,v,r)
     2546
     2547            if as_ETuples:
     2548                pl.append(ETuple(ml))
     2549            else:
     2550                pl.append(tuple(ml))
    25382551
    25392552            p = pNext(p)
    25402553        return pl