### The Maxima on-line user's manual

Algebra Calculator

#### Expand

Function: expand (<expr>)

Function: expand (<expr>, <p>, <n>) Expand expression <expr>. Products of sums and exponentiated sums are multiplied out, numerators of rational expressions which are sums are split into their respective terms, and multiplication (commutative and non-commutative) are distributed over addition at all levels of <expr>.

For polynomials one should usually use `ratexpand` which uses a more efficient algorithm.

`maxnegex` and `maxposex` control the maximum negative and positive exponents, respectively, which will expand.

`expand (<expr>, <p>, <n>)` expands <expr>, using <p> for `maxposex` and <n> for `maxnegex`. This is useful in order to expand part but not all of an expression.

`expon` - the exponent of the largest negative power which is automatically expanded (independent of calls to `expand`). For example if `expon` is 4 then `(x+1)^(-5)` will not be automatically expanded.

`expop` - the highest positive exponent which is automatically expanded. Thus `(x+1)^3`, when typed, will be automatically expanded only if `expop` is greater than or equal to 3. If it is desired to have `(x+1)^n` expanded where `n` is greater than `expop` then executing `expand ((x+1)^n)` will work only if `maxposex` is not less than `n`.

`expand(expr, 0, 0)` causes a resimplification of `expr`. `expr` is not reevaluated. In distinction from `ev(expr, noeval)` a special representation (e. g. a CRE form) is removed. See also `ev`.

The `expand` flag used with `ev` causes expansion.

The file `simplification/facexp.mac` contains several related functions (in particular `facsum`, `factorfacsum` and `collectterms`, which are autoloaded) and variables (`nextlayerfactor` and `facsum_combine`) that provide the user with the ability to structure expressions by controlled expansion. Brief function descriptions are available in `simplification/facexp.usg`. A demo is available by doing `demo("facexp")`.

```     Examples:
(%i1) expr:(x+1)^2*(y+1)^3;
2        3
(%o1)                          (x + 1)  (y + 1)
(%i2) expand(expr);
2  3        3    3      2  2        2      2      2
(%o2) x  y  + 2 x y  + y  + 3 x  y  + 6 x y  + 3 y  + 3 x  y
2
+ 6 x y + 3 y + x  + 2 x + 1```

```          (%i3) expand(expr,2);
2        3              3          3
(%o3)                x  (y + 1)  + 2 x (y + 1)  + (y + 1)```

```          (%i4) expr:(x+1)^-2*(y+1)^3;
3
(y + 1)
(%o4)                              --------
2
(x + 1)
(%i5) expand(expr);
3               2
y             3 y            3 y             1
(%o5)      ------------ + ------------ + ------------ + ------------
2              2              2              2
x  + 2 x + 1   x  + 2 x + 1   x  + 2 x + 1   x  + 2 x + 1```

```          (%i6) expand(expr,2,2);
3
(y + 1)
(%o6)                            ------------
2
x  + 2 x + 1```

Resimplify an expression without expansion:

```          (%i7) expr:(1+x)^2*sin(x);
2
(%o7)                           (x + 1)  sin(x)
(%i8) exponentialize:true;
(%o8)                                true
(%i9) expand(expr,0,0);
2    %i x     - %i x
%i (x + 1)  (%e     - %e      )
(%o9)                  - -------------------------------
2```

There are also some inexact matches for `expand`. Try `?? expand` to see them.

```(%o1)                                true
(%i2) ```

### Related Examples

##### expand-makelist-random

seeds: makelist(rando...

quintic(x):=6*x^5-15*...

lerp(a,b,t):=b*quinti...

Calculate

##### expand-simpsum

expand((x^4+4*(x^3)-1...

Calculate

##### expand

expand(16*( (u/2-v/4+...

Calculate

##### expand-sqrt

V (x) := a/4*x^2*(x-b...

x1:(1/4*(3*b+sqrt(b^2...

x2:(1/4*(3*b-sqrt(b^2...

Calculate

##### expand-kill-solve

eq1:expand(a^2+2*d^2=...

eq2:expand(a^2+8*d^2=...

eq3:expand((eq1-eq2)/...

Calculate

##### expand-subst

g:2*a^5+2*b^5+2*c^5+2...

h:subst([b=a+x,c=a+y,...

expand(h);

Calculate

##### expand-rat-subst-sum

pol1: subst([a[8]=1,a...

pol: rat(expand(pol1)...

Calculate

##### expand-float-fullratsimp-kill-multthru-numer

/* Umwandlung stern d...

kill;

Z20:R20+X20;

Calculate

##### expand-float-integrate-solve

float(solve(2*(59.5)*...

float(expand(integrat...

float(expand(0.25 + i...

Calculate

##### expand-linsolve

eq1:x*4+y-2=y;

eq2:x+2=y;

linsolve([eq1,eq2],[x...

Calculate