The two signal types in FAUST are int and float. When compiling, a float can be elevated to double or quad precision by means of the -double or -quad options to the FAUST compiler. An int is always 32-bit precision, for reasons mentioned in §2.25 below.
In the FAUST language, the type of a signal can be forced (with conversion, if necessary), as follows:
The int(x) conversion implements what is normally called magnitude truncation, or ``rounding toward zero''. Thus, int(0.99) = int(-0.99) = 0. Magnitude truncation is often preferred in digital signal processing applications because it normally best preserves the stability of all feedback loops. (When signals have a physical-amplitude interpretation, such as pressure or voltage, then magnitude truncation, unlike rounding, is always passive, i.e., not energy-creating.)
Note that integer expressions are automatically converted to float when necessary to avoid a loss of precision. Thus, for example,
process = 1/2; // = 0.5, 0.5, 0.5,...outputs 0.5, while
process = int(1/2); // = 0, 0, 0, ...puts out the constant zero signal.