1% Tests of the COMPACT package. 2 3% Author: Anthony C. Hearn. 4 5% First some simple examples. 6 7aa := {cos(x)^2+sin(x)^2-1}; 8 9xx := 2*cos(x)^2+2*sin(x)^2-2; 10 11compact(xx,aa); 12 13xx := (1-cos(x)^2)^4; 14 15compact(xx,aa); 16 17% These examples are from Lars Hornfeldt. 18 19% This should be cos x^10*sin x^10. 20 21compact(((1-(sin x)**2)**5)*((1-(cos x)**2)**5) 22 *(((sin x)**2+(cos x)**2)**5), 23 {cos x^2+sin x^2=1}); 24 25% This example illustrates the problem in the above. It is cos(x)^6. 26 27compact(-3cos(x)^2*sin(x)^2-sin(x)^6+1,{cos x^2+sin x^2-1}); 28 29compact(s*(1-(sin x**2))+c*(1-(cos x)**2)+(sin x)**2+(cos x)**2, 30 {cos x^2+sin x^2=1}); 31 32xx := s*(1-(sin x**2))+c*(1-(cos x)**2)+(sin x)**2+(cos x)**2 33 *((sin x)**2+(cos x)**2)*(sin x)**499*(cos x)**499; 34 35compact(xx,{cos(x)^2+sin(x)^2=1}); 36 37compact((s*(1-(sin x**2))+c*(1-(cos x)**2)+(sin x)**2+(cos x)**2) 38 *((sin x)**2+(cos x)**2)*(sin x)**499*(cos x)**499, 39 {cos x^2+sin x^2=1}); 40 41compact(df((1-(sin x)**2)**4,x),{cos x^2+sin x^2=1}); 42 43% End of Lars Hornfeld examples. 44 45xx := a*(cos(x)+2*sin(x))^3-w*(cos(x)-sin(x))^2; 46 47compact(xx,aa); 48 49xx := (1-cos(x)^2)^2+(1-sin(x)^2)^2; 50 51compact(xx,aa); 52 53xx := (c^2-1)^6+7(s-1)^4+23(c+s)^5; 54 55compact(xx,{c+s=1}); 56 57yy := (c+1)^6*s^6+7c^4+23; 58 59compact(yy,{c+s=1}); 60 61zz := xx^3+c^6*s^6$ 62 63compact(zz,{c+s=1}); 64 65xx := (c+s)^5 - 55(1-s)^2 + 77(1-c)^3 + (c+2s)^8; 66 67% This should reduce to something like: 68 69yy := 1 - 55c^2 + 77s^3 + (1+s)^8; 70 71% The result contains the same number but different terms. 72 73compact(xx,{c+s=1}); 74 75compact(yy,{c+s=1}); 76 77% Test showing order of expressions is important. 78 79d2:= - 4*r3a**2 - 4*r3b**2 - 4*r3c**2 + 3*r3**2$ 80 81d1:= 4 * r3a**2 * r3 82 + 4 * r3b**2 * r3 83 + 4 * r3c**2 * r3 84 + 16 * r3a * r3b * r3c 85 - r3**3$ 86 87d0:= 16 * r3a**4 88 + 16 * r3b**4 89 + 16 * r3c**4 90 + r3**4 91 - 32 * r3a**2 * r3b**2 92 - 32 * r3a**2 * r3c**2 93 - 32 * r3b**2 * r3c**2 94 - 8 * r3a**2 * r3**2 95 - 8 * r3b**2 * r3**2 96 - 8 * r3c**2 * r3**2 97 - 64 * r3a * r3b * r3c * r3$ 98 99alist := { c0 = d0, c1 = d1, c2 = d2}$ 100 101blist := { c2 = d2, c1 = d1, c0 = d0}$ 102 103d:= d2 * l*l + d1 * l + d0; 104 105compact(d,alist); % Works fine. 106 107compact(d,blist); % Only c2=d2 is applied. 108 109% This example illustrates why parallel application of the individual 110% side relations is necessary. 111 112lst:={x1=a+b+c, x2=a-b-c, x3=-a+b-c, x4=-a-b+c}; 113 114z1:=(a+b+c)*(a-b-c)*(-a+b-c); % This is x1*x2*x3. 115 116z2:=(a+b+c)*(a-b-c)*(-a+b-c)*(-a-b+c); % This is x1*x2*x3*x4. 117 118compact(z1,lst); % Not the best solution but better than nothing. 119 120compact(z2,lst); % Does nothing. 121 122end; 123