Developer Guide and Reference

Contents

Floating-Point Formats

This IEEE 754-2008 standard specifies formats and methods for floating-point representation in computer systems, and recommends formats for data interchange. The exception conditions are defined, and the standard handling of these conditions is specified below. The binary counterpart floating-point exception functions are described in ISO C99. The decimal floating-point exception functions are defined in the
fenv.h
header file. The compiler supports decimal floating point types in C and C++. The decimal floating point formats are defined in the IEEE 754-2008 standard.
In C, these decimal floating types are supported:
  • _Decimal32
  • _Decimal64
  • _Decimal128
In C++ for Windows* and Linux*, these decimal classes are supported:
  • decimal32
  • decimal64
  • decimal128
To use this feature in C++ on Linux*, GCC* 4.5 or later is required.
The decimal floating-point is not supported in C++ for
macOS*
.
To ensure correct decimal floating-point behavior, you must define
__STDC_WANT_DEC_FP__
before any standard headers are included. This is required for the declaration of decimal macros and library functions in order to ensure correct decimal floating-point results at run-time.
Example: Linux*
#include <iostream> #define __STDC_WANT_DEC_FP__ #include <decimal/decimal> typedef std::decimal::decimal32 _Decimal32; typedef std::decimal::decimal64 _Decimal64; typedef std::decimal::decimal128 _Decimal128; #include <dfp754.h> using namespace std; using namespace std::decimal; int main() { std::decimal::decimal32 d = 4.7df; std::cout << decimal_to_long_double(d) << std::endl; return 0; }
Example: Windows*
#include <iostream> #define __STDC_WANT_DEC_FP__ #include <decimal> #include <dfp754.h> using namespace std; using namespace std::decimal; int main() { std::decimal::decimal32 d = 4.7df; std::cout << decimal_to_long_double(d) << std::endl; return 0; }

Functions to Check Decimal Floating-Point Status

Use these floating-point exception functions to detect exceptions that occur during decimal floating-point arithmetic:
Floating-Point Functions
Function
Brief Description
fe_dec_feclearexcept()
Clears the supported floating-point exceptions.
fe_dec_fegetexceptflag
Stores an implementation-defined representation of the states of the floating-point status flags.
fe_dec_feraiseexcept
Raises the supported floating-point exceptions.
fe_dec_fesetexceptflag
Sets the floating-point status flags.
fe_dec_fetestexcept()
Determines which of a specified subset of the floating point exception flags are currently set.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804