[PURRS-devel] [Fwd: Re: Automatic evaluation/simplification]

Roberto Bagnara bagnara at cs.unipr.it
Wed Nov 20 10:50:56 CET 2002


-------- Original Message --------
Subject: Re: Automatic evaluation/simplification
Date: Wed, 20 Nov 2002 10:07:32 +0100
From: KRECKEL Richard  NGLT <Richard.Kreckel at framatome-anp.com>
To: 'bagnara at cs.unipr.it' <bagnara at cs.unipr.it>

Dear Roberto,

 > Yes, the FAQ says it is completely automatic.  However, is
 > there a way to switch it off?
 >
 > Forgive me for the very imprecise question.  The situation
 > is as follows: we have some monster expressions where we need
 > to substitute a few thousands of symbol's occurrences with
 > something else.  We did that by implementing our own recursive
 > tree traversal.  However, we estimate that more than 80% of the
 > time is spent in attempted simplifications by GiNaC (which we
 > know are deemed to fail).  Is there any way to implement this
 > substitution process so as to avoid this big overhead?

If you really do think that the "anonymous evaluation"(*) process in
GiNaC is your bottleneck you could try arranging your "monster
expressions" manually in an exvector (i.e. std::vector<GiNaC::ex>) or
an epvector (i.e. std::vector<GiNaC::expair>) and then use the
GiNaC::add ctor from those structures.

Regards
      -richy.

(*) Definition: We call "evaluation" a top-down tree-traversal and
     -rearrangement algorithm.  "Anonymous" evaluation is the one
     you don't call explicitly, as opposed to a "named" evaluation
     which you call by hand, e.g. evalf().  "Simplification" is
     more general, it does not have to go top-down (or bottom-up,
     this doesn't really matter, it's just preorder vs. postorder
     traversal) and can thus be regarded as non-local on the
     expression-tree's nodes.
     This is my own definition of the two concepts I came up with
     about two years ago because the literature seems to be utterly
     confused and I was unable to see a consensus.  This definition
     has turned out to be useful and well-defined.  GiNaC provides
     evaluation, mostly.  The function objects transforming
     trigonometric functions mentioned in the FAQ are simplifications,
     according to this definition.  I will soon add some clarification
     about the two concepts in the documentation.

PS: Sorry for the late answer, I am stuck in Erlangen for a while
     and can only view the GiNaC lists via the web-interface.  Email
     sent to my old address will not be read until x-mas, so please
     reply to this new address.
-- 
Dr. Richard B. Kreckel
Framatome ANP GmbH, NGLTS
<Richard.Kreckel at Framatome-ANP.COM>
Tel: (+49)9131/189-5275, Fax: (+49)9131/189-9908


-- 
Prof. Roberto Bagnara
Computer Science Group
Department of Mathematics, University of Parma, Italy
http://www.cs.unipr.it/~bagnara/
mailto:bagnara at cs.unipr.it




More information about the PURRS-devel mailing list