More documentation of Maxima internals



  On 9/26/2010 8:29 AM, Dieter Kaiser wrote:
> Because we do not have a technical documentation of Maxima internals, I
> have started to write some documentations of functions I have worked on.
> The following examples try to document the functions PLS, ADDK, EXPTA,
> and EXPTB in simp.lisp. I have taken the Common Lisp HyperSpec as a
> guide to document the functions.

I assume you have seen

http://www.cs.berkeley.edu/~fateman/papers/simplifier.txt


There are also some papers and programs suggesting various significant 
efficiency hacks,
useful if the length of ((mplus simp) .....)    exceeds some modest 
size.  In particular,
instead of using a list, one can use a hash table.  That is ..

((mplus simp) <hash table>)

Also, there is a possibility of making all subexpressions "uniquely 
stored".  That is, for any
two expressions A and B,

(equal A B)  means that (eq A B).

This substantially changes the cost of some algorithms,  but it means 
that you need something
like a "hashing cons".    this is a program that inserts every dotted 
pair in a hash table...

(hashcons a b)  looks up   "a . b" in the hash table and returns that..  
or inserts it there.

This discussion is not a documentation of the existing programs, but 
might be useful to note
because others looking at the code might be tempted to consider such 
changes or modernizations.

In my view these are potentially major wins, but only if the lisp has 
good hash tables.
(My recollection is that my tests in Allegro CL were far more successful 
than Barton Willis's
tests in GCL[?])


RJF