On Sun, Jan 24, 2010 at 3:45 PM, Yann <[email protected]> wrote:
>
>
> On Jan 24, 9:17 pm, William Stein <[email protected]> wrote:
>>
>> 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)
>
> I guess you meant:
>
> sage: def normalize_denoms(f):
>    n, d = f.numerator(), f.denominator()
>    a = lcm([vector(x.coefficients()).denominator() for x in [n,d]])
>    return (n*a)/(d*a)
>
> We then obtain:
>
> 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)
> 17*x/(6*y)
>
> which seems to be a better result to me...

Yes, of course.  Thanks.      I was getting rid of the denoms at the
expense of computing a different fraction!

 -- William

-- 
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

Reply via email to