When you perform operations using fixed-point numbers, the results of those operations can often be greater than the maximum value, less than the minimum value, or more precise than the delta for the specified configuration. Whenever a value does not exactly match a representable value in a particular fixed-point configuration, LabVIEW coerces the value to match a representable value. In the fixed-point data type, coercion is the forcing of a set of bits to meet the restrictions of a particular fixed-point configuration.
By default, LabVIEW adjusts the word length of the output values of operations to avoid data loss. This means that by default, LabVIEW adds bits to your fixed-point configurations to retain as much data as possible. However, LabVIEW cannot avoid data loss if the word length required to represent the output value exceeds the maximum you specify or the LabVIEW maximum total word length of 64 bits. Configuring the coercion behaviors of fixed-point operators allows you to control data loss within your code, and ensures that data loss in your code occurs in the way you expect.
In LabVIEW, you set coercion behaviors in the Fixed-Point Configurator for an operator, found by clicking Modify FXP Configuration in the Data Types drop-down menu on the Configure tab when you select an operator on the diagram. You can only specify fixed-point coercion behaviors when configuring operators.
For any operator, setting the Output Type Strategy to Exact or specifying the Limit Output Options configuration manually limits the output of the operator. By default, LabVIEW automatically adds the logic to support the Output Type Strategy and Limit Output Options configuration you set to the code that compiles to your FPGA.
Determining the methods of coercion that best match the needs of your specific application is an important step in using the fixed-point data type effectively in LabVIEW. Setting coercion strategies allows you to control data loss in your operators to prevent the word lengths of the fixed-point operators in your code from growing unboundedly. You can use the two types of coercion in LabVIEW, overflow and rounding, to strategically control data loss within your code.