This part of ISO/IEC 10967 defines the properties of integer and floating point data types on computer systems to ensure that the processing of arithmetic data can be undertaken in a reliable and predictable manner. Emphasis is placed on documenting the existing variation betweeen systems, not on the elimination of such variation. The requirements of this part of ISO/IEC 10967 shall be in addition to those that may be specified in other standards, such as those for programming languages (See clause 7).
It is not the purpose of this part of ISO/IEC 10967 to ensure that an arbitrary numerical function can be so encoded as to produce acceptable results on all conforming systems. Rather, the goal is to ensure that the properties of arithmetic on a conforming system are made available to the programmer.
Therefore, it is not reasonable to demand that a substantive piece of software run on every implementation that can claim conformity to this part of ISO/IEC 10967.
An implementor may choose any combination of hardware and software support to meet the specifications of this part of ISO/IEC 10967. It is the arithmetic environment, as seen by the user, that does or does not conform to the specifications.
The term implementation (of this part of ISO/IEC 10967) denotes the total arithmetic environment, including hardware, language processors, exception handling facilities, subroutine libraries, ot her software, and all pertinent documentation.
Specifications included in this part of ISO/IEC 10967 This part of ISO/IEC 10967 defines integer and floating point data types. Definitions are included for bounded, unbounded, and modulo integer types, as well as both normalized and denormalized floating point types.
The specification for an arithmetic type includes
(a) The set of computable values;
(b) The set of computational operations provided, including
(1) primitive operations (addition, subtraction, etc.) with operands of the same type;
(2) comparison operations on two operands of the same type;
(3) conversion operations from any arithmetic type to any other arithmetic type; and
(4) operations that access properties of individual values.
(c) Program-visible parameters that characterize the values and operations.
(d) Procedures for reporting arithmetic exceptions.
A1.3 describes planned future work in this area.
Specifications not within the scope of this part of ISO/IEC 10967 This part of ISO/IEC 10967 provides no specifications for
(a) Arithmetic and comparison operations whose operands are of more than one data type. This part of ISO/IEC 10967 neither requires nor excludes the presence of such mixed operand operations.
(b) A general unnormalized floating point data type, or the operat ions on such data. This part of ISO/IEC 10967 neither requires nor excludes such data or operations.
(c) An interval data type, or the operations on such data. This part of ISO/IEC 10967 neither requires nor excludes such data or operations.
(d) A fixed point data type, or the operations on such data. This part of ISO/IEC 10967 neither requires nor excludes such data or operations.
(e) A rational data type, or the operations on such data. This part of ISO/IEC 10967 neither requires nor excludes such data or operations.
(f) The properties of arithmetic data types that are not related to the numerical process, such as the representation of values on physical media.
(g) Floating point values that represent infinity or non-numeric results. However, specifications for such values are given in IEC 559.
(h) The properties of integer and floating point data types that properly belong in language standards. Examples include
(1) The syntax of literals and expressions;
(2) The precedence of operators;
(3) The rules of assignment and parameter passing;
(4) The presence or absence of automatic type coercions;
(5) The consequences of applying an operation to values of improper type, or to uninitialized data.
- See clause 7 and annex E for a discussion of language standards and language bindings.
The internal representation of values is beyond the scope of this part of ISO/IEC 10967. Internal representations need not be unique, nor is there a requirement for identifiable fields (for sign, exponent, and so on). The value of the exponent bias, if any, is not specified.