compact.log 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. Codemist Standard Lisp 3.54 for DEC Alpha: May 23 1994
  2. Dump file created: Mon May 23 10:39:11 1994
  3. REDUCE 3.5, 15-Oct-93 ...
  4. Memory allocation: 6023424 bytes
  5. +++ About to read file ndotest.red
  6. % Tests of the COMPACT package.
  7. % Author: Anthony C. Hearn.
  8. % First some simple examples.
  9. aa := {cos(x)^2+sin(x)^2-1};
  10. 2 2
  11. aa := {cos(x) + sin(x) - 1}
  12. xx := 2*cos(x)^2+2*sin(x)^2-2;
  13. 2 2
  14. xx := 2*(cos(x) + sin(x) - 1)
  15. compact(xx,aa);
  16. 0
  17. xx := (1-cos(x)^2)^4;
  18. 8 6 4 2
  19. xx := cos(x) - 4*cos(x) + 6*cos(x) - 4*cos(x) + 1
  20. compact(xx,aa);
  21. 8
  22. sin(x)
  23. % These examples are from Lars Hornfeldt.
  24. compact(((1-(sin x)**2)**5)*((1-(cos x)**2)**5)
  25. *(((sin x)**2+(cos x)**2)**5),
  26. {cos x^2+sin x^2=1});
  27. 10 10
  28. cos(x) *sin(x)
  29. compact(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. 2 2
  32. cos(x) *s + sin(x) *c + 1
  33. xx := s*(1-(sin x**2))+c*(1-(cos x)**2)+(sin x)**2+(cos x)**2
  34. *((sin x)**2+(cos x)**2)*(sin x)**499*(cos x)**499;
  35. 503 499 501 501 2
  36. xx := cos(x) *sin(x) + cos(x) *sin(x) - cos(x) *c
  37. 2 2
  38. - sin(x) *s + sin(x) + c + s
  39. compact(xx,{cos(x)^2+sin(x)^2=1});
  40. 501 499 2 2 2
  41. cos(x) *sin(x) + cos(x) *s + sin(x) *c + sin(x)
  42. compact((s*(1-(sin x**2))+c*(1-(cos x)**2)+(sin x)**2+(cos x)**2)
  43. *((sin x)**2+(cos x)**2)*(sin x)**499*(cos x)**499,
  44. {cos x^2+sin x^2=1});
  45. 499 499 4 2 2
  46. cos(x) *sin(x) *(cos(x) *s + cos(x) *sin(x) *c
  47. 2 2 2 4 2
  48. + cos(x) *sin(x) *s + cos(x) + sin(x) *c + sin(x) )
  49. compact(df((1-(sin x)**2)**4,x),{cos x^2+sin x^2=1});
  50. 6 4 2
  51. 8*cos(x)*sin(x)*(sin(x) - 3*sin(x) + 3*sin(x) - 1)
  52. % End of Lars Hornfeld examples.
  53. xx := a*(cos(x)+2*sin(x))^3-w*(cos(x)-sin(x))^2;
  54. 3 2 2
  55. xx := cos(x) *a + 6*cos(x) *sin(x)*a - cos(x) *w
  56. 2 3
  57. + 12*cos(x)*sin(x) *a + 2*cos(x)*sin(x)*w + 8*sin(x) *a
  58. 2
  59. - sin(x) *w
  60. compact(xx,aa);
  61. 2 3
  62. 11*cos(x)*sin(x) *a + 2*cos(x)*sin(x)*w + cos(x)*a + 2*sin(x) *a
  63. + 6*sin(x)*a - w
  64. xx := (1-cos(x)^2)^2+(1-sin(x)^2)^2;
  65. 4 2 4 2
  66. xx := cos(x) - 2*cos(x) + sin(x) - 2*sin(x) + 2
  67. compact(xx,aa);
  68. 2 2
  69. - 2*cos(x) *sin(x) + 1
  70. xx := (c^2-1)^6+7(s-1)^4+23(c+s)^5;
  71. 12 10 8 6 5 4 4
  72. xx := c - 6*c + 15*c - 20*c + 23*c + 115*c *s + 15*c
  73. 3 2 2 3 2 4 5 4
  74. + 230*c *s + 230*c *s - 6*c + 115*c*s + 23*s + 7*s
  75. 3 2
  76. - 28*s + 42*s - 28*s + 8
  77. compact(xx,{c+s=1});
  78. 12 10 8 6 4 2
  79. c - 6*c + 15*c - 20*c + 22*c - 6*c + 24
  80. yy := (c+1)^6*s^6+7c^4+23;
  81. 6 6 5 6 4 6 4 3 6 2 6
  82. yy := c *s + 6*c *s + 15*c *s + 7*c + 20*c *s + 15*c *s
  83. 6 6
  84. + 6*c*s + s + 23
  85. compact(yy,{c+s=1});
  86. 6 6 5 6 4 6 4 3 6 2 6 6 6
  87. c *s + 6*c *s + 15*c *s + 7*c + 20*c *s + 15*c *s + 6*c*s + s
  88. + 23
  89. zz := xx^3+c^6*s^6$
  90. compact(zz,{c+s=1});
  91. 36 34 32 30 28 26 24
  92. c - 18*c + 153*c - 816*c + 3081*c - 8820*c + 20019*c
  93. 22 20 18 16 14
  94. - 37272*c + 58854*c - 81314*c + 100488*c - 111840*c
  95. 12 11 10 9 8 7
  96. + 111341*c - 6*c - 97545*c - 20*c + 80439*c - 6*c
  97. 6 4 2
  98. - 53783*c + 40608*c - 10368*c + 13824
  99. xx := (c+s)^5 - 55(1-s)^2 + 77(1-c)^3 + (c+2s)^8;
  100. 8 7 6 2 5 3 5 4 4 4
  101. xx := c + 16*c *s + 112*c *s + 448*c *s + c + 1120*c *s + 5*c *s
  102. 3 5 3 2 3 2 6 2 3
  103. + 1792*c *s + 10*c *s - 77*c + 1792*c *s + 10*c *s
  104. 2 7 4 8 5 2
  105. + 231*c + 1024*c*s + 5*c*s - 231*c + 256*s + s - 55*s
  106. + 110*s + 22
  107. % This should reduce to something like:
  108. yy := 1 - 55c^2 + 77s^3 + (1+s)^8;
  109. 2 8 7 6 5 4 3 2
  110. yy := - 55*c + s + 8*s + 28*s + 56*s + 70*s + 133*s + 28*s
  111. + 8*s + 2
  112. % The result contains the same number but different terms.
  113. compact(xx,{c+s=1});
  114. 8 7 6 5 4 3 2
  115. s + 8*s + 28*s + 56*s + 70*s + 133*s - 27*s + 118*s - 53
  116. compact(yy,{c+s=1});
  117. 8 7 6 5 4 3 2
  118. s + 8*s + 28*s + 56*s + 70*s + 133*s - 27*s + 118*s - 53
  119. % Test showing order of expressions is important.
  120. d2:= - 4*r3a**2 - 4*r3b**2 - 4*r3c**2 + 3*r3**2$
  121. d1:= 4 * r3a**2 * r3
  122. + 4 * r3b**2 * r3
  123. + 4 * r3c**2 * r3
  124. + 16 * r3a * r3b * r3c
  125. - r3**3$
  126. d0:= 16 * r3a**4
  127. + 16 * r3b**4
  128. + 16 * r3c**4
  129. + r3**4
  130. - 32 * r3a**2 * r3b**2
  131. - 32 * r3a**2 * r3c**2
  132. - 32 * r3b**2 * r3c**2
  133. - 8 * r3a**2 * r3**2
  134. - 8 * r3b**2 * r3**2
  135. - 8 * r3c**2 * r3**2
  136. - 64 * r3a * r3b * r3c * r3$
  137. alist := { c0 = d0, c1 = d1, c2 = d2}$
  138. blist := { c2 = d2, c1 = d1, c0 = d0}$
  139. d:= d2 * l*l + d1 * l + d0;
  140. 2 2 2 2 2 2 2 2 3
  141. d := 3*l *r3 - 4*l *r3a - 4*l *r3b - 4*l *r3c - l*r3
  142. 2 2 2
  143. + 4*l*r3*r3a + 4*l*r3*r3b + 4*l*r3*r3c + 16*l*r3a*r3b*r3c
  144. 4 2 2 2 2 2 2
  145. + r3 - 8*r3 *r3a - 8*r3 *r3b - 8*r3 *r3c
  146. 4 2 2 2 2
  147. - 64*r3*r3a*r3b*r3c + 16*r3a - 32*r3a *r3b - 32*r3a *r3c
  148. 4 2 2 4
  149. + 16*r3b - 32*r3b *r3c + 16*r3c
  150. compact(d,alist);
  151. 2
  152. c0 + c1*l + c2*l
  153. % Works fine.
  154. compact(d,blist);
  155. 2 2 2 3
  156. c2*l - c2*l*r3 + 2*c2*r3 + 8*c2*r3a + 2*l*r3 + 16*l*r3a*r3b*r3c
  157. 4 2 2 4 4
  158. - 5*r3 - 24*r3 *r3a - 64*r3*r3a*r3b*r3c + 48*r3a + 16*r3b
  159. 2 2 4
  160. - 32*r3b *r3c + 16*r3c
  161. % Only c2=d2 is applied.
  162. % This example illustrates why parallel application of the individual
  163. % side relations is necessary.
  164. lst:={x1=a+b+c, x2=a-b-c, x3=-a+b-c, x4=-a-b+c};
  165. lst := {x1=a + b + c,
  166. x2=a - b - c,
  167. x3= - a + b - c,
  168. x4= - a - b + c}
  169. z1:=(a+b+c)*(a-b-c)*(-a+b-c);
  170. z1 :=
  171. 3 2 2 2 2 3 2 2 3
  172. - a + a *b - a *c + a*b + 2*a*b*c + a*c - b - b *c + b*c + c
  173. % This is x1*x2*x3.
  174. z2:=(a+b+c)*(a-b-c)*(-a+b-c)*(-a-b+c);
  175. 4 2 2 2 2 4 2 2 4
  176. z2 := a - 2*a *b - 2*a *c + b - 2*b *c + c
  177. % This is x1*x2*x3*x4.
  178. compact(z1,lst);
  179. 2
  180. x1*(4*a*b + 2*c*x1 - x1 )
  181. % Not the best solution but better than nothing.
  182. compact(z2,lst);
  183. 4 2 2 2 2 4 2 2 4
  184. a - 2*a *b - 2*a *c + b - 2*b *c + c
  185. % Does nothing.
  186. end;
  187. (TIME: compact 2400 2400)
  188. End of Lisp run after 2.43+0.64 seconds