In ASDF configuration file, move module numerical-functions below algebraic-database,
[maxima.git] / share / contrib / format / format.demo
blob62ff86113fc3fdf215a0a93f68c479028b9061e8
1 /* -*- Mode: Macsyma -*- */
3 /*************************************************************************************
4  Demo of Format package
5 *************************************************************************************/
7 /***********************************************************************
8  General restructuring */
9 format((a+b*x)*(c-x)^2,%poly(x),factor);
10 format((1+2*eps*(q+r*cos(g))^2)^4,%series(eps,2),%trig(g),factor);
11 format((1+2*a+a^2)*b + a*(1+2*b+b^2),%sum,%product,%factor);
12 format(expand((1+a)^2/(1+b)^2),%ratsimp,%factor);
13 t1:expand((1+x^4)*y^2+(1+x^8)*y^4)$
14 format(t1,%p(y),%f);
15 format(t1,%p(y),%f(a^2-2));
16 format(expand((a+x)^3-a^3),%f-a^3);
18 /* Contrast power series & Taylor series: */
19 format((1+sin(x)-x)^3,%series(x,3),%f);
20 format((1+sin(x)-x)^3,%taylor(x,3),%f);
21 /***********************************************************************
22  Focussing simplifications on subexpressions*/
23 foo:x^2*sin(y)^4-2*x^2*sin(y)^2+x^4*cos(y)^4-2*x^4*cos(y)^2+x^4+x^2+1$
24 trigsimp(foo);
25 format(foo,%p(x),trigsimp);
27 sqrtp(f):=not(atom(f)) and part(f,0)='sqrt$
28 first(solve(a*x^2+b*x-(b-2*a)/4,x));
29 format(%,%rhs,%preformat(%p(match(sqrtp))),%match(sqrtp),%arg(1),%f);
31 /***********************************************************************
32  Subtemplates & template chains. Compare: */
33 t2:expand((1+a)^2*(1+x)^2/(1+b^2)/(1+y)^2)$
34 format(t2,%r[%p(x)],%f);
35 format(t2,%r[[%p(x),%f]]);
37 /* Contrast these subtemplates */
38 l1:[1+2*a+a^2,1+2*b+b^2,1+2*c+c^2]$
39 format(l1,%list,%f);
40 format(l1,%list[%noop,%f]);
41 format(l1,%list[%noop,%ditto(%f)]);
43 /* Contrast various templates & subtemplate usage */
44 format((1+a)^2/(1+2*b+b^2),%frac[expand,%f]);
45 format((1+a)^2/(1+2*b+b^2),%expression[expand,%f]);
46 format((1+a)^2/(1+2*b+b^2),%denom,%f);
47 format((1+a)^2/(1+2*b+b^2),%num,expand);
49 /***********************************************************************
50  Bags: Lists, Relations & Matrices */
52 format([a=b,c=d,e=f],%equation);
53 format(%,%list);
55 format(1+2*a+a^2 < 1+2*b+b^2,%rel("<")[%f]);
56 format(1+2*a+a^2 < 1+2*b+b^2,%rhs("<"),%f);
57 format(1+2*a+a^2 < 1+2*b+b^2,%lhs("<"),%f);
58 format(1+2*a+a^2 = 1+2*b+b^2,%lhs,%f);
59 m1:matrix([a^2+2*a+1=q,b^2+2*b+1=r],[c^2+2*c+1=s,d^2+2*d+1=t])$
60 format(m1,%equation,%matrix[%list[%factor]]);
61 format(m1,%eq,%element(1,1),%f);
62 format(m1,%equation,%matrix[%noop,%list[%noop,%factor]]);
63 format(m1,%eq,%element(2,2),%f);
65 /***********************************************************************
66  Conditionals */
67 format(a*(1+2*x+x^2)+b*(1+2*y+y^2),%sum,%if(lambda([xx],freeof(x,xx)))[%f,%subst(x=q)]);
69 /***********************************************************************
70  User defined patterns */
71 put(%myrectform,
72      lambda([expr],
73        block([pair:rectformlist(expr)],
74           format_piece(pair[1]) +%I* format_piece(pair[2]))),
75      formatter)$
76 format(expand((1+a)^2+%I*(1+b)^2),%myrectform,%sqfr);
78 /* Clean up */
79 (remvalue(t1,t2,foo,m1),kill(%myrectform),remfunction(sqrtp))$