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

Algebra Calculator

#### If

-- Special operator: if Represents conditional evaluation. Various forms of `if` expressions are recognized.

`if <cond_1> then <expr_1> else <expr_0>` evaluates to <expr_1> if <cond_1> evaluates to `true`, otherwise the expression evaluates to <expr_0>.

`if <cond_1> then <expr_1> elseif <cond_2> then <expr_2> elseif ... else <expr_0>` evaluates to <expr_k> if <cond_k> is `true` and all preceding conditions are `false`. If none of the conditions are `true`, the expression evaluates to `expr_0`.

A trailing `else false` is assumed if `else` is missing. That is, `if <cond_1> then <expr_1>` is equivalent to `if <cond_1> then <expr_1> else false`, and `if <cond_1> then <expr_1> elseif ... elseif <cond_n> then <expr_n>` is equivalent to `if <cond_1> then <expr_1> elseif ... elseif <cond_n> then <expr_n> else false`.

The alternatives <expr_0>, ..., <expr_n> may be any Maxima expressions, including nested `if` expressions. The alternatives are neither simplified nor evaluated unless the corresponding condition is `true`.

The conditions <cond_1>, ..., <cond_n> are expressions which potentially or actually evaluate to `true` or `false`. When a condition does not actually evaluate to `true` or `false`, the behavior of `if` is governed by the global flag `prederror`. When `prederror` is `true`, it is an error if any evaluated condition does not evaluate to `true` or `false`. Otherwise, conditions which do not evaluate to `true` or `false` are accepted, and the result is a conditional expression.

Among other elements, conditions may comprise relational and logical operators as follows.

Operation Symbol Type

less than < relational infix less than <= or equal to relational infix equality (syntactic) = relational infix negation of = # relational infix equality (value) equal relational function negation of equal notequal relational function greater than >= or equal to relational infix greater than > relational infix and and logical infix or or logical infix not not logical prefix

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

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

### Related Examples

##### if-min-plot2d

j(x):=if (x<=0.5) ...

f(x):=j(2*x);

h(x):=j(2*x-1);

Calculate

##### if-plot2d-plot3d

f(x):=if (x<=0.5) ...

plot2d([f(x)],[x,0.5...

a(x,y):=f((x^2+y^2)^0...

Calculate

##### if-plot2d-plot3d

f(x):=if (x>=0) th...

plot2d([f(x)],[x,-1,3...

g(x):=f(x)/(f(x)+f(1-...

Calculate

##### if-lambda-let-unless

:lisp (defun lottery ...

:lisp (lottery);

:lisp (lottery t);

Calculate

##### if-let

:lisp (defvar *my-lis...

:lisp (defun levels (...

:lisp (levels *my-lis...

Calculate

##### if-plot2d

plot2d((if (x>2) then...

Calculate

duration:10000;

ramp_start:-0.3;

ramp_end:0.8;

Calculate

##### if

x:8;

(if (x > 17) then ...

Calculate

s:[ 1, 2, 8, 16, 55, ...

Calculate

##### if-min-plot2d-sqrt

j(x):=if (x<=0.5) ...

g(x):=if (x<=0.5) ...

p(x):=3+2*(j(x))^2+2*...

Calculate