-
-
Notifications
You must be signed in to change notification settings - Fork 480
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Puiseux series #4618
Comments
comment:1
Hi ljpk, requests like this shouls always go to [sage-devel] too since people generally do not look for things to do in trac. Sending the same request to [sage-devel] will make people aware of the problem and might get some design discussion going. Obviously if you are working on code this is different, but if you expect someone else to do the dirty work a little advertisement cannot hurt :) Cheers, Michael |
comment:4
See also #9555. |
Changed keywords from none to Puiseux |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
comment:12
See also #9289. |
comment:14
some code is available here: https://github.com/abelfunctions/abelfunctions/tree/master/abelfunctions |
comment:15
As mentioned in an email correspondence with chapoton I believe my implementation of Thanks to chapoton for offering to plug this code into Sage! On a side note, I also have some code for computing Puiseux series representations of places on a plane algebraic curve. The entry function is |
comment:16
just made a git branch, not tested at all New commits:
|
comment:61
Unfortunately I have some more comments that I think should be addressed before a positive review: In EXAMPLES::
+
sage: R.<x> = PuiseuxSeriesRing(ZZ) Also, some small doc tweaks: cdef class PuiseuxSeries(AlgebraElement):
r"""
+ A Puiseux series.
+
We store a Puiseux series Common practice is to have the IIRC Why also is Probably good idea to break encapsulation and not have the function call here: For the I think we should change the MIT license to our standard license. I believe this is compatible. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:63
All your suggestions seem to be reasonable to me. |
comment:64
Thank you. Some last little things: all - ``prec`` -- (default: ``infinity``) the precision of the series
- as a rational number.
+ as a rational number - - ``parent`` -- Ring, the target parent.
+ - ``parent`` -- the parent ring
- ``f`` -- one of the following types of inputs:
- - instance of :class:`PuiseuxSeries`
- - instance that can be coerced into the Laurent sersies ring of the parent.
+
+ * instance of :class:`PuiseuxSeries`
+ * instance that can be coerced into the Laurent series ring of the parent
- - ``e`` -- integer (optional, default 1) for setting the ramification index.
+ - ``e`` -- integer (default: 1); the ramification index def __init__(self, parent, f, e=1):
r"""
+ Initialize ``self``.
+
- TESTS:
+ TESTS:: -Applies :meth:`shift` using the operator `<<`
+Apply :meth:`shift` using the operator `<<`. |
Branch pushed to git repo; I updated commit sha1. New commits:
|
comment:66
Replying to @tscrim:
Done! |
comment:67
Thank you. Positive review. |
comment:68
Thanks a lot, as well! |
Changed branch from public/4618 to |
comment:70
Did this also solve #9289 (Implement Puiseux polynomials)? |
Changed commit from |
comment:72
Replying to @tscrim:
But maybe it's a good idea to have the implementation of the Puiseux polynomial rely as much as possible on the Puiseux series. That would avoid having a lot of duplicated code. At the moment the code attached to ticket #9289 is not far away from being copy pasted from the corresponding classes for Laurent polynomials with some name refactoring done. So we would not loose that much if we decide to implement the Puiseux polynomials as "restricted Puiseux series". What is standing against that? |
comment:73
That would work, but it would likely be slow. I think the thing to do is follow the same pattern as here: extend the Laurent polynomials by wrapping them as a Puiseux polynomial with the ramification index and associated methods. Perhaps to avoid some code duplication, one could be clever with a template class or common ABC. |
comment:74
Replying to @tscrim:
Travis, I don't see the point of what would make that noticeable slower. I think all calculation that could harm performance will be executed inside polynomial classes independent on how we translate it to them. A little bit more time used for the translation because there is one step more cannot amount that much. What I have in mind is similar to how I did the embedding of the localization into the fraction field (via a value attribute). In the meantime I've seen that there is a special class |
comment:75
It is a bit more than that one step. IIRC, there are also a lot more optimizations than can and are done for polynomials that are not available for power series. For one, they don't have to worry about precision. So arithmetic starts to get bogged down by this. Plus that extra level of indirection does add a bit of time (also in creating the extra elements, which is much slower than the function call). While it is not much, perhaps 2-5%, because arithmetic operations are often used in tight loops (and frequently), this can have an outsized impact on algorithm run times. |
comment:76
Replying to @tscrim: Thanks for the explanations! I will think about your suggestion to capsule common functionalities in a template class. Do you mean a class that will be put in between BTW: is there a special reason why the series are not inherited from |
comment:77
There is the |
comment:78
I also don't remember if there was some specific reason why it doesn't. |
We provide an implementation of Puiseux series, that is power series in
x^(1/n)
wheren
is an arbitrary integer.When the base ring is an algebraically closed field, this is an algebraically closed field. In other words, any polynomial in
QQ[X,Y]
has a solution inY
as a Puiseux series inX
overQQbar
.Depends on #24420
Depends on #24431
Depends on #28239
CC: @mezzarobba @videlec @dkrenn
Component: algebra
Keywords: Puiseux, days100
Author: Chris Swierczewski
Branch:
99f43aa
Reviewer: Travis Scrimshaw, Frédéric Chapoton, Sebastian Oehms
Issue created by migration from https://trac.sagemath.org/ticket/4618
The text was updated successfully, but these errors were encountered: