[ https://issues.apache.org/jira/browse/STDCXX-463?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12509642 ]
Martin Sebor commented on STDCXX-463: ------------------------------------- Response from HP: -------- Original Message -------- Subject: Re: HP-UX 11.23 printf("%Lg", -NAN) formatted incorrectly Date: Thu, 28 Jun 2007 20:14:30 -0700 (PDT) From: Dennis Handly <[EMAIL PROTECTED]> To: [EMAIL PROTECTED], [EMAIL PROTECTED] >From: Martin Sebor <[EMAIL PROTECTED]> >On 11.23/PA, printf("%g") formats negative NaN correctly (by >prepending the minus) but with "%Lg" it forgets the sign. >On 11.31/IPF printf() works correctly. -std::numeric_limits<long double>::quiet_NaN() This works correctly on all IPF versions. Because the IPF libc has _U_Qfneg and PA doesn't. The PA compiler uses _U_Qfsub which doesn't produce negative NaNs. >Are there plans to backport the fix to prior versions of HP-UX and/or PA? Martin I seriously doubt it. libc would have to change and then all of the compilers. There were other CRs about negating NaNs: JAGaa73927 NaN signs not respected JAGaa86217 Incorrect printing of long double NaNs JAGaa91576 Signed NaNs aren't generated correctly (see JAGaa78419 for C equiv) JAGaa78419 NaN signs not respected (2) JAGad01217 incorrect display of -nan from printf in libc > [HP-UX 11.23] printf("%Lg", -NAN) formatted incorrectly > ------------------------------------------------------- > > Key: STDCXX-463 > URL: https://issues.apache.org/jira/browse/STDCXX-463 > Project: C++ Standard Library > Issue Type: Bug > Components: External > Environment: HP-UX 11.23 and prior > Reporter: Martin Sebor > > -------- Original Message -------- > Subject: HP-UX 11.23 printf("%Lg", -NAN) formatted incorrectly > Date: Thu, 28 Jun 2007 19:34:32 -0600 > From: Martin Sebor <[EMAIL PROTECTED]> > Organization: Rogue Wave Software > To: [EMAIL PROTECTED] > Hi, > On 11.23/PA, printf("%g") formats negative NaN correctly (by > prepending the minus) but with "%Lg" it forgets the sign. On > 11.31/IPF printf() works correctly. Are there plans to backport > the fix to prior versions of HP-UX and/or PA? > Thanks > Martin > $ cat t.cpp && aCC -AA t.cpp && ./a.out > #include <assert.h> > #include <stdio.h> > #include <string.h> > #include <limits> > int main () > { > char nan [32]; > char nnan [32]; > char lnan [32]; > char nlnan [32]; > sprintf (nan, "%g", std::numeric_limits<double>::quiet_NaN ()); > sprintf (nnan, "%g", -std::numeric_limits<double>::quiet_NaN ()); > sprintf (lnan, "%Lg", std::numeric_limits<long double>::quiet_NaN ()); > sprintf (nlnan, "%Lg", -std::numeric_limits<long double>::quiet_NaN ()); > printf ("%s, %s\n%s, %s\n", nan, nnan, lnan, nlnan); > assert (0 == strcmp (nan, lnan)); > assert (0 == strcmp (nnan, nlnan)); > } > nan, -nan > nan, nan > Assertion failed: 0 == strcmp (nnan, nlnan), file t.cpp, line 21 > ABORT instruction (core dumped) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.