That’s because operators >
and <
are useless in a vector space, because a vector space is not ordered. So by default, these operators are returning also a boolean vector, when used with two vector-valued operands.
Operators ==
and !=
are (extremely) useful to test vector equality, so they always return a boolean value.
If you want to return a vector that test equality of each component, you can write this:
veq(A,B) = !(A-B);
C = veq(A,B); // == between vector components
D = !veq(A,B); // != between vector components