We probably should be smarter about this in LaurentPolynomialRing by checking if the denominator is a monomial and converting the numerator into the (Laurent?) polynomial ring.
Best, Travis On Thursday, August 27, 2015 at 9:18:24 AM UTC-5, Nils Bruin wrote: > > > > On Thursday, August 27, 2015 at 6:47:00 AM UTC-7, fuglede....@gmail.com > wrote: >> >> I ran into a problem where certain kinds of Laurent polynomials, defined >> through fractions, would be coercable while some other ones, defined by >> more or less the same fractions, would not be. It looks like a bug to me, >> but I figured I would run it by here first. Here's a concrete example of >> what I mean: >> >> >> sage: R.<x> = LaurentPolynomialRing(ZZ) >> >> sage: p = (1-x^2)/(1-x) >> sage: p >> x + 1 >> sage: p.parent() >> Fraction Field of Univariate Polynomial Ring in x over Integer Ring >> sage: R(p) >> 1 + x >> sage: R(p).parent() >> Univariate Laurent Polynomial Ring in x over Integer Ring >> >> sage: q = (1-x^-2)/(1-x^-1) # I.e., replace x by x^-1 >> sage: q >> (x + 1)/x >> sage: q.parent() >> Fraction Field of Univariate Polynomial Ring in x over Integer Ring >> sage: R(q) >> TypeError: denominator must be a unit >> >> This is due to the conversion map, which just calls > R._element_constructor in this case. The code there doesn't know about > fraction fields, so it tries something generic: it tries to create an > element of the underlying polynomial ring and wrap that as a laurent > polynomial (which doesn't work, of course) > > Be careful with the // operation, by the way, because it won't necessarily > give you an error if you divide by a non-unit: > > sage: (x+1)^3 //(3*x) > 1 + x > > (which is of course because "//" is not proper division in ZZ, but > euclidean division) > > -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at http://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.