faustlibraries icon indicating copy to clipboard operation
faustlibraries copied to clipboard

Strange behaviour of ba.if with fractional conditions < 1.

Open dariosanfilippo opened this issue 5 years ago • 1 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

dariosanfilippo avatar May 09 '20 11:05 dariosanfilippo

Also, I'd say that select2 should have the same behaviour and any non-zero condition should output the second signal.

Dario

dariosanfilippo avatar May 09 '20 12:05 dariosanfilippo