Online Algebra Calculator
Many of users do not use powerful Maxima computer algebra system for systematic work, but for ad hoc algebraic calculations – equations, functions, matrixes, etc. only. To do this job, it is not useful to download the whole application from a web site.
Function: funmake (<F>, [<arg_1>, ..., <arg_n>]) Returns an expression <F>(<arg_1>, ..., <arg_n>). The return value is simplified, but not evaluated, so the function <F> is not called, even if it exists.
![Funmake Example (assume(a<0, b<=0, notequal(c,0), d >=0, e > 0, equal(f,0)), l: [a,b,c,d,e,f,g], funmake(](http://maxima-online.org//plot.html?g=i965576983.png&t=img&db=r1872376103)
funmake does not attempt to distinguish array functions from ordinary functions; when <F> is the name of an array function, funmake returns <F>(...) (that is, a function call with parentheses instead of square brackets). arraymake returns a function call with square brackets in this case.
funmake evaluates its arguments.
Examples:
funmake applied to an ordinary Maxima function.
(%i1) F (x, y) := y^2 - x^2;
2 2
(%o1) F(x, y) := y - x
(%i2) funmake (F, [a + 1, b + 1]);
(%o2) F(a + 1, b + 1)
(%i3) %;
2 2
(%o3) (b + 1) - (a + 1) funmake applied to a macro.
(%i1) G (x) ::= (x - 1)/2;
x - 1
(%o1) G(x) ::= -----
2
(%i2) funmake (G, [u]);
(%o2) G(u)
(%i3) %;
u - 1
(%o3) -----
2 funmake applied to a subscripted function.
(%i1) H [a] (x) := (x - 1)^a;
a
(%o1) H (x) := (x - 1)
a
(%i2) funmake (H [n], [%e]);
n
(%o2) lambda([x], (x - 1) )(%e)
(%i3) %;
n
(%o3) (%e - 1)
(%i4) funmake ((H [n]), [%e]);
(%o4) H (%e)
n
(%i5) %;
n
(%o5) (%e - 1) funmake applied to a symbol which is not a defined function of any kind.
(%i1) funmake (A, [u]);
(%o1) A(u)
(%i2) %;
(%o2) A(u) funmake evaluates its arguments, but not the return value.
(%i1) det(a,b,c) := b^2 -4*a*c;
2
(%o1) det(a, b, c) := b - 4 a c
(%i2) (x : 8, y : 10, z : 12);
(%o2) 12
(%i3) f : det;
(%o3) det
(%i4) funmake (f, [x, y, z]);
(%o4) det(8, 10, 12)
(%i5) %;
(%o5) - 284 Maxima simplifies funmakes return value.
(%i1) funmake (sin, [%pi / 2]);
(%o1) 1(%o1) true (%i2)