Overview
ISO/IEC TS 18661-1:2014 - Floating‑point extensions for C (Part 1: Binary floating‑point arithmetic) updates the C language (based on C11 / ISO/IEC 9899:2011) to provide a language binding for binary floating‑point arithmetic that conforms to ISO/IEC/IEEE 60559:2011 (the IEEE‑754‑2008 model). The Technical Specification extends Annex F of C11, specifies required behavior for C floating types that use IEC 60559 binary formats, and proposes library interfaces suitable for general implementations. It explicitly does not cover decimal floating‑point arithmetic or most optional IEC 60559 features.
Key topics and requirements
ISO/IEC TS 18661-1:2014 focuses on making C support the mandatory elements of the IEC 60559 binary model. Major topics include:
- Conformance and C standard integration - updates to C11 conformance clauses, macros, and headers for IEC 60559 support.
- Types and canonical representation - terminology and canonical forms for binary floating types that conform to IEC 60559.
- Operation binding and conversions - clear rules for floating‑to‑integer, conversions to/from character sequences, and conversion correctness.
- Rounding and reproducibility - support for constant rounding directions and runtime rounding control to improve reproducibility.
- NaN and special values - comprehensive NaN handling and classification consistent with IEC 60559.
- Mathematical and utility functions (, , ) - additions and refinements such as nearest‑integer functions, llogb family, max/min magnitude, nextup/nextdown, total order and canonicalize functions, and NaN utilities.
- Floating‑point environment - functions and control modes for exception flags and environment manipulation (fesetexcept, fetestexceptflag, etc.).
- Auxiliary changes to C11 - small fixes where C11 was problematic for IEC 60559 support.
Keywords naturally related to the standard: ISO/IEC TS 18661-1:2014, C11, IEC 60559, IEEE 754, binary floating-point arithmetic, rounding modes, NaN support, , , reproducible floating-point.
Practical applications and users
This Technical Specification is intended for groups that need consistent, portable, and well‑specified floating‑point behavior in C programs:
- Compiler and runtime/library implementers - to provide IEC 60559‑conforming floating types and math/environment functions.
- Numerical software developers - for scientific computing, signal processing, and HPC where reproducibility and precise exception semantics matter.
- Embedded and safety‑critical systems - where deterministic FP behavior, exception handling, and portability are required.
- Tooling and verification teams - for debugging, testing, and certification of numerical code that depends on IEC 60559 semantics.
Benefits include improved portability of numerical programs, clearer semantics for exceptions and special values (NaNs, infinities), and mechanisms to achieve reproducible results across conforming implementations.
Related standards
- ISO/IEC/IEEE 60559:2011 (IEEE‑754‑2008) - floating‑point arithmetic model this TS binds to C.
- ISO/IEC 9899:2011 (C11) - base C standard that TS 18661-1 updates (Annex F and library clauses).
- Other parts of TS 18661 (Parts 2–5) cover decimal floating‑point, interchange/extended types, supplementary functions, and attributes.