Intel® C++ Compiler 16.0 User and Reference Guide
The following lists special values that the Intel® C++ Compiler supports and provides a brief description.
The sign of zero is the same as the sign of a nonzero number. Comparisons, however, consider +0 to be equal to -0. A signed zero is useful in certain numerical analysis algorithms, but in most applications the sign of zero is invisible.
Denormalized numbers (denormals) fill the gap between the smallest positive normalized number and the smallest negative number. Otherwise only (+/-) 0 occurs in that interval. Denormalized numbers extend the range of computable results by allowing for gradual underflow.
Systems based on the IA-32 architecture support a Denormal Operand status flag, which, when set, means at least one of the input operands to a floating-point operation is a denormal. The Underflow status flag is set when a number loses precision and becomes a denormal.
Infinities are the result of arithmetic in the limiting case of operands with arbitrarily large magnitude. They provide a way to continue when an overflow occurs. The sign of an infinity is simply the sign you obtain for a finite number in the same operation as the finite number approaches an infinite value.
By retrieving the status flags, you can differentiate between an infinity that results from an overflow and one that results from division by zero. The Intel® C++ Compiler treats infinity as signed by default. The output value of infinity is +Infinity or -Infinity.
Not a Number (NaN) results from an invalid operation. For instance 0/0 and SQRT(-1) result in NaN. In general, an operation involving a NaN produces another NaN. Because the fraction of a NaN is unspecified, there are many possible NaNs.
The Intel® C++ Compiler treats all NaNs identically, but provides two different types:
Signaling NAN, which has an initial fraction bit of 0 (zero). This usually raises an invalid exception when used in an operation.
Quiet NaN, which has an initial fraction bit of 1.
The floating-point hardware changes a signaling NAN into a quiet NAN during many arithmetic operations, including the assignment operation. An invalid exception may be raised but the resulting floating-point value will be a quiet NAN. Fortran binary and unformatted input and output do not change the internal representations of the values as they are handled. Therefore, signaling and quiet NANs may be read into real data and output to files in binary form.
The output value of NaN is NaN.