## digitalmars.D - Comparison vector ops

• bearophile (34/34) Feb 20 2011 Are comparison operators too going vectorial?
```Are comparison operators too going vectorial?

void main() {
int[5] a1, a2, a3;
bool[5] b1, b2;
ubyte[5] u1, u2;

a1 = [1, 2, 3, 4, 5];
a2 = [5, 2, 1, 4, 4];

b1 = a1[] > 3;
assert(b1 == [false, false, false, true, true]);
u1 = a1[] > 3;
assert(u1 == [0, 0, 0, 1, 1]);

b2 = a1[] > a2[];
assert(b2 == [false, false, true, false, true]);
u2 = a1[] > a2[];
assert(u2 == [0, 0, 1, 0, 1]);

a3 = max(a1[], a2[]);
assert(a3 == [5, 2, 3, 4, 5]);

assert(pack(a1, a1[] > 3) == [4, 5]);
}

Vectorial comparisons are common in NumPy code:
https://github.com/paulnasca/paulstretch_python/raw/master/paulstretch_stereo.py

If you take a look at the AVX instructions you get ideas for some other
vectorial operations beside just the comparison ones, like vectorial loops:
http://software.intel.com/file/33301

A useless example:

void main() {
int[5] a0 = [0, 0, 0, 0, 0];
int[5] a = [1, 2, 3, 4, 5];
while (a[] > 0)
a[] = min(a[] - 1, a0[]);
assert(a0[] == a[]);
}

Bye,
bearophile
```
Feb 20 2011