Skip to content

Commit 7e0da96

Browse files
kc9judbonachea
andcommitted
fp-interop: Update with comments from HPC subgroup
Co-authored-by: Dan Bonachea <dobonachea@lbl.gov>
1 parent 8ca1398 commit 7e0da96

File tree

1 file changed

+21
-20
lines changed

1 file changed

+21
-20
lines changed

proposals/fp_interop/25-189r1.txt

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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

1719
1 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+
3143
2 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

4950
rq03. 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

108109
sp05. To the ISO_C_BINDING module, add the following integer named

0 commit comments

Comments
 (0)