Andrei Alexandrescu wrote:
dsimcha wrote:
== Quote from Andrei Alexandrescu (seewebsiteforem...@erdani.org)'s article
Jonathan Crapuchettes wrote:
I would like to divide one array by another using the slice syntax so
that I can benefit from the vectorized operation, but I am running into
a problem. Some of the numbers is my denominator array are 0, producing
NaNs and Infs in the result.

My question is: Is there a way to force 0/0 and x/0 to result in 0?

Thank you,
JC
I don't know of a way. You may want to try first running a loop
replacing 0 with inf throughout the denominator array. Then run
vectorized division; any non-inf divided by inf yields 0.
Andrei

At this point it's probably useless to vectorize, though. You may as well just
write something like:

if(isNaN(arr2[i])) {
    result[i] = 0;
} else {
    result[i] = arr1[i] / arr2[i];
}

I don't know. In such cases only experimentation can prove anything.

Andrei

I think it would depend heavily on cache effects. If it fits into the L1 cache, my guess is that doing a vectorized check followed by a vectorized division would be faster. But it's extremely difficult to predict this kind of thing. If the array is larger than the cache, the per-element check would definitely be much quicker, since you'd only have one cache miss instead of two.

Reply via email to