[GiNaC-list] Ordering of expressions
burcin at erocal.org
Wed Aug 12 14:45:07 CEST 2009
On Mon, 10 Aug 2009 23:06:30 +0200
"Richard B. Kreckel" <kreckel at ginac.de> wrote:
> Burcin Erocal wrote:
> > In order to use ginac as the symbolics backend in Sage , we also
> > had to work around this random printing problem.
> May I ask why stable printing is a requirement for use in Sage?
Sage is also meant to be used interactively, besides just a computation
engine where you run a program and expect a number as output.
Inspection of intermediate results is so much easier if the output is
consistent between different sessions.
> > In retrospect, this was not the right way to fix the printing
> > problem. I should have done as the ginac developers suggested when
> > I first asked about this . Unfortunately, I didn't know much
> > about the design of the ginac library then, and I wanted to get
> > things done quickly.
> >  http://www.ginac.de/pipermail/ginac-list/2008-August/001406.html
> > When I find the time, I plan to move the new comparison functions
> > out of the way and bring back the old ones to make things fast
> > again. Then, add some code in expairseq to sort its arguments with
> > the new comparison functions before printing, and cache the sorted
> > sequence somewhere. I don't expect to have the time to do this in
> > the near future however.
> > I hope some of this will be useful if you try to stabilize printing
> > order in ginac.
> It won't be difficult to sort terms lexicographically, when printing,
> as opposed to based on hash values. But I doubt that caching the
> sorted sequence will be of practical use.
I thought that caching might help with printing large expressions
repeatedly. It could well be that it is pointless.
Now that I have the compression functions, using them only for printing
should be easy. I just don't have much time to work on this.
BTW, I would welcome any comments and suggestions on the patches we've
added to GiNaC for Sage, which you can browse here:
Especially, automatic simplification of powers and multiples of exp
http://pynac.sagemath.org/hg/rev/24e8ecd16228 exp(a)*exp(b) -> exp(a+b)
http://pynac.sagemath.org/hg/rev/5c4862f90e17 (e^x)^y -> e^(x*y)
and new constants for infinity
might be useful. Note that there is still more work to be done on
making special functions handle infinity properly, what I added in the
second patch above is a blind copy of Mathematica behavior.
I was hoping that the capability to work with infinity would help
series expansions, where 1/ (1/0) could be evaluated as 1/infinity ->
0. Here is an example which demonstrates this problem:
More information about the GiNaC-list