[GiNaC-list] About 'unoptimal' expanding (Was: GiNaC Licensing)

Alexei Sheplyakov varg at theor.jinr.ru
Wed Oct 22 12:58:55 CEST 2008


Dear Ondrej,

On Wed, Oct 22, 2008 at 12:16:23AM +0200, Ondrej Certik wrote:

> Ginac is expanding in an unoptimal way though,

Are you sure?

$ cat simple.ginsh
#!/usr/bin/env ginsh
e = (x^10+x^9+x^8+x^7+x^6+x^4+x^3+x^2+x+1)*(x-1);
g = e^10*(e^10+1);
time(expand(g));
./simple.ginsh | tail -n1
2.40s

Your "optimal" method runs out of memory:

$ cat smart.ginsh
#!/usr/bin/env ginsh
e = (x^10+x^9+x^8+x^7+x^6+x^4+x^3+x^2+x+1)*(x-1);
g = e^20 + e^10;
time(expand(g));
./smart.ginsh | tail -n1
St9bad_alloc
syntax error, unexpected ')' at )

In many calculations the initial and final expressions are (much) smaller
than intermediate ones. That's why GiNaC tries to to cancel intermediate
terms as early as possible. Hence 'unoptimal' (bottom-up instead of top-down)
expand(), eval(), etc.

Best regards,
	Alexei

-- 
All science is either physics or stamp collecting.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: Digital signature
Url : http://www.cebix.net/pipermail/ginac-list/attachments/20081022/1e260558/attachment.sig 


More information about the GiNaC-list mailing list