[GiNaC-list] GiNaC is not a compiler (Was: Term ordering and compiling C++ code)

Martin Ettl ettl.martin at gmx.de
Fri May 28 23:05:11 CEST 2010

Hello Alexei,

i have some trouble to compile the llvm sample, you provided on my Ubuntu system. With what llvm and ginac version you have tested it?

I am using llvm-2.7, ginac-1.5.7 and g++-4.4 on Ubuntu 10.04 (32-Bit)

Best regards and thanks in advance


-------- Original-Nachricht --------
> Datum: Mon, 24 May 2010 22:27:52 +0300
> Von: Alexei Sheplyakov <alexei.sheplyakov at gmail.com>
> An: jros at unavarra.es, GiNaC discussion list <ginac-list at ginac.de>
> Betreff: [GiNaC-list] GiNaC is not a compiler (Was: Term ordering and	compiling C++ code)

> Hello,
> On Thu, May 13, 2010 at 10:31:48AM -0400, jros wrote:
> > Probably allowing/disallowing some kind automatic simplifications (so
> > that subexpression sharing expected value increases) can probably help
> > to obtain improved results.
> > 
> > I wonder what do the developers think about this.
> GiNaC is not a compiler. It's data structures and algorithms are not
> suitable
> for finding common subexpressions (and other optimization algorithms).
> For example, GiNaC tries to make expression tree as flat as possible
> (to save memory and make collecting similar terms more efficient).
> Thus, (a + b) + c is automatically transformed into a + b + c  (which is
> probably not what you want for finding common subexpressions). However,
> it saves memory and makes collecting similar terms more efficient.
> The bottom line is: use the right tool. If you need a compiler, use
> a compiler, not a symbolic computation engine.
> Best regards,
> 	Alexei
> P.S. 
> Attached is the code which I use for converting a GiNaC expression into
> LLVM (http://llvm.org) intermediate representation. It reads the
> expression,
> converts it into LLVM IR, applies some common optimizations, and saves
> the output as a LLVM (pseudo) asm. Later one can apply further
> optimizations
> (using the `opt' utility), and compile into a native code (using llc).
> To compile any `intersting' expression (> 10^5 terms), pass  the
> -regalloc=local
> argument to llc (the default register allocator is way too memory hungry).

GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01

More information about the GiNaC-list mailing list