More on vectorized comparisons

tn no at email.com
Fri Aug 24 09:53:15 PDT 2012


On Thursday, 23 August 2012 at 00:19:39 UTC, bearophile wrote:
> At page 69 of those slides there is some code that looks 
> interesting, I think this is a reduced version of part of it, 
> that shows another way to use vectorized comparisons:
>
>
> void main() {
>     double[] a = [1.0, 1.0, -1.0, 1.0, 0.0, -1.0];
>     double[] b = [10,   20,   30,  40,  50,   60];
>     double[] c = [1,     2,    3,   4,   5,    6];
>     if (a[] > 0)
>         b[] += c[];
> }
>
>
> I think that code is semantically equivalent to:
>
> void main() {
>     double[] a = [1.0, 1.0, -1.0, 1.0, 0.0, -1.0];
>     double[] b = [10,   20,   30,  40,  50,   60];
>     double[] c = [1,     2,    3,   4,   5,    6];
>     foreach (i; 0 .. a.length)
>         if (a[i] > 0)
>             b[i] += c[i];
> }

The proposed syntax looks weird. Wouldn't the followind be more 
intuitive:

foreach (i; a[i] > 0)
     b[i] += c[i];

Or alternatively it would be nice to be able to do it like in 
Matlab:

i = (a[] > 0);
b[i] += c[i];



More information about the Digitalmars-d mailing list