This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Print sign of NaN values


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



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]