Currently the maxima to lisp translator writes at the end of the
UNLISP file a suggestion for a DECLARE_TRANSLATED form which is not
particularly useful because it contains only symbols which the user
had specified in one of his own DECLARE_TRANSLATED forms. The reason
for this behaviour and a description of my proposed changes are in
http://members.inode.at/wjenkner/maxima/transs.txt
The patches are
http://members.inode.at/wjenkner/maxima/transl.lisp.diffhttp://members.inode.at/wjenkner/maxima/transs.lisp.diff
An old message where I tried to say something sensible about
DECLARE_TRANSLATED is
http://www.math.utexas.edu/pipermail/maxima/2003/004339.html
Here is an example for the proposed new behaviour from David
Billinghurst's new ODE package. Starting with no DECLARE_TRANSLATED
form we get
This is the unlisp file for /home/wolfgang/maxima/share/contrib/diffequations/ode1_riccati.mac
[...]
/* The compiler might be able to optimize some function calls
if you prepend the following declaration to your maxima code: */
EVAL_WHEN(TRANSLATE,
DECLARE_TRANSLATED(ode1_riccati_original,ode1_riccati_special,
ode1_riccati_general,
ode1_riccati_original_not_integrable,
ode1_riccati_original_2,ode1_riccati_original_3,
ode1_riccati_special_i))$
/* The following functions are not known to be translated.
[ode_disp,ode_disp2,contrib_ode]$ */
Wolfgang
(not written to the UNLISP file ;-)