Strange behaviour of ba.if with fractional conditions < 1.
dariosanfilippo opened this issue · comments
Hello, people.
I believe that, in C/C++ and perhaps all other languages, 0 is false and any non-zero is true.
ba.if(.5, 1, 0); returns 0. I suggest rewriting ba.if as:
if(cond,then,else) = ceil(cond),else,then:select2; .
Also, I find the comments in the code deceiving as it can be used to avoid NANs at run-time, as in the case of:
division(x1, x2) = ba.if(x2 == 0, 0, x1/x2); .
Best,
Dario
Also, I'd say that select2 should have the same behaviour and any non-zero condition should output the second signal.
Dario