On Sun, Jan 24, 2010 at 12:08 PM, Mike Hansen <[email protected]> wrote:
> Hello,
>
> On Sun, Jan 24, 2010 at 12:02 PM, Stefan Boettner <[email protected]> wrote:
>> I'm working with fraction fields of multivariate polynomials ring with
>> coefficients in Q. My question is, how do I get cancellation between
>> numerator and denominator coefficients to work?
>>
>> Example:
>>
>> R.<x,y>=PolynomialRing(QQ, 2)
>> F=FractionField(R)
>>
>> f=(x/2)/(y/2)
>
> There isn't really a good way to do this right now. But, you're
> probably better off using Frac(Z['x,y']):
>
> sage: R = Frac(ZZ['x,y'])
> sage: x,y = R.gens()
> sage: (x/2)/(y/2)
> x/y
Here's a potentially good way to do this right now :-)
Define this function:
def normalize_denoms(f):
n, d = f.numerator(), f.denominator()
a = [vector(x.coefficients()).denominator() for x in [n,d]]
return (n*a[0])/(d*a[1])
Then:
sage: R.<x,y>=PolynomialRing(QQ, 2)
sage: F=FractionField(R)
sage: f=(x/2)/(3*y/17)
sage: f
1/2*x/(3/17*y)
sage: normalize_denoms(f)
x/(3*y)
--
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org