@@ -4,17 +4,25 @@ Subject: Requirements and specifications for interoperability with C
44 interchange and extended types
55Date: 2025-Oct-XX
66
7- Reference:
7+ References:
8+ ISO/IEC 9899:2024 Programming languages -- C ("C23")
9+ (working draft N3220)
10+ WG5/N2249 Fortran 202Y Work Items
11+ 23-176 Add extended floating-point types defined in ISO C23
12+ to ISO_C_BINDING
13+ ISO/IEC 60559:2020 Floating-Point arithmetic
14+ IEEE 754-2019 IEEE Standard for Floating-Point Arithmetic
15+
816
9171 Background
1018============
1119
1220bg01. The ISO C23 specification (ISO/IEC 9899:2024) added support for
13- interchange and extended floating-point types. The current Fortran
14- 202Y work list WG5/N2249 includes adding interoperability with
15- these types as accepted work item US05. At meeting #230 in June
16- 2023, J3 accepted paper 23-176 as background/use-case for
17- additional interchange types.
21+ interchange and extended floating-point types (C23 Annex H). The
22+ current Fortran 202Y work list WG5/N2249 includes adding
23+ interoperability with these types as accepted work item US05. At
24+ meeting #230 in June 2023, J3 accepted paper 23-176 as
25+ background/use-case for additional interchange types.
1826
1927bg03. This paper contains formal requirements and specifications for
2028 Fortran 202Y proposal US05, "Add extended floating-point types
@@ -23,7 +31,18 @@ bg03. This paper contains formal requirements and specifications for
23312 Requirements
2432==============
2533
26- rq01. The ISO_C_BINDING module should provide integer named constants
34+ rq01. The C23 standard adds a large number of new types, importing
35+ significant portions of ISO/IEC 60559 (a.k.a IEEE 754) into its
36+ specification. The most important of these for Fortran
37+ interoperability with C are the '_Float16', '_Float32',
38+ '_Float64', and '_Float128' types (and their related complex
39+ types). Requirements rq02-r05 deal with these new types. Many of
40+ the other types, covered by rq07-rq17, are marked as optional and
41+ could be dropped independently while keeping the rest of this
42+ paper. These optional requirements primarily serve to maintain
43+ parity with Annex H of C23.
44+
45+ rq02. The ISO_C_BINDING module should provide integer named constants
2746 for KIND parameters corresponding to the C interchange floating
2847 types '_Float16', '_Float32', '_Float64', and '_Float128'.
2948
@@ -94,7 +113,7 @@ sp02. To the ISO_C_BINDING module, add the following integer named
94113 If the companion processor defines '__STDC_IEC_60559_BFP__' and
95114 '__STDC_IEC_60559_TYPES__', then the constants 'C_FLOAT32' and
96115 'C_FLOAT64' should have the same values as 'C_FLOAT' and
97- 'C_DOUBLE' (C2023 H.2.4.2).
116+ 'C_DOUBLE', respectively (C2023 H.2.4.2).
98117
99118sp05. To the ISO_C_BINDING module, add the following integer named
100119 constants for real KIND parameters:
0 commit comments