This functionality does not run in MATLAB.
x = y _equal(x, y)
x = y defines an equation.
x = y is equivalent to the function call _equal(x, y).
The operator = returns a symbolic expression representing an equation.
The resulting expression can be evaluated to TRUE or FALSE by the function bool. It also serves as control conditions in if, repeat, and while statements. In all these cases, testing for equality is a purely syntactical test. E.g., bool(0.5 = 1/2) returns FALSE although both numbers coincide numerically.
The boolean expression not x = y is always converted to x <> y.
The expression not x <> y is always converted to x = y.
In the following, note the difference between syntactical and numerical equality. The numbers 1.5 and coincide numerically. However, 1.5 is of domain type DOM_FLOAT, whereas is of domain type DOM_RAT. Consequently, they are not regarded as equal in the following syntactical test:
1.5 = 3/2; bool(%)
If floating-point numbers are involved, one should rather use the operator ~= instead of =. The functions bool and is test whether the floating-point approximations coincide up to the relative precision given by DIGITS:
1.5 ~= 3/2; bool(1.5 ~= 3/2); is(1.5 ~= 3/2);
The following expressions coincide syntactically:
_equal(1/x, diff(ln(x),x)); bool(%)
The Boolean operator not converts equalities and inequalities:
not a = b, not a <> b
The examples below demonstrate how = and <> deal with non-mathematical objects and data structures:
if "text" = "t"."e"."x"."t" then "yes" else "no" end
bool(table(a = PI) <> table(a = sqrt(2)))
bool(1 = x/(x + y) + y/(x + y)), testeq(1 = x/(x + y) + y/(x + y))
Equations and inequalities are typical input objects for system functions such as solve:
solve(x^2 - 2*x = -1, x)
solve(x^2 - 2*x <> -1, x)