Overview
ISO/IEC TS 18661-3:2015 - "Floating‑point extensions for C - Part 3: Interchange and extended types" - is a technical specification that extends the C programming language to support the arithmetic interchange and extended floating‑point formats defined in ISO/IEC/IEEE 60559:2011 (the modern IEEE‑754 family). The TS adds types, conversion rules and library support so C implementations can expose and manipulate wider and interchange floating‑point representations, and provides functions for the non‑arithmetic interchange encodings specified by 60559.
Key topics and requirements
- Language conformance: Rules for freestanding and hosted implementations, predefined macros and standard headers to declare new types and functionality.
- Types and characteristics: Definitions for interchange and extended floating‑point types (extensions to C’s abstract floating‑point model) and their implementation characteristics.
- Conversions and constants: Specifications for conversions between formats and for correctly formed constants in extended types.
- Expressions and evaluation: How expressions involving extended/interchange types are evaluated and how rounding and exceptions are handled.
- Library support: Additions to standard headers and functions, including:
- Math library (macros, functions, floating‑point environment)
- Encoding conversion functions (for interchange formats)
- Numeric conversion routines in
- Complex arithmetic and type‑generic macros
- Non‑arithmetic interchange formats: Support functions for formats that are intended for data interchange but not for arithmetic operations.
- Conformance to IEEE/60559 guidance: Ensures C bindings align with features recommended by ISO/IEC/IEEE 60559:2011 (e.g., extended formats, interchange encodings, and more precise conversion semantics).
Applications and who uses it
ISO/IEC TS 18661-3:2015 is aimed at parties that need precise, portable floating‑point behavior beyond the default C types:
- Compiler and standard library implementers adding support for extended or interchange floating‑point formats.
- Embedded systems and firmware developers who must exchange binary floating‑point data across heterogeneous platforms.
- High‑performance computing and numerical software authors requiring wider precision types or reproducible cross‑platform results.
- Interoperability and data‑exchange engineers handling serialization/encoding of floating‑point values (including non‑arithmetic interchange formats).
- Testing labs and tool vendors verifying conformance with IEEE/60559 features in C environments.
Related standards
- ISO/IEC 9899:2011 (C11) - base C standard extended by TS 18661 series
- ISO/IEC/IEEE 60559:2011 - floating‑point arithmetic (IEEE‑754:2008 equivalent)
- Other parts of the TS 18661 series (Parts 1, 2, 4, and planned Part 5) address binary/decimal arithmetic, supplementary functions and attributes.
Keywords: ISO/IEC TS 18661-3:2015, floating‑point extensions for C, interchange types, extended types, ISO/IEC/IEEE 60559:2011, C standard, encoding conversion, math.h, floating‑point portability.