Eliminate spurious redefinition of derivabbrev in Ctensor, fix documentation of diagm...
[maxima/cygwin.git] / tests / rtest1.mac
blob31328630ab7881f86b37c81b1e63c09120b93495
1 /*************** -*- Mode: MACSYMA; Package: MAXIMA -*-  ******************/
2 /***************************************************************************
3 ***                                                                    *****
4 ***     Copyright (c) 1984 by William Schelter,University of Texas     *****
5 ***     All rights reserved                                            *****
6 ***************************************************************************/
8 /* PRODUCED USING TOPS 20 AS GUIDE AND CHECKED ON 3600 
9 This and the rtest*.mac files can be run using the command
10 Batch("cl-maxima-source:maxima;rtest1.mac",test);   and a
11 log file will be written recording the items which the testing
12 function does not find the same as those answers listed in this file.
13 The test is based on manual.demo, with the answers obtained from
14 tops 20 macsyma, and checked on the 3600 with cl-maxima.  
15 Although we have tried to put sufficient kills in, to eliminate
16 errors caused by previous definitions, you may get some additional
17 errors if you rerun the tests, or run some out of order. */
19 (?fmakunbound(f),kill(functions,values,arrays));
20 done;
21 f(x):=x^2+y;
22 f(x):=x^2+y$
23 f(2);
24 y+4$
25 ev(f(2),y:7);
26 11$
27 f(x):=sin(x)^2+1;
28 f(x):=sin(x)^2+1$
29 f(x+1);
30 sin(x+1)^2+1$
31 g(y,z):=f(z)+3*y;
32 g(y,z):=f(z)+3*y$
33 ev(g(2*y+z,-0.5),y:7);
34 3*(z+14)+1.22984884706593$
35 h(n):=sum(i*x^i,i,0,n);
36 h(n):=sum(i*x^i,i,0,n)$
37 functions;
38 [f(x),g(y,z),h(n)]$
39 t[n](x):=ratexpand(2*x*t[n-1](x)-t[n-2](x));
40 t[n](x):=ratexpand(2*x*t[n-1](x)-t[n-2](x))$
41 t[0](x):=1;
42 t[0](x):=1$
43 t[1](x):=x;
44 t[1](x):=x$
45 t[4](y);
46 8*y^4-8*y^2+1$
47 g[n](x):=sum(ev(x),i,n,n+2);
48 g[n](x):=sum(ev(x),i,n,n+2)$
49 h(n,x):=sum(ev(x),i,n,n+2);
50 h(n,x):=sum(ev(x),i,n,n+2)$
51 g[2](i^2);
52 3*i^2$
53 h(2,i^2);
54 29$
55 p[n](x):=ratsimp(1/(2^n*n!)*diff((x^2-1)^n,x,n));
56 p[n](x):=ratsimp(1/(2^n*n!)*diff((x^2-1)^n,x,n))$
57 q(n,x):=ratsimp(1/(2^n*n!)*diff((x^2-1)^n,x,n));
58 q(n,x):=ratsimp(1/(2^n*n!)*diff((x^2-1)^n,x,n))$
59 p[2];
60 lambda([x],(3*x^2-1)/2)$
61 p[2](y+1);
62 (3*(y+1)^2-1)/2$
63 q(2,y);
64 (3*y^2-1)/2$
65 p[2](5);
66 37$
67 f[i,j](x,y):=x^i+y^j;
68 f[i,j](x,y):=x^i+y^j$
69 g(fun,a,b):=print(fun," applied to ",a," and ",b," is ",fun(a,b));
70 g(fun,a,b):=print(fun," applied to ",a," and ",b," is ",fun(a,b))$
71 g(f[2,1],sin(%pi),2*c);
72 2*c$
74 /* tests for ibase and obase; a recent accretion. dunno where else to put this stuff. */
76 [integerp (2.), floatnump (2.)];
77 [true, false];
79 ibase : 2.;
80 ''(1 + 1);
82 10.;
83 ''(1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1);
85 10;
86 2.;
88 11111111;
89 255.;
91 10000000;
92 128.;
94 00000001;
95 1.;
97 [symbolp (23401), numberp (23401)];
98 [true, false];
100 [symbolp (\10432), numberp (\10432)];
101 [true, false];
103 [10.25, 10.25d0, 10.25e0, 10.25f0, 10.25s0] - 1010 - 1/100;
104 ''(float ([0, 0, 0, 0, 0]));
106 [99.25, 99.25d0, 99.25e0, 99.25f0, 99.25s0] - 1100011 - 1/100;
107 ''(float ([0, 0, 0, 0, 0]));
109 ibase : 8.;
112 10.;
113 ''(1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1);
118 1111;
119 ''(8.^3 + 8.^2 + 8. + 1);
121 7777;
122 4095.;
124 [symbolp (8765), numberp (8765)];
125 [true, false];
127 [symbolp (\5678), numberp (\5678)];
128 [true, false];
130 [10.25, 10.25d0, 10.25e0, 10.25f0, 10.25s0] - 12 - 1/4;
131 ''(float ([0, 0, 0, 0, 0]));
133 [99.25, 99.25d0, 99.25e0, 99.25f0, 99.25s0] - 143 - 1/4;
134 ''(float ([0, 0, 0, 0, 0]));
136 ibase : 16.;
137 16.;
139 10.;
140 ''(1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1);
143 16.;
145 111111;
146 ''(16.^5 + 16.^4 + 16.^3 + 16.^2 + 16. + 1);
148 999;
149 ''(9*16.^2 + 9*16. + 9);
151 1000;
152 ''(16.^3);
154 [symbolp (a000), numberp (a000)];
155 [true, false];
157 [symbolp (0a000), numberp (0a000)];
158 [false, true];
160 0a000;
161 ''(10.*16.^3);
163 [symbolp (\0a000), numberp (\0a000)];
164 [true, false];
166 [is (abc = 0abc), is (0abc = \0abc), is (\0abc = abc)];
167 [false, false, false];
169 a000 + a000 + 0a000 + 0a000 + \0a000 + \0a000;
170 2*a000 + 2*\0a000 + 14000;
172 [10.25, 10.25d0, 10.25e0, 10.25f0, 10.25s0] - 0a - 1/4;
173 ''(float ([0, 0, 0, 0, 0]));
175 [99.25, 99.25d0, 99.25e0, 99.25f0, 99.25s0] - 63 - 1/4;
176 ''(float ([0, 0, 0, 0, 0]));
178 aa . bb;
179 "." (\aa, \bb);
181 aa.bb;
182 "." (\aa, \bb);
184 ibase : 36.;
185 36.;
187 10.;
188 ''(1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1);
191 36.;
193 1111;
194 ''(36.^3 + 36.^2 + 36. + 1);
196 9999;
197 ''(9*36.^3 + 9*36.^2 + 9*36. + 9);
199 10000;
200 ''(36.^4);
202 [symbolp (xyz), numberp (xyz)];
203 [true, false];
205 [symbolp (0xyz), numberp (0xyz)];
206 [false, true];
208 0xyz;
209 ''(33.*36.^2 + 34.*36. + 35.);
211 0XYZ;
212 0xyz;
214 [symbolp (\0xyz), numberp (\0xyz)];
215 [true, false];
217 [is (xyz = 0xyz), is (0xyz = \0xyz), is (\0xyz = xyz)];
218 [false, false, false];
220 0xyz;
221 ''(33.*36.^2 + 34.*36. + 35.);
223 1xyz;
224 ''(36.^3 + 0xyz);
226 xyz + 0xyz + \0xyz + xyz + 0xyz + \0xyz + xyz + 0xyz + \0xyz;
227 3*xyz + 3*\0xyz + ''(3*(33.*36.^2 + 34.*36. + 35.));
229 [10.25, 10.25d0, 10.25e0, 10.25f0, 10.25s0] - 0a - 1/4;
230 ''(float ([0, 0, 0, 0, 0]));
232 [99.25, 99.25d0, 99.25e0, 99.25f0, 99.25s0] - 02r - 1/4;
233 ''(float ([0, 0, 0, 0, 0]));
235 aa . bb;
236 "." (\aa, \bb);
238 aa.bb;
239 "." (\aa, \bb);
241 ibase : 10.;
242 ''(1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1);
244 obase : 2;
247 string (255);
248 "11111111";
250 string (-255);
251 "-11111111";
253 string (256);
254 "100000000";
256 obase : 8;
259 string (255);
260 "377";
262 string (-255);
263 "-377";
265 string (256);
266 "400";
268 obase : 16;
269 16.;
271 (string (255), is (%% = "0FF" or %% = "0ff"));
272 true;
274 (string (-255), is (%% = "-0FF" or %% = "-0ff"));
275 true;
277 string (256);
278 "100";
280 (string (10 * 16^3), is (%% = "0A000" or %% = "0a000"));
281 true;
283 (string (10*16^3 + 11*16^2 + 12*16 + 13), is (%% = "0ABCD" or %% = "0abcd"));
284 true;
286 obase : 36;
287 36.;
289 string (8*36^3 + 8*36^2 + 8*36 + 8);
290 "8888";
292 (string (8*36^3 + 9*36^2 + 10*36 + 11), is (%% = "89AB" or %% = "89ab"));
293 true;
295 (string (35*36^3 + 35*36^2 + 35*36 + 35), is (%% = "0ZZZZ" or %% = "0zzzz"));
296 true;
298 (string (-(35*36^3 + 35*36^2 + 35*36 + 35)), is (%% = "-0ZZZZ" or %% = "-0zzzz"));
299 true;
301 (string (34*36^3 + 35*36^2 + 8*36 + 7), is (%% = "0YZ87" or %% = "0yz87"));
302 true;
304 [ibase, obase] : [10., 10.];
305 [10., 10.];
308 ''(1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1);
310 string (10);
311 "10";
313 ibase : 2.;
316 [1, 11, 111, 1111];
317 [1., 3., 7., 15.];
319 (load (file_search (test_readbase_lisp, file_search_tests)),
320  test_readbase_lisp ());
321 [1., 2., 3., 4., 10., 20., 30., 40.];
323 [1, 11, 111, 1111];
324 [1., 3., 7., 15.];
326 (?autof (test_readbase_lisp_autoload, file_search (test_readbase_lisp_autoload, file_search_tests)),
327  test_readbase_lisp_autoload ());
328 [2., 3., 5., 7., 11., 13., 17., 19.];
330 [1, 11, 111, 1111];
331 [1., 3., 7., 15.];
333 (load (file_search (test_readbase_maxima, file_search_tests)),
334  test_readbase_maxima ());
335 [4., 3., 2., 1., 40., 30., 20., 10.];
337 [1, 11, 111, 1111];
338 [1., 3., 7., 15.];
340 (batch (file_search (test_readbase_maxima, file_search_tests)),
341  test_readbase_maxima ());
342 [4., 3., 2., 1., 40., 30., 20., 10.];
344 [1, 11, 111, 1111];
345 [1., 3., 7., 15.];
347 (auto_mexpr (test_readbase_maxima_autoload, file_search (test_readbase_maxima_autoload, file_search_tests)),
348  test_readbase_maxima_autoload ());
349 [19., 17., 13., 11., 7., 5., 3., 2.];
351 [1, 11, 111, 1111];
352 [1., 3., 7., 15.];
354 ibase : 10.;
355 10.;
357 /* SF bug report # 2992398 "sort doesn't give error for invalid comparison"
358  */
360 errcatch (sort([c, a, b], "<"));
363 errcatch (sort([1, 2, 3], lambda([a, b], 'sdf)));
366 sort ([c, a, b]);
367 [a, b, c];
369 sort ([1, 2, 3], "<");
370 [1, 2, 3];
372 sort ([1, 2, 3], lambda ([a, b], sin(a) < sin(b)));
373 [3, 1, 2];
375 /* some tests for todd_coxeter; dunno where else to put them
376  * adapted from comments in src/todd-coxeter.lisp
377  */
379 /* this one seems to run indefinitely or at least a very long time */
381 todd_coxeter([x^^3,y.x.y^^-1 . x^^-1],[]);
383  */
385 todd_coxeter([a^^8,b^^7,a.b.a.b,(a^^-1 . b)^^3],[a^^2, a^^-1 . b]);
386 448;
388 (kill (p, symet),
389  p(i,j) :=concat(x,i).concat(x,j),
390  symet(n):=create_list(if (j - i) = 1 then (p(i,j))^^3 else
391    if (not i = j) then (p(i,j))^^2 else p(i,i) , j,1,n-1,i,1,j),
392  0);
395 /* comment says todd_coxeter(symet(n)) == n! */
397 todd_coxeter (symet (1));
400 todd_coxeter (symet (2));
403 todd_coxeter (symet (3));
406 todd_coxeter (symet (4));
409 todd_coxeter (symet (5));
410 120;
412 /* SF bug #2695: 'kill' kills built-in properties of operator after user-defined property */
414 (kill (a, b), string (a*b));
415 "a*b";
417 (put ("*", 'bar, 'foo), kill (all), string (a*b));
418 "a*b";
420 /* reported to mailing list 2015-01-05: "order of operands is changed due to source information" */
422 block([simp:false], ?cons(?list('?mplus,'?foo, '?bar),?cdr(1+5+3)), string(%%));
423 "1+5+3";