Update example templates and run update_examples
[maxima.git] / tests / rtest_tmlinsolve.mac
blob2c63c7ac9b71b02f89c7745ff57fcdc9986a0c62
1 /* tmlinsolve and friends are undocumented, so I don't know if it's
2  * really worth the trouble to test them ... oh well.
3  */
5 kill (all);
6 done;
8 (e1 : [a*x = 1],
9  e2 : [x + 7*y = 1, a*x - y = 2],
10  e3 : [x + y + a*z = 1, 3*x - y + z = 2, x - 5*y - z = b],
11  e4 : [a*w + x + y + z = 1, w - b*x + y + z = 2, w + x - 7*y + z = c, w + 11*x + y - z = 4],
12  0);
15 kill (labels);
16 done;
18 /* tmlinsolve return value is a list of labels, so we go through some
19  * gyrations to evaluate to the actual solution,
20  * then we go through some more gyrations to compare to the
21  * expected result. Sigh.
22  */
24 (foo : (tmlinsolve (e1, [x]), ev (%%), ev (%%), ratdisrep (%%)),
25  bar : [x = 1/a],
26  ratsimp (foo - bar));
27 [0 = 0];
29 every (map (is, ratsimp (subst (foo, e1))));
30 true;
32 (foo : (tmlinsolve (e2, [x, y]), ev (%%), ev (%%), ratdisrep (%%)),
33  bar : [x = 15/(7*a+1),y = (a-2)/(7*a+1)],
34  ratsimp (foo - bar));
35 [0 = 0, 0 = 0];
37 every (map (is, ratsimp (subst (foo, e2))));
38 true;
40 (foo : (tmlinsolve (e3, [x, y, z]), ev (%%), ev (%%)),
41  bar : rat([x = -((a+1)*b-10*a+8)/(14*a-10),
42  y = -((3*a-1)*b-2*a+2)/(14*a-10),
43  z = (2*b+1)/(7*a-5)]),
44  ratsimp (foo - bar));
45 [0 = 0, 0 = 0, 0 = 0];
47 every (map (is, ratsimp (subst (foo, e3))));
48 true;
50 (foo : (tmlinsolve (e4, [w, x, y, z]), ev (%%), ev (%%)),
51  bar : [w = ((b+1)*c+19*b+67)/((3*a+5)*b-45*a+53),
52  x = -((a-1)*c+22*a-14)/((3*a+5)*b-45*a+53),
53  y = -(((a+1)*b-11*a+13)*c+(4*a-6)*b+28*a-30)/((6*a+10)*b-90*a+106),
54  z = -(((a-1)*b+11*a-11)*c+(28*a-4)*b+152*a-48)/((6*a+10)*b-90*a+106)],
55  ratsimp (foo - bar));
56 [0 = 0, 0 = 0, 0 = 0, 0 = 0];
58 every (map (is, ratsimp (subst (foo, e4))));
59 true;