There are a total of six comparison operators available in FreeMat, all of which are binary operators with the following syntax
y = a < b y = a <= b y = a > b y = a >= b y = a ~= b y = a == b
where a and b are numerical arrays or scalars, and y is a logical array of the appropriate size. Each of the operators has three modes of operation, summarized in the following list:
a is a scalar, b is an n-dimensional array - the output is then the same size as b, and contains the result of comparing each element in b to the scalar a.
a is an n-dimensional array, b is a scalar - the output is the same size as a, and contains the result of comparing each element in a to the scalar b.
a and b are both n-dimensional arrays of the same size - the output is then the same size as both a and b, and contains the result of an element-wise comparison between a and b.
C, with unequal types meing promoted using the standard type promotion rules prior to comparisons. The only difference is that in FreeMat, the not-equals operator is ~= instead of !=.
Some simple examples of comparison operations. First a comparison with a scalar:
--> a = randn(1,5)
a =
<double> - size: [1 5]
Columns 1 to 2
-0.0361639933961680 -0.140415140955028
Columns 3 to 4
0.693389551907565 -0.238187257168569
Columns 5 to 5
0.599755385896831
--> a>0
ans =
<logical> - size: [1 5]
Columns 1 to 5
0 0 1 0 1
Next, we construct two vectors, and test for equality:
--> a = [1,2,5,7,3]
a =
<int32> - size: [1 5]
Columns 1 to 5
1 2 5 7 3
--> b = [2,2,5,9,4]
b =
<int32> - size: [1 5]
Columns 1 to 5
2 2 5 9 4
--> c = a == b
c =
<logical> - size: [1 5]
Columns 1 to 5
0 1 1 0 0