Ticket #10888: trac_10888_evaluation_of_multi_polynomials.patch

File trac_10888_evaluation_of_multi_polynomials.patch, 1.7 KB (added by wuthrich, 9 years ago)

only uploaded for discussion

  • sage/rings/polynomial/multi_polynomial_libsingular.pyx

    # HG changeset patch
    # User Chris Wuthrich <christian.wuthrich@gmail.com>
    # Date 1299787936 0
    # Node ID 73ef0c9e7f6e3e7d142c23c801b77df92a849b1b
    # Parent  43717942fe51d6aaa4b0921554bc1bfff383485a
    trac 10888: evaluation of multi_polynomials gives back elements in the base ring.
    
    diff -r 43717942fe51 -r 73ef0c9e7f6e sage/rings/polynomial/multi_polynomial_libsingular.pyx
    a b  
    17411741            sage: f(5,3,10)
    17421742            4580           
    17431743
    1744         See #8502::
     1744        See #8502 and #10888::
    17451745
    17461746            sage: x = polygen(QQ)
    17471747            sage: K.<t> = NumberField(x^2+47)
     
    17581758            9
    17591759            sage: a.parent() is QQ
    17601760            True
     1761            sage: a = f(X=2,Y=3,Z=4);a
     1762            9
     1763            sage: a.parent() is QQ
     1764            True
    17611765
    17621766        """
     1767        cdef MPolynomialRing_libsingular parent = (<MPolynomialRing_libsingular>self._parent)
     1768
     1769     
    17631770        if len(kwds) > 0:
    17641771            f = self.subs(**kwds)
    17651772            if len(x) > 0:
    17661773                return f(*x)
    17671774            else:
    1768                 return f
    1769 
     1775
     1776                if f == 0:
     1777                    return parent._base._zero_element
     1778                if f in parent.base_ring():
     1779                    return parent.base_ring()(f)
     1780
     1781       
    17701782        cdef int l = len(x)
    1771         cdef MPolynomialRing_libsingular parent = (<MPolynomialRing_libsingular>self._parent)
    17721783        cdef ring *_ring = parent._ring
    17731784
    17741785        if l == 1 and (PY_TYPE_CHECK(x[0], tuple) or PY_TYPE_CHECK(x[0], list)):