public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/114862] New: std::uppercase not applying to nan's and inf's
@ 2024-04-26 7:43 lcarreon at bigpond dot net.au
2024-04-26 8:47 ` [Bug libstdc++/114862] " redi at gcc dot gnu.org
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: lcarreon at bigpond dot net.au @ 2024-04-26 7:43 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114862
Bug ID: 114862
Summary: std::uppercase not applying to nan's and inf's
Product: gcc
Version: 13.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: lcarreon at bigpond dot net.au
Target Milestone: ---
The following code:
#include <limits>
#include <iostream>
#include <iomanip>
int main()
{
double values[] =
{
std::numeric_limits<double>::quiet_NaN(),
-std::numeric_limits<double>::quiet_NaN(),
std::numeric_limits<double>::signaling_NaN(),
-std::numeric_limits<double>::signaling_NaN(),
std::numeric_limits<double>::infinity(),
-std::numeric_limits<double>::infinity()
};
for (const auto& value : values)
{
std::cout
<< std::uppercase
<< std::fixed << std::setw(17) << std::left << value
<< " "
<< std::fixed << std::setw(10) << std::left << std::setprecision(0) <<
value
<< " "
<< std::fixed << std::setw(15) << std::left << std::setprecision(4) <<
value
<< " "
<< std::fixed << std::setw(17) << std::left << std::setprecision(6) <<
value
<< std::endl;
}
return 0;
}
Generates the following output:
nan nan nan nan
-nan -nan -nan -nan
nan nan nan nan
-nan -nan -nan -nan
inf inf inf inf
-inf -inf -inf -inf
Which in my opinion is incorrect because it is not applying std::uppercase.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug libstdc++/114862] std::uppercase not applying to nan's and inf's
2024-04-26 7:43 [Bug libstdc++/114862] New: std::uppercase not applying to nan's and inf's lcarreon at bigpond dot net.au
@ 2024-04-26 8:47 ` redi at gcc dot gnu.org
2024-04-26 9:02 ` redi at gcc dot gnu.org
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: redi at gcc dot gnu.org @ 2024-04-26 8:47 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114862
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Last reconfirmed| |2024-04-26
Status|UNCONFIRMED |NEW
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug libstdc++/114862] std::uppercase not applying to nan's and inf's
2024-04-26 7:43 [Bug libstdc++/114862] New: std::uppercase not applying to nan's and inf's lcarreon at bigpond dot net.au
2024-04-26 8:47 ` [Bug libstdc++/114862] " redi at gcc dot gnu.org
@ 2024-04-26 9:02 ` redi at gcc dot gnu.org
2024-04-26 11:48 ` redi at gcc dot gnu.org
2024-04-30 22:02 ` redi at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: redi at gcc dot gnu.org @ 2024-04-26 9:02 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114862
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Actually I think we're doing exactly what the standard requires:
ios_base::fmtflags __fltfield = __flags & ios_base::floatfield;
...
// [22.2.2.2.2] Table 58
if (__fltfield == ios_base::fixed)
*__fptr++ = 'f';
when (flags & ios_base::floatfield) == ios_base::fixed the conversion specifier
is %f and uppercase is not considered. There is no way to use a conversion
specifier of %F with std::num_put. That seems odd, but it's what the standard
says.
Libc++ does what you expect, which seems to be non-conforming.
I don't see any library issues about this, so I'll talk to the committee.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug libstdc++/114862] std::uppercase not applying to nan's and inf's
2024-04-26 7:43 [Bug libstdc++/114862] New: std::uppercase not applying to nan's and inf's lcarreon at bigpond dot net.au
2024-04-26 8:47 ` [Bug libstdc++/114862] " redi at gcc dot gnu.org
2024-04-26 9:02 ` redi at gcc dot gnu.org
@ 2024-04-26 11:48 ` redi at gcc dot gnu.org
2024-04-30 22:02 ` redi at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: redi at gcc dot gnu.org @ 2024-04-26 11:48 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114862
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Libc++ has tests for "INF" (although only for long double, not float or
double), so it's apparently not accidental. The relevant code is:
if (floatfield == ios_base::fixed) {
if (uppercase)
*__fmtp = 'F';
else
*__fmtp = 'f';
That's been there since the initial commit in 2010.
MSVC behaves the same as libstdc++.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug libstdc++/114862] std::uppercase not applying to nan's and inf's
2024-04-26 7:43 [Bug libstdc++/114862] New: std::uppercase not applying to nan's and inf's lcarreon at bigpond dot net.au
` (2 preceding siblings ...)
2024-04-26 11:48 ` redi at gcc dot gnu.org
@ 2024-04-30 22:02 ` redi at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: redi at gcc dot gnu.org @ 2024-04-30 22:02 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114862
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I've opened https://cplusplus.github.io/LWG/issue4084
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-04-30 22:02 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-26 7:43 [Bug libstdc++/114862] New: std::uppercase not applying to nan's and inf's lcarreon at bigpond dot net.au
2024-04-26 8:47 ` [Bug libstdc++/114862] " redi at gcc dot gnu.org
2024-04-26 9:02 ` redi at gcc dot gnu.org
2024-04-26 11:48 ` redi at gcc dot gnu.org
2024-04-30 22:02 ` redi at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).