1) https://faustdoc.grame.fr/manual/syntax/#numbers is quite clear AFAICS:

======
Numbers

Faust considers two types of numbers: integers and floats. Integers are 
implemented as signed 32-bits integers, and floats are implemented either with 
a simple, double, or extended precision depending of the compiler options. 
Floats are available in decimal or scientific notation. 

Like any other Faust expression, numbers are signal processors. For example the 
number 0.95 is a signal processor of type 𝕊0→𝕊1 that transforms an empty tuple 
of signals () into a 1-tuple of signals (y) such that ∀t∈ℕ,y(t)=0.95.

Operations on integer numbers follow the standard C semantic for +, -, * 
operations and can possibly overflow if the result cannot be represented as a 
32-bits integer. The / operation is treated separately and cast both of its 
arguments to floats before doing the division, and thus the result takes the 
float type.
======

Should be add something more ?

2) In a more long term : do we really need 64 bits integer ? Or forcing 
compilation as real ( -single/double/quad) when needed is enough ?

3) We have to fix Dario just reported issue : 
https://github.com/grame-cncm/faust/issues/962 

Stéphane 

> Le 29 oct. 2023 à 19:09, Dario Sanfilippo <sanfilippo.da...@gmail.com> a 
> écrit :
> 
> Hi, Oleg.
> 
> On Sun, 29 Oct 2023 at 17:02, Oleg Nesterov <o...@redhat.com> wrote:
> On 10/29, Dario Sanfilippo wrote:
> >
> > internal int representation is always 32-bit, and Stéphane explained that
> > it can't be changed easily.
> 
> Yes, and this is a bit unfortunate
> 
> > Since Faust is a high-level language for DSP, wouldn't it make sense to
> > treat all signals as float unless there's an explicit cast to int?
> 
> I disagree. If nothing else this would be incompatible change.
> For example, even ba.time should be changed somehow to avoid
> the performance regression.
> 
> Yes, that also doesn't sound right.
>  
> 
> I'd like to have another option which controls the "int" type,
> just like -single/double/quad do, but this is not simple.
> 
> Until then, I suggest that we document these differences and behaviours of 
> ints and float signals well in the documentation. What I will personally also 
> do from now on when contributing, is to stress the use of float signals by 
> always using the point (.) in any operation, even those that are always float 
> regardless of the operands; for example:
> 
> process = int / 2.0;
> 
> Ciao,
> Dario
>  
> 
> Oleg.
> 
> _______________________________________________
> Faudiostream-users mailing list
> Faudiostream-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users



_______________________________________________
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users

Reply via email to