Maxima 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