Submitter:Fred Tydeman (tydeman@tybor.com)
Author:CFP group
Submission Date: 2022-05-11
Document: WG14 N2981
Title: N2981: Make *_HAS_SUBNORM be obsolescent
Reference Documents: C N2797
(http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2797.htm); C++
(https://wg21.link/p2569r0)
Summary: Make the *_HAS_SUBNORM macros in <float.h> be an obsolescent feature.
Discussion
When the red part of paper N2797 was discussed at
the November 2021 meeting (section 5.43 of minutes N2921), the
committee did not take a vote. Instead, they asked the author to
liaise with C++ (this paper is the result of that liaise). In
addition, the sense of the committee was removing without first
making them obsolescent/deprecated was a bad thing to do. There
was some voice to add a runtime query function. There was some
voice to further specify these macros.
When the green part of paper N2797 was discussed at the February 2022 meeting (section 5.8.1 in minutes N2941), the committee voted to accept.
The feedback from the SG6 (the C++ numerics sub-group) via the liaison group is:
"The header <cfloat> defines all macros the same as the C standard library header <float.h>."
There are several ways subnormals are "supported" in the field:
Proposal
Add to the end of 5.2.4.2.2, paragraph 14 as indicated:
The presence or absence of subnormal numbers is characterized by the implementation-defined values of FLT_HAS_SUBNORM, DBL_HAS_SUBNORM, and LDBL_HAS_SUBNORM:
-1 indeterminable 27)
0 absent (type does not support subnormal numbers)28)
1 present (type does support subnormal numbers)
The use of FLT_HAS_SUBNORM, DBL_HAS_SUBNORM, and LDBL_HAS_SUBNORM macros is an obsolescent feature.
Alter two footnotes attached to that paragraph as indicated:
27) Characterization as indeterminable is intended if floating-point operations do not consistently interpret subnormal representations (operands and/or results) as zero, nor as nonzero.
28) Characterization as absent is intended ifnoall floating-point operationsproduce subnormal results from non-subnormal inputs, even if the type format includes representations of subnormal numberstreat subnormal operands and results as zero.
Add to 7.32.5 Characteristics of floating types <float.h> a new paragraph: The use of FLT_HAS_SUBNORM, DBL_HAS_SUBNORM, and LDBL_HAS_SUBNORM macros is an obsolescent feature.
Straw poll