 evalb - Maple Programming Help

# Online Help

###### All Products    Maple    MapleSim

evalb

evaluate as a Boolean expression

 Calling Sequence evalb(x)

Parameters

 x - expression

Description

 • The evalb command forces the evaluation of expressions involving relational operators, using a three-valued logic system.  The return values are true, false, and FAIL. If evaluation is not possible, an unevaluated expression is returned.
 • Normally expressions containing the relational operators =, <>, <, <=, >, and >= are treated as algebraic equations or inequalities by Maple.  However, when passed as arguments to the evalb command (or when appearing in a Boolean context in an if or while statement), they are evaluated to true or false if possible.
 • Note that expressions involving > and >= are converted into equivalent expressions involving < and <=, respectively.
 • An evalb call using <, <=, >, or >= returns evaluated only with arguments of type extended_numeric, complex, or string. For more on string comparisons, see the section Operations on Entire Strings in Using Strings in Maple.
 Important: The evalb command does not simplify expressions. It may return false for a relation that is true. In such a case, apply a simplification to the relation before using evalb.
 Important: The evalb command does not perform arithmetic for inequalities involving <, <=, >, or >=. It may return unevaluated when a relation is true. In such a case, perform the arithmetic operations before using evalb.

Thread Safety

 • The evalb command is thread-safe as of Maple 15.
 • For more information on thread safety, see index/threadsafe.

Examples

 > x = x;
 ${x}{=}{x}$ (1)
 > evalb(x=x);
 ${\mathrm{true}}$ (2)
 > evalb(x=y);
 ${\mathrm{false}}$ (3)
 > a:=2:
 > b:=2:
 > evalb(a=b);
 ${\mathrm{true}}$ (4)
 > evalb(Float(infinity)
 ${\mathrm{false}}$ (5)
 > evalb(Float(undefined)
 ${\mathrm{false}}$ (6)
 > evalb(Re(x)<>Re(x+1));
 ${\mathrm{true}}$ (7)

The evalb command cannot be used in some cases.

 > evalb(x>y);
 ${y}{<}{x}$ (8)
 > evalb(2+3*I<3+4*I);
 ${\mathrm{FAIL}}$ (9)

In some cases, you must subtract the right-hand side from the left-hand side before evaluating inequalities that use <, <=, >, or >=.

 > evalb(Re(x)
 ${\mathrm{\Re }}{}\left({x}\right){<}{1}{+}{\mathrm{\Re }}{}\left({x}\right)$ (10)
 > evalb(Re(x)-Re(x+1)<0);
 ${\mathrm{true}}$ (11)

The evalb command uses address tests to determine equality.

 > evalb(Re(x)<=Re(x));
 ${\mathrm{true}}$ (12)

You must convert symbolic arguments to floating-point values when using the evalb command for inequalities that use <, <=, >, or >=.

 > evalb(sqrt(5)>2);
 ${2}{<}\sqrt{{5}}$ (13)
 > evalb(evalf(sqrt(5))>2);
 ${\mathrm{true}}$ (14)

Alternately, in this case you could use the is command to evaluate the boolean expression, without using evalf.

 > is(sqrt(5)>2);
 ${\mathrm{true}}$ (15)

The evalb command can be used in combination with any number of packages.

 > evalb(StringTools[Search]("2","This sentence does not contain any numbers.")=0);
 ${\mathrm{true}}$ (16)

The evalb command can be used to check if an equation has an x-term.

 > evalb(coeff(x^3+2*x^2-5,x)<>0);
 ${\mathrm{false}}$ (17)
 > evalb(coeff(x^3+2*x^2-5, x^2)<>0);
 ${\mathrm{true}}$ (18)

 See Also