Great! This has been on my list of things I'd like to have implemented for a while.
Presumably, much of this code will be incorporated into the Sage library. So it's not really a "package" per se. Instead, you should make a ticket on trac (http://trac.sagemath.org/sage_trac), for which you need an account. Then you should post Mercurial patches there, that include both the changes to existing files and the new files that you've created (there's a Mercurial tutorial at http://sagemath.org/doc/prog/index.html if you need it). Then you should have someone review the code, at which point it can be merged into the current Sage release. David On Wed, Oct 29, 2008 at 4:11 PM, Henryk Trappmann <[EMAIL PROTECTED]> wrote: > > Hello, > > I developed a package to work with infinite power series. > You can work with the power series mostly like with functions, the > actual value of a coefficient is computed when requested. > For example (the working title is PowerSeriesRingI, "I" like > infinite): > > sage: PQ = PowerSeriesRingI(QQ) > sage: #Predefined > PowerSeries > sage: expps = PQ.exp > sage: expps.poly(10,x) > 1/362880*x^9 + 1/40320*x^8 + 1/5040*x^7 + 1/720*x^6 + > 1/120*x^5 + 1/24*x^4 + 1/6*x^3 + 1/2*x^2 + x + 1 > sage: expps > [1, 1, 1/2, 1/6, 1/24, 1/120, 1/720, 1/5040, 1/40320, > 1/362880, 1/3628800, ...] > sage: PQ.zero > [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, > 0, 0, 0, 0, 0, ...] > sage: PQ.one > [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, > 0, 0, 0, 0, 0, ...] > sage: PQ.id > [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, > 0, 0, 0, 0, 0, ...] > sage: #finite > powerseries > sage: p = PQ([1,2,3,4]) > sage: p.poly(10,x) > 4*x^3 + 3*x^2 + 2*x + 1 > sage: p > [1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, > 0, 0, 0, 0, 0, ...] > sage: one = PQ([1]) > sage: id = PQ([0,1]) > > sage: #power series are just functions that map the index to > the coefficient > sage: expps[30] > 1/265252859812191058636308480000000 > > sage: #power series > operations > sage: p+p > [2, 4, 6, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, > 0, 0, 0, 0, 0, ...] > sage: p-p > [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, > 0, 0, 0, 0, 0, ...] > sage: p*p > [1, 4, 10, 20, 25, 24, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, > 0, 0, 0, 0, ...] > sage: one/p > [1, -2, 1, 0, 5, -14, 13, -4, 25, -90, 121, -72, 141, -550, > 965, -844, 993, ...] > sage: p.rcp()/p*p*p > [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, > 0, 0, 0, 0, 0, ...] > sage: p**2 > [1, 4, 10, 20, 25, 24, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, > 0, 0, 0, 0, ...] > sage: #composition only works for coefficient 0 being 0 in the > second operand > sage: dexp = expps - one > sage: expps.o(dexp) > [1, 1, 1, 5/6, 5/8, 13/30, 203/720, 877/5040, 23/224, > 1007/17280, ...] > > Beneath composition it can also perform (fractional) iteration > sage: #we come into interesting > regions ... > sage: dexp.o(dexp) > [0, 1, 1, 5/6, 5/8, 13/30, 203/720, 877/5040, 23/224, > 1007/17280, ...] > sage: dexp.nit(2) > [0, 1, 1, 5/6, 5/8, 13/30, 203/720, 877/5040, 23/224, > 1007/17280, ...] > sage: dexp.it(-1) > [0, 1, -1/2, 1/3, -1/4, 1/5, -1/6, 1/7, -1/8, 1/9, -1/10, > 1/11, -1/12, ...] > sage: dexp.it(-1).o(dexp) > [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, > 0, 0, 0, 0, 0, ...] > sage: hdexp = dexp.it(1/2) > sage: hdexp > [0, 1, 1/4, 1/48, 0, 1/3840, -7/92160, 1/645120, 53/3440640, > -281/30965760, ...] > sage: #verifying that shoudl be > Zero > sage: hdexp.it(2) - dexp > [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, > 0, 0, 0, 0, 0, ...] > > My question is about making this a standard SAGE package. > Is there any guideline how to do so and what are the criteria and > requirements? > > > --~--~---------~--~----~------------~-------~--~----~ 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-devel URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---
