grame-cncm / faustlibraries

The Faust libraries

Home Page:https://faustlibraries.grame.fr

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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