Next: Ordering a list of Up: Utilities procedures of ALIAS-Maple Previous: Multiple occurrences of variables:   Contents

# Mathematical functions in an expression

The procedure Math_Func allows one to obtain a list of mathematical functions (in the Maple sense) and of their power in a given expression. For example

```Math_Func([(sin(x)^2+cos(x)^3)/x+sin(x)^2*cos(x)^3+1/sin(x)^2])
```
returns in the global variable ALIAS_MATH_FUNC the list
```                                3        2     1
[cos(x) , sin(x) , -------]
2
sin(x)
```
If these terms appears more than once in the expression the MakeF procedure (see section 2.1.1) will generate a code where they are evaluated for each occurrence, which is costly. The ALIAS_FSIMPLIFY mechanism described in the MakeF section may be used to evaluate only once these expressions and substitute them by interval when calculating the interval evaluation. The end-user write its own ALIAS_FSIMPLIFY procedure but the result of Math_Func may be used to write such a procedure. A typical ALIAS_FSIMPLIFY using this functionality is as follows:
```
ALIAS_FSIMPLIFY:=proc(fid,expr)
local aux,ai:
if type(expr,string) then
fprintf(fid,"INTERVAL_VECTOR ALIAS_S(%d);\n",nops(ALIAS_MATH_FUNC)):
for ai from 1 to nops(ALIAS_MATH_FUNC) do
aux:=Convert_Frac_Cons(Code(ALIAS_MATH_FUNC[ai],[x,y,z,w])):
fprintf(fid,"ALIAS_S(%d)=%s;\n",ai,aux):
od:
RETURN(0):
fi:
aux:=expr:
for ai from 1 to nops(ALIAS_MATH_FUNC) do
aux:=subs(ALIAS_MATH_FUNC[ai]=ALIAS_S(ai),aux):
od:
RETURN(aux):
end:
```
Note the use of the Code procedure to convert the expression into an interval equivalent.

Jean-Pierre Merlet 2012-12-20