** Next:** Function involving determinants
** Up:** Equations, Gradient and Hessian
** Previous:** MakeF, MakeJ, MakeH
** Contents**

##

Improving the efficiency of the code

It may happen that the evaluation of an expression involves many time the
evaluation of a sub-expression. Clearly evaluating only once these
sub-expressions will speed up the code.
This may be done through a user-provided Maple procedure that must
be called `ALIAS_FSIMPLIFY`. This procedure takes as input a
file descriptor
and an expression expr. It will be first called right after the creation
of the evaluation file with a string: detecting that expr is a string
allow to write some initialization. Then it will be called before writing
any equation to allow for simplification.
For example assume that an expression that will be treated by the
`Make[FJH]` procedure involves numerous time the evaluation of the
sine and cosine of the first variable `x` (whose name in ALIAS-C++ is
`v_IS(1)`).The `ALIAS_FSIMPLIFY` procedure may be written as:
ALIAS_FSIMPLIFY:=proc(fid,expr)
local aux:
if type(expr,string) then
fprintf(fid,"INTERVAL SS,CC;\n"):
fprintf(fid,"SS=Sin(v_IS(1));\n"):
fprintf(fid,"CC=Cos(v_IS(1));\n"):
RETURN(0):
fi:
aux:=expr:
aux:=subs(sin(x)=SS,cos(x)=CC,aux):
RETURN(aux):
end:

This procedure will be first called with a string for `expr` and a
consequence is that at the beginning of the evaluation file `fid`
the interval variable `SS,CC` will be defined and then assigned to
the value of
. Then the procedure will be called for
each expression that will be assigned to `expr`: each occurrence of
the sine and cosine of in the expression will be substituted by
`SS, CC`.
The procedure `Math_Func`, see section 9.4, may be
used to identify mathematical functions occurring in an expression and
the list provided by this function may be used to write a generic
`ALIAS_FSIMPLIFY` procedure that will automatically compute only
once the more complex components of an expression. The procedure `Auto_Diff`, see section 2.3.2, may also be used to speed up
the interval evaluation of an expression. Note also that a similar
mechanism exists for expression involving determinants of matrices.

** Next:** Function involving determinants
** Up:** Equations, Gradient and Hessian
** Previous:** MakeF, MakeJ, MakeH
** Contents**
Jean-Pierre Merlet
2012-12-20