I lean towards setting it to -∞.

While we are at this, how should `R.random_element` be called? The method currently takes a `degree` argument, which is a tuple of lower and upper bound, and if the user sets the lower bound to -1, then `0` is a possible outcome. Would the user call it with `degree=(-oo, upper_bound)` instead in the future?

Best regards,
Gareth

On 01/03/2024 09:07, 'Martin R' via sage-devel wrote:
I'd be OK with raising an exception or with -oo, but it should be uniform, and I think it should be the same for polynomials, Laurent polynomials and in the same spirit for degree and valuation.

It might be best to raise an exception, because this ensures that the zero polynomial gets special treatment.

Martin
On Thursday 29 February 2024 at 22:54:20 UTC+1 Nils Bruin wrote:

    On Thursday 29 February 2024 at 11:15:21 UTC-8 Dima Pasechnik wrote:

        How about using something like
        https://github.com/NeilGirdhar/extended_int ?
        (Even better, do a PEP to have such a thing in Python proper...)
        In old, totally duck-typed, Python this didn't really matter,
        but nowadays it does make
        a perfect sense.

    At the moment, I think most degree functions do their best to
    return sage Integer objects; mainly so that coercion works well
    with them. So whatever solution we use should probably be based on
    objects that naturally live in the sage hierarchy. We do have an
    infinity object in sage and it already gets used for valuations.

    Incidentally:

     sage: R.<x>=LaurentSeriesRing(QQ)
    sage: z=R(0)
    sage: z.valuation()
    +Infinity
    sage: z.degree()
    -1

    I don't quite know why laurent series have a degree defined at
    all, but they're keeping to the deg(0)=-1 convention.

    Incidentally:

    sage: A.<x>=QQ[]
    sage: B.<y>=LaurentPolynomialRing(QQ)
    sage: x.valuation(oo)
    -1
    sage: y.valuation(oo)
    1
    so polynomial rings have a valuation (that will return +oo when
    appropriate), but on LaurentPolynomialRing this gets silently
    broken: the argument simply gets ignored and the valuation at 0 is
    returned. So I guess you can get a well-behaving degree with

    f=0*y
    -f(1/y).valuation()

--
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 view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/ec50bffa-37ef-4bee-9095-09e738be1842n%40googlegroups.com <https://groups.google.com/d/msgid/sage-devel/ec50bffa-37ef-4bee-9095-09e738be1842n%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/6e66f617-3cc4-4657-a880-c3494a28decb%40gmail.com.

Reply via email to