(%i3) c * g * d * a * b * e * f;
(%o3) a*b*c*d*e*f*g
(%i4) [op(%), args (%)];
(%o4) [*,[a,b,c,d,e,f,g]]
(%i5) apply ("+", [a, 8, x, 2, 9, x, x, a]);
(%o5) 3*x+2*a+19
(%i6) apply ("*", [a, 8, x, 2, 9, x, x, a]);
(%o6) 144*a^2*x^3
Пример деления и возведения в степень (с функцией ):
(%i1) [a/b,a^b];
(%o1)
(%i2) [map(op,%),map(args,%)];
(%o2) [[//,^],[[a,b],[a,b]]]
(%i3) [apply ("//",[a,b]), apply ("^",[a,b])];
(%o3)
Вычитание и деление представлены внутренне в терминах сложения и умножения,
соответственно:
(%i1) [inpart (a - b, 0), inpart (a - b, 1), inpart (a - b, 2)];
(%o1) [+,a,-b]
(%i2) [inpart (a / b, 0), inpart (a / b, 1), inpart (a / b, 2)];
(%o2) [*,a,1/b]
Вычисления выполняются смешанно с буквами и числами, а также с integer-целыми
и float-числами:
(%i1) 17 + b - (1/2)*29 + 11^(2/4);
(%o1)
(%i2) [17 + 29, 17 + 29.0, 17 + 29b0];
(%o2) [46, 46.0, 4.6b1]
При вычислениях можно выключать или включать упрощение выражения с
помощью simp. Покажем на примере (двоеточие : как знак присвоения):
(%i1) simp : false;
(%o1) false
(%i2) '(17 + 29*11/7 - 5^3);
(%o2) 17+(29*11)/7-5^3
(%i3) simp : true;
(%o3) true
(%i4) '(17 + 29*11/7 - 5^3);
(%o4) -437/7
Арифметические действия можно выполнять поэлементно или нет в list-списках и
matrix-матрицах, в зависимости от вкл/выкл параметра listarith. Пример:
(%i1) matrix ([a, x], [h, u]) - matrix ([1, 2], [3, 4]);
(%o1) matrix([a-1,x-2],[h-3,u-4])
(%i2) 5 * matrix ([a, x], [h, u]);
(%o2) matrix([5*a,5*x],[5*h,5*u])
(%i3) listarith : false;
(%o3) false
(%i4) [a, c, m, t] / [1, 7, 2, 9];
(%o4) [a,c,m,t]/[1,7,2,9]
(%i5) [a, c, m, t] ^ x;
(%o5) [a,c,m,t]^x
15