comparison, relational operators
a==b a~=b or a<>b a<b a<=b a>b a>=b
any type of variable for a==b, a~=b
a<>b equality comparisons and restricted to real floating point and integer
array for order related comparisons a<b,
a<=b, a>b, a>=b.
any type of variable for a==b, a~=b
a<>b equality comparisons and restricted to
real floating point and integer arrays for order related comparisons
a<b, a<=b,
a>b, a>=b.
Two classes of operators have to be distinguished:
a==b, a~=b (or equivalently a<>b).
These operators apply to any type of operands.
a<b, a<=b,
a>b, a>=b. These operators apply
only to real floating point and integer arrays.
The semantics of the comparison operators also depend on the operands types:
like floating point and integer arrays, logical arrays, string arrays, polynomial and rational arrays, handle arrays, lists... the following rules apply:
If a and b evaluates as arrays with same types
and identical dimensions, the comparison is performed element by
element and the result is an array of booleans of the same size.
If a and b evaluates as arrays
with same types, but a or b is a scalar,
then the scalar is compared with each element of the
other array. The result is an array of booleans of the size of
the non scalar operand.
If a or b are arrays, but one of them
is empty, then an equality or an inequality comparison is possible. In this case,
the result is a scalar boolean.
In the others cases the result is the boolean %f
If the operand data types are different but "compatible" like floating points and integers, then a type conversion is performed before the comparison.
like function,
libraries, the result is %t
if the objects are identical and %f in the
other cases.
Equality comparison between operands of incompatible data types
returns %f.
//element wise comparisons (1:5)==3 (1:5)<=4 (1:5)<=[1 4 2 3 0] 1<[] list(1,2,3)~=list(1,3,3) "foo"=="bar" sparse([1,2;4,5;3,10],[1,2,3]) == sparse([1,2;4,5;3,10],[1,2,3]) //object wise comparisons (1:10)==[4,3] 'foo'==3 1==[] list(1,2,3)==1 isequal(list(1,2,3),1) isequal(1:10,1) //comparison with type conversion int32(1)==1 int32(1)<1.5 int32(1:5)<int8(3) p=poly(0,'s','c') p==0 p/poly(1,'s','c')==0 | ![]() | ![]() |