Maxima Special operator
ifRepresents 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