Merge branch 'rtoy-wrap-option-args'
[maxima.git] / doc / info / de / opsubst.de.texi
blob42e358bd6262ec50b76f23d37a654c6c0314cc73
1 @c -----------------------------------------------------------------------------
2 @c File     : opsubst.de.texi
3 @c License  : GNU General Public License (GPL)
4 @c Language : German
5 @c Original : obsubst.texi revision 28.11.2007
6 @c Date     : 08.11.2010
7 @c Revision : 20.08.2011
8 @c 
9 @c This file is part of Maxima -- GPL CAS based on DOE-MACSYMA
10 @c -----------------------------------------------------------------------------
12 @menu
13 * Functions and Variables for opsubst::
14 @end menu
16 @c -----------------------------------------------------------------------------
17 @node Functions and Variables for opsubst,  , opsubst, opsubst
18 @section Functions and Variables for opsubst
19 @c -----------------------------------------------------------------------------
21 @c -----------------------------------------------------------------------------
22 @anchor{function_opsubst}
23 @deffn  {Function} opsubst (@var{f}, @var{g}, @var{e})
24 @deffnx {Function} opsubst (@var{g} = @var{f}, @var{e})
25 @deffnx {Function} opsubst ([@var{g1} = @var{f1}, @var{g2} = @var{f2}, @dots{}, @var{gn} = @var{fn}], @var{e})
27 The function @code{opsubst} is similar to the function @code{subst}, except that
28 @code{opsubst} only makes substitutions for the operators in an expression.  In
29 general, when @var{f} is an operator in the expression @var{e}, substitute
30 @var{g} for @var{f} in the expression @var{e}.
32 To determine the operator, @code{opsubst} sets @code{inflag} to true.  This
33 means @code{opsubst} substitutes for the internal, not the displayed, operator
34 in the expression.
36 To use this function write first @code{load("opsubst")}.
38 Examples:
40 @example
41 (%i1) load("opsubst")$
43 (%i2) opsubst(f, g, g(g(x)));
44 (%o2)                     f(f(x))
45 (%i3) opsubst(f, g, g(g));
46 (%o3)                       f(g)
47 (%i4) opsubst(f, g[x], g[x](z));
48 (%o4)                       f(z)
49 (%i5) opsubst(g[x], f, f(z));
50 (%o5)                      g (z)
51                             x
52 (%i6) opsubst(tan, sin, sin(sin));
53 (%o6)                     tan(sin)
54 (%i7) opsubst([f=g, g=h], f(x));
55 (%o7)                       h(x)
56 @end example
58 Internally, Maxima does not use the unary negation, division, or the subtraction
59 operators; thus:
61 @example
62 (%i8) opsubst("+", "-", a-b);
63 (%o8)                     a - b
64 (%i9) opsubst("f", "-", -a);
65 (%o9)                      - a
66 (%i10) opsubst("^^", "/", a/b);
67                              a
68 (%o10)                       -
69                              b
70 @end example
72 The internal representation of @code{-a*b} is @code{*(-1,a,b)}; thus
74 @example
75 (%i11) opsubst("[", "*", -a*b);
76 (%o11)                  [- 1, a, b]
77 @end example
79 When either operator isn't a Maxima symbol, generally some other function
80 will signal an error:
82 @example
83 (%i12) opsubst(a+b, f, f(x));
85 Improper name or value in functional position:
86 b + a
87  -- an error.  Quitting.  To debug this try debugmode(true);
88 @end example
90 However, subscripted operators are allowed:
92 @example
93 (%i13) opsubst(g[5], f, f(x));
94 (%o13)                     g (x)
95                             5
96 @end example
97 @end deffn
99 @c --- End of file opsubst.de.texi ---------------------------------------------