Merge branch 'rtoy-refactor-specvars-defint-ll-ul'
[maxima.git] / tests / rtest_dot.mac
blob2037985be1ecd05ed5cdacf03b996dbd85e1d4a8
1 (kill(all),0);
2 0$
4 1 . 1, dotconstrules : true;
5 1$
7 is(op(1 . x) = "."),  dotconstrules : false, dot1simp : false;
8 true;
10 (1/3) . (2/3);
11 2/9$
13 1.1 . 1.1;
14 1.21$
16 bfloat_approx_equal(1.1 . 1.1b0, 1.21b0);
17 true;
19 3.1 . 5;
20 15.5$
22 1 . x;
25 x . 1$
28 0 . x$
31 x . 0$
34 /*--- dotident ---*/
36 (reset (dotident), 0);
39 x . dotident;
42 dotident . x;
45 x^^0;
46 ''(dotident)$
48 (kill(id), dotident: id);
49 id;
51 x^^0;
52 id$
54 /*--- exponent rules ----*/
56 a^^2 . a^^5;
57 a^^7$
59 a^^2 . a^^-2;
60 ''(dotident)$
62 (1+x).(1+x)^^-1;
63 ''(dotident)$
65 (1 + x - x^2).(1 + x - x^2)^^-1;
66 ''(dotident)$
68 (1 + x - x^2)^^2 .(1 + x - x^2)^^-2;
69 ''(dotident)$
71 a^^-2 . a^^3;
74 a^^-3 . a^^5;
75 a^^2;
77 /*--- dotdistrib ---*/
79 a . (b + c), dotdistrib : true;
80 a . b + a . c$
82 a . (b - c), dotdistrib : true;
83 a . b - a . c$
85 a . (b +  c / 5), dotdistrib : true;
86 a . b + a . c / 5$
88 /*--- dotexptsimp ---*/
90 is(equal(a . a, a^^2)), dotexptsimp : false, prederror : false;
91 unknown$
93 is(equal(a . a, a^^2)), dotexptsimp : true;
94 true$
96 a . a, dotexptsimp : true;
97 a^^2$
99 a . a - a^^2;
102 a^^5 . a^^7;
103 a^^12$
105 is(equal(a.a,a * a)), prederror : false;
106 unknown$
108 is(equal(a.b, b. a)),prederror : false;
109 unknown$
111 is(equal(a^^2, a^2)),prederror : false;
112 unknown$
114 is(equal(a.b.a, a^^2 . b)),prederror : false;
115 unknown$
117 /*  See SF Bug # 771061 */
119 expand((vt . a^^(-1) . u+1)^^(-2));
120 ((vt.a^^(-1).u)^^2+2*(vt.a^^(-1).u)+1)^^(-1)$
122 (a + 1)^^(-1) . (a + 1)^^(-1), expon:2;
123 (a^^2+2*a+1)^^(-1)$
125 (a + b)^^2, expand;
126 a^^2 + a.b + b . a + b^^2$
128 (a + b)^^-2, expand;
129 (a^^2 + a . b + b . a + b^^2)^^-1$
131 (a - b)^^2, expand;
132 a^^2 - a . b - b . a + b^^2$
134 (5 * a + 7 *b)^^2, expand;
135 25 * a^^2 + 35 * a . b + 35 * b . a + 49 * b^^2$
137 (a . b)^^2, expand, dotexptsimp : false;
138 ''(block([dotexptsimp : false], a . b . a . b))$
140 (a . b)^^-1, expand, dotexptsimp : false;
141 (a . b)^^-1$
143 a.b.a.b, dotexptsimp : true;
144 (a.b)^^2$
146 /*--- See SF Bug # 629716 ---*/
148 expand((x.y)^^2 . y - x.y.x.y^^2), dotexptsimp : false;
151 5 * a . b - a . (5 * b);
154 (5 * a) . b - 5 * (a . b);
157 a . (5 * b) - 5 *(a . b);
160 /*--- declared scalars---*/
162 (declare(alpha, scalar),0);
165 alpha . x, dotscrules : true;
166 alpha * x$
168 (alpha . a) . b, dotscrules : true;
169 alpha * a . b$
171 a . (alpha . b), dotscrules : true;
172 alpha * a . b$
174 declare(".",antisymmetric);
175 'done$
177 b . alpha, dotscrules : true;
178 alpha * b$
180 a . (b . alpha), dotscrules : true;
181 alpha * a . b$
183 a . (alpha * a), dotscrules : true;
186 remove(".",antisymmetric);
187 'done$
189 /*--- dotassoc ---*/
191 is(equal(a . (b . c) , (a . b) . c)), dotassoc : true, prederror : false;
192 true$
194 is(equal(a . (b . c) , (a . b) . c)), dotassoc : false, prederror : false;
195 unknown$
197 (declare(".", commutative),0);
200 is(equal(a . b, b . a));
201 true$
203 is(equal(a . (b . (c .d)), (a.b) . (c.d)));
204 true$
206 (remove(".",commutative),0);
209 /* SF bug #3935: Noncommutative multiplication with string argument triggers "declare: argument must be a symbol" */
211 (kill(a, b),
212  "a" . b);
213 "a" . b;
215 string ("a" . b);
216 "\"a\" . b";
218 a . "b";
219 a . "b";
221 string (a . "b");
222 "a . \"b\"";
224 "a" . "b";
225 "a" . "b";
227 string ("a" . "b");
228 "\"a\" . \"b\"";
230 (a: make_array (fixnum, 3, 2),
231  b: make_array (fixnum, 2, 3),
232  a . b);
233 ''(a . b); /* this result just verifies there isn't an error */
235 /* try noncommutative exponent also */
236 "a"^^-1;
237 "a"^^-1;