Scilab operator
Last update : 23/10/2007
comparison - comparison, relational operators
Calling Sequence
-
a==b
-
a~=b or a<>b
-
a<b
-
a<=b
-
a>b
-
a>=b
Parameters
-
a
: 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
.
-
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
.
Description
Two classes of operators have to be distinguished:
-
The equality and inequality comparisons:
a==b
,
a~=b
(or equivalently
a<>b
).
These operators apply to any type of operands.
-
The order related comparisons:
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:
-
With array variables like floating point and integer arrays, logical arrays,
string arrays, polynomial and rationnal 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.
-
If
a
and
b
evaluates as arrays
with same types, but
a
or
b
is a 1 by
1 array 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.
-
In the others cases the result is the boolean
%f
-
If the operand data types are differents but "compatible" like
floating points and integers a type conversion is performed before
the comparison.
-
With other type of operands 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
.
Examples
//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)
//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
See Also
less
,
boolean
,
isequal
,