Add support for external html docs
[maxima.git] / share / simplification / rducon.dem
blob3f71e0ff423c3e66dbcb1833d3f4ecd73fdcbd87
1 /*-*-MACSYMA-*-*/
2 if properties(reduce_consts) = [] then load(rducon)$
3 /* We begin by illustrating REDUCE_CONSTS on a very simple example, EXP1.
4    But first, we need to establish a database of constants:              */
5 declare([b,con,a,mu,tau,alpha,beta],constant);
6 exp1:p*q+a/b*r;
7 reduce_consts(exp1);
8 /* Remember that the definitions of all generated constants are kept in
9    CONST_EQNS .                                                          */
10 const_eqns;
11 /* For the next examples, lets reinitialize CONST_EQNS for convenience,
12    and change the prefix for generated constants to "ZZZ" :             */
13 const_eqns:[]$
14 const_prefix:'zzz;
15 const_counter:1$
16 exp2:5/4*b*(c*t+u*v)/(r-s)/mu^(1/3);
17 reduce_consts(exp2);
18 const_eqns;
19 /* Observe that the constant ZZZ1 was not found as mu^(1/3) because of the
20    internal form in which MACSYMA stores quotients.
22    Next, we have an expression which contains a power easily expressed in
23    terms of ZZZ1.  Lets see what REDUCE_CONSTS does to it.                */
24 exp3:alpha*mu^(2/3)*(u+v*t);
25 reduce_consts(exp3);
26 const_eqns;
27 /* Since mu^(2/3) = mu*mu^(-1/3), REDUCE_CONSTS took advantage of that fact
28    and generated a more optimal means of computing ZZZ3.  For other types of
29    constant expressions, REDUCE_CONSTS attempts to find ways of computing
30    them in terms of the existing database of constant definitions.
32    While REDUCE_CONSTS generally reduces the size of the expression it
33    operates on, it will not do this if there are no constant subexpressions
34    to remove:                                                              */
35 exp4:mu^(-t/3)*u*kappa;
36 reduce_consts(exp4);
37 /* For another example, note that because MACSYMA has already declared %PI
38    to be a constant, REDUCE_CONSTS also knows about this fact:            */
39 exp5:(s-v)/(alpha-%pi);
40 reduce_consts(exp5);
41 const_eqns;
42 /* REDUCE_CONSTS also knows how to collapse out portions of a sum which
43    are constant:                                                        */
44 exp6:r*t-alpha+beta;
45 reduce_consts(exp6);
46 const_eqns;
47 /* And it knows that scalar functions of constant expressions are
48    constants:                                                     */
49 const_eqns:[]$
50 const_prefix:'q$
51 const_counter:1$
52 exp7:f*cos(alpha+beta);
53 reduce_consts(exp7);
54 const_eqns;
55 remove([b,con,a,mu,tau,alpha,beta],constant);