Visible to Intel only — GUID: GUID-3D678370-8F79-419F-8811-CB0B928ABD44
Visible to Intel only — GUID: GUID-3D678370-8F79-419F-8811-CB0B928ABD44
Declare the ac_fixed Data Type
Perform the following steps to declare the ac_fixed data type:
- Include the ac_fixed.hpp header file as follows:
Declare your ac_fixed variables as follows:#include <sycl/ext/intel/ac_types/ac_fixed.hpp>
The following table describes the template parameters:ac_fixed<W, I, S, Q, O> var_name;
Template Parameter Description W The total length of the fixed-point number in bits. I The number of bits used to represent the integer value of the fixed-point number. The difference of N−I determines how many bits represent the fractional part of the fixed-point number.
S A Boolean value that indicates the signedness of the of the data type: - true indicates a signed fixed-point number
- false indicates an unsigned fixed-point number
Q The quantization mode that determines how to handle values where the generated precision (number of decimal places) exceeds the number of bits available in the variable to represent the fractional part of the number.
For a list of quantization modes and their descriptions, refer to the Quantization and Overflow section in https://github.com/hlslibs/ac_types/blob/v3.7/pdfdocs/ac_datatypes_ref.pdf.
O The overflow mode that determines how to handle values where the generated value has more bits than the number of bits available in the variable. For a list of overflow modes and their descriptions, refer to the Quantization and Overflow section in https://github.com/hlslibs/ac_types/blob/v3.7/pdfdocs/ac_datatypes_ref.pdf.
For a list of supported operators and their return types, refer to the Arbitrary-Length Bit-Accurate Integer and Fixed-Point Datatypes chapter in https://github.com/hlslibs/ac_types/blob/v3.7/pdfdocs/ac_datatypes_ref.pdf.
Explicit Conversion Functions
The following table lists the functions to convert to C signed and unsigned integer types int, long and Slong for the ac_fixed data type:
Function | Return Type |
---|---|
to_int() | int |
to_uint() | unsigned int |
to_long() | long |
to_ulong() | unsigned long |
to_int64() | Slong |
to_uint64() | Ulong |
to_double() | double |
to_float() | float |
to_ac_int() | ac_int<max(I,1), S>, where I represents the integer width and S is a bool parameter representing the signedness of the ac_int data type. |
Math Functions Provided by the ac_fixed_math.hpp Header File
Include the header file as follows:
#include <sycl/ext/intel/ac_types/ac_fixed_math.hpp>
The ac_fixed_math.hpp header file provides support for the following arbitrary precision fixed-point (ac_fixed) data type functions:
- sqrt_fixed
- reciprocal_fixed
- reciprocal_sqrt_fixed
- sin_fixed
- cos_fixed
- sincos_fixed
- sinpi_fixed
- cospi_fixed
- sincospi_fixed
- log_fixed
- exp_fixed
For details about input type restrictions, input value limits, and output type propagation rules, review the comments in the ac_fixed_math.hpp header file.
Due to the differences in the internal math implementations, the results from the ac_fixed data type operations might differ between simulation and emulation. The maximum difference is within a few units in the last place (ULPs).