@@ -12,6 +12,8 @@ References:
1212 to ISO_C_BINDING
1313 ISO/IEC 60559:2020 Floating-Point arithmetic
1414 IEEE 754-2019 IEEE Standard for Floating-Point Arithmetic
15+ 25-189 Requirements and specifications for interoperability with C
16+ interchange and extended types
1517
1618
17191 Background
@@ -28,48 +30,47 @@ bg03. This paper contains formal requirements and specifications for
2830 Fortran 202Y proposal US05, "Add extended floating-point types
2931 defined in ISO C23 to ISO_C_BINDING".
3032
33+ bg05. The C23 standard adds a large number of new types, importing
34+ significant portions of ISO/IEC 60559 (a.k.a IEEE 754) into its
35+ specification. During discussion of 25-189 at meeting #237, a
36+ straw poll of J3 indicated strong consensus for adding support for
37+ extended binary floating types (rq07-rq09) and decimal floating
38+ types (rq11), but strong consensus against extended decimal
39+ floating types (25-189 rq13) and arbitrary-size floating types
40+ (25-189 rq15-rq17). This revision amends the paper to reflect this
41+ consensus.
42+
31432 Requirements
3244==============
3345
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
46+ rq02. The ISO_C_BINDING module shall provide integer named constants
4647 for KIND parameters corresponding to the C interchange floating
4748 types '_Float16', '_Float32', '_Float64', and '_Float128'.
4849
4950rq03. If the companion processor defines '__STDC_IEC_60559_BFP__' and
5051 '__STDC_IEC_60559_TYPES__', then the KIND parameters corresponding
51- to '_Float32' and '_Float64' should equal those corresponding to
52+ to '_Float32' and '_Float64' shall equal those corresponding to
5253 'float' and 'double', respectively.
5354
54- rq05. The ISO_C_BINDING module should provide integer named constants
55+ rq05. The ISO_C_BINDING module shall provide integer named constants
5556 for KIND parameters corresponding to the C interchange complex
5657 types '_Float16_Complex', '_Float32_Complex', '_Float64_Complex',
57- and '_Float128_Complex'. The values of the named constants should
58+ and '_Float128_Complex'. The values of the named constants shall
5859 equal those of the respective constants for the interchange
5960 floating types.
6061
61- rq07. The ISO_C_BINDING module should provide integer named constants
62+ rq07. The ISO_C_BINDING module shall provide integer named constants
6263 for KIND parameters corresponding to the C extended floating types
6364 '_Float32x', '_Float64x', and '_Float128x'.
6465
65- rq09. The ISO_C_BINDING module should provide integer named constants
66+ rq09. The ISO_C_BINDING module shall provide integer named constants
6667 for KIND parameters corresponding to the C extended complex types
6768 '_Float32x_Complex', '_Float64x_Complex', and
68- '_Float128x_Complex'. The values of the named constants should
69+ '_Float128x_Complex'. The values of the named constants shall
6970 match those of the respective constants for the extended floating
7071 types.
7172
72- rq11. The ISO_C_BINDING module should provide integer named constants
73+ rq11. The ISO_C_BINDING module shall provide integer named constants
7374 for KIND parameters corresponding to the C interchange decimal
7475 floating types '_Decimal32', '_Decimal64', and '_Decimal128'.
7576
@@ -102,7 +103,7 @@ sp02. To the ISO_C_BINDING module, add the following integer named
102103
103104 If the companion processor defines '__STDC_IEC_60559_BFP__' and
104105 '__STDC_IEC_60559_TYPES__', then the constants 'C_FLOAT32' and
105- 'C_FLOAT64' should have the same values as 'C_FLOAT' and
106+ 'C_FLOAT64' shall have the same values as 'C_FLOAT' and
106107 'C_DOUBLE', respectively (C2023 H.2.4.2).
107108
108109sp05. To the ISO_C_BINDING module, add the following integer named
0 commit comments