I think so. But then you should be working in a ring of truncated
power series
(i.e.  k[x]/(x^a)).  This seems conceptually different from working
in a ring of power series where you only know the elements up to
a given precision....

On Mar 14, 9:53 pm, John Cremona <john.crem...@gmail.com> wrote:
> David says in the docstring for a possible log() function " TODO:
> verify that the base ring is a QQ-algebra."  Now I recall reading
> (quite recent) papers of Morain et al on computing isogenies between
> elliptic curves over finite fields where it is useful to be able to
> take truncated logs of power series where the truncation occurs early
> enough that division by the characteristic does not happen.  Is it
> possible to allow for that in a mathematically consistent way?
>
> John
>
> 2009/3/14 William Stein <wst...@gmail.com>:
>
>
>
> > On Fri, Mar 13, 2009 at 5:00 PM, David Kohel <drko...@gmail.com> wrote:
>
> >> Hi,
>
> >> I am finding problems, holes, or missing features in power series
> >> rings
> >> and Laurent series rings.
>
> >> sage: K.<u> = LaurentSeriesRing(QQ)
> >> sage: R.<t> = PowerSeriesRing(QQ)
>
> >> 1. exp(t) is defined but exp(u) is not.
> >> 2. log(1 - t) and log(1-u)  -- I started filling in this gap (below)
> >> for
> >>    Laurent series but ran into more problems.
> >> 3. coercion to R does not work (R(u) fails trying to coerce to QQ).
>
> >> The style of implementations of source code look completely
> >> independent.
> >> I would like to have R == K.ring_of_integers() be defined and True
> >> (maybe
> >> if I call the variables the same).  But the lack of coercion suggests
> >> that
> >> these where not designed together, as do the functions for creating
> >> error
> >> terms O(t^n).
>
> >> The names of the files hint at a design break:
>
> >> sage: type(t)
> >> <type 'sage.rings.power_series_poly.PowerSeries_poly'>
> >> sage: type(u)
> >> <type 'sage.rings.laurent_series_ring_element.LaurentSeries'>
>
> >> Now there also exists a power_series_ring_element file, but it
> >> implements
> >> a class PowerSeries inheritted from PowerSeries_poly (in a separate
> >> file).
> >> There is also a power_series_mpoly, which must either be an attempt
> >> at
> >> multivariate power series or a sparse power series.
>
> >> Is there a reason for this split, and if so, why do Laurent series not
> >> follow
> >> the same dichotomy?
>
> > At least two different people probably implemented the code.  You
> > might start up sage and type
>
> >  sage: hg_sage.browse()
>
> > or go to
>
> >http://hg.sagemath.org/sage-main/file/5c72dbb92d82/sage/rings
>
> > and start browsing around so you can see exactly who edited the files
> > you're looking at and when. You can also do the following at the
> > command line in the rings directory to see the history of any given
> > file:
>
> > $ hg log laurent_series_ring.py |more
>
> > changeset:   11695:3e8e9cdd9715
> > user:        Mike Hansen <mhan...@gmail.com>
> > date:        Tue Feb 24 09:13:31 2009 -0800
> > summary:     Converting sage.rings.* docstrings to Sphinx
>
> > changeset:   8413:f4aeaf9e22c6
> > user:        Martin Albrecht <m...@informatik.uni-bremen.de>
> > date:        Sun Jan 20 16:44:08 2008 +0000
> > summary:     allow rational functions to be coerced into
> > LaurentSeriesRings (fixes 1/3 of #1793)
>
> > changeset:   5481:1fb33b78a725
> > user:        Robert Bradshaw <rober...@math.washington.edu>
> > date:        Wed Jul 18 01:35:31 2007 -0700
> > summary:     Fix mathematical error I stupidly introduced
>
> > You can do
>
> > $ hg export 8413
>
> > to see the actual 8413 patch (say).
>
> >> I think I need to understand what is intended before hacking around
> >> all
> >> of these classes.
>
> >> Cheers,
> >> David
>
> >> P.S. A first start with log -- is there a more efficient algorithm
> >> already
> >> implemented somewhere or does someone want to put in place a more
> >> efficient algorithm?
>
> >> {{{
> >>    def log
> >> (self):
>
> >> """
> >>        The logarithm of the power series t, which must be in a
> >> neighborhood of 1.
>
> >>        TODO: verify that the base ring is a QQ-algebra.
>
> >> """
> >>        u =
> >> self-1
> >>        if u.valuation() <=
> >> 0:
> >>            raise AttributeError, "Argument t must satisfy val(t-1) >
> >> 0."
> >>        N = self.prec
> >> ()
> >>        if isinstance(N,
> >> sage.rings.infinity.PlusInfinity):
> >>            N = self.parent().default_prec
> >> ()
> >>            u.add_bigoh
> >> (N)
> >>        err = LaurentSeries(self.parent(), 0, 0).add_bigoh
> >> (N)
> >>        return sum([ u**k/k + err for k in range
> >> (1,N) ])
> >> }}}
>
> > --
> > William Stein
> > Associate Professor of Mathematics
> > University of Washington
> >http://wstein.org
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to