On 9 jul, 16:36, William Stein <wst...@gmail.com> wrote:
> On Thu, Jul 9, 2009 at 1:34 AM, John Cremona<john.crem...@gmail.com> wrote:
>
> > I can see another problem here. One could argue that the
> > denominator of (x+y)/2 was 2 while you code gives 1. So the
> > documentation needs to be very clear, stating that the denominator of
> > ever polynomial in any number of variables over a field is always 1.
>
> > John
>
> John raises an extremely important and subtle point. This is a
> *MAJOR* problem since currently we have
> {{{
> sage: R.<x> = QQ[]
> sage: denominator(x/2)
> 2}}}
>
> however you're proposing making it so
> {{{
> sage: R.<x,y> = QQ[]
> sage: denominator(x/2)
> 1
>
> }}}
>
> That's very worrisome, simply because it is inconsistent. Either you
> change the existing code for univariate polynomials, hence break
> backwards compatible that can possibly result in subtle errors all
> over the place (in the sage library and in random user code "out
> there"), or you change the semantics of denominator for multivariate
> polynomials to be consistent with the semantics for univariate
> polynomials.
>
> For the record, Magma has a Denominator function that is defined for
> about 15-20 different types, but does not apply to multivariate
> polynomials.
>
Good point. The thing is not clear:
{{{
sage: R.<x>=QQ['x']
sage: denominator(x/2)
2
sage: denominator(R.fraction_field()(x/2))
1
}}}
Should it be the same result for univariate polynomials and the
coercion to univariate rational functions?
What are the reasons to implement denominator this way for univariate
polynomials?
I have to take a look to the logic behind this, there are further
problems (maybe another track)
{{{
sage: N.<a>=NumberField(x**2-5/2)
sage: denominator(1/a)
5
sage: numerator(1/a)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call
last)
/home/luisfe/.sage/temp/mychabol/4554/
_home_luisfe__sage_init_sage_0.py in <module>()
/opt/SAGE/sage/local/lib/python2.5/site-packages/sage/misc/
functional.pyc in numerator(x)
686 if isinstance(x, (int, long)):
687 return x
--> 688 return x.numerator()
689
690 def numerical_approx(x, prec=None, digits=None):
AttributeError: 'sage.rings.number_field.number_field_element_quadr'
object has no attribute 'numerator'
}}}
Even not every univariate polynomial ring has defined numerator
{{{
sage: R.<y>=N[]
sage: denominator(y)
1
sage: numerator(y)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call
last)
/home/luisfe/.sage/temp/mychabol/4554/
_home_luisfe__sage_init_sage_0.py in <module>()
/opt/SAGE/sage/local/lib/python2.5/site-packages/sage/misc/
functional.pyc in numerator(x)
686 if isinstance(x, (int, long)):
687 return x
--> 688 return x.numerator()
689
690 def numerical_approx(x, prec=None, digits=None):
AttributeError: 'Polynomial_generic_dense_field' object has no
attribute 'numerator'
}}}
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---