This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
[PATCH] Print sign of NaN values
- From: Kito Cheng <kito dot cheng at gmail dot com>
- To: newlib at sourceware dot org
- Date: Sat, 3 Jun 2017 21:54:19 +0800
- Subject: [PATCH] Print sign of NaN values
- Authentication-results: sourceware.org; auth=none
This patch let -NaN can print the right sign like glibc do[1] :)
Ref:
[1] https://sourceware.org/git/?p=glibc.git;a=commit;h=003c9895a89e71767ad64bafac1ca99622be2eb7
From 30d2773c0e60a30c8b367f9c021d6e1fdf2a3abb Mon Sep 17 00:00:00 2001
From: Kito Cheng <kito.cheng@gmail.com>
Date: Sat, 3 Jun 2017 21:41:29 +0800
Subject: [PATCH] Print sign of NaN values.
---
newlib/libc/stdio/vfprintf.c | 4 ++++
newlib/libc/stdio/vfwprintf.c | 4 ++++
2 files changed, 8 insertions(+)
diff --git a/newlib/libc/stdio/vfprintf.c b/newlib/libc/stdio/vfprintf.c
index ed92bb2..3585423 100644
--- a/newlib/libc/stdio/vfprintf.c
+++ b/newlib/libc/stdio/vfprintf.c
@@ -1245,6 +1245,8 @@ reswitch: switch (ch) {
break;
}
if (isnan (_fpvalue)) {
+ if (signbit (_fpvalue))
+ sign = '-';
if (ch <= 'G') /* 'A', 'E', 'F', or 'G' */
cp = "NAN";
else
@@ -1276,6 +1278,8 @@ reswitch: switch (ch) {
break;
}
if (expt == 1) {
+ if (signbit (_fpvalue))
+ sign = '-';
if (ch <= 'G') /* 'A', 'E', 'F', or 'G' */
cp = "NAN";
else
diff --git a/newlib/libc/stdio/vfwprintf.c b/newlib/libc/stdio/vfwprintf.c
index f0179a0..106904c 100644
--- a/newlib/libc/stdio/vfwprintf.c
+++ b/newlib/libc/stdio/vfwprintf.c
@@ -970,6 +970,8 @@ reswitch: switch (ch) {
break;
}
if (isnan (_fpvalue)) {
+ if (signbit (_fpvalue))
+ sign = '-';
if (ch <= L'G') /* 'A', 'E', 'F', or 'G' */
cp = L"NAN";
else
@@ -1001,6 +1003,8 @@ reswitch: switch (ch) {
break;
}
if (expt == 1) {
+ if (signbit (_fpvalue))
+ sign = '-';
if (ch <= L'G') /* 'A', 'E', 'F', or 'G' */
cp = L"NAN";
else
--
2.7.4