From 93a618861e85a404a9ad7e4933dab566a55e1d5f Mon Sep 17 00:00:00 2001 From: Kito Cheng 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..4786ed6 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 = L'-'; 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 = L'-'; if (ch <= L'G') /* 'A', 'E', 'F', or 'G' */ cp = L"NAN"; else -- 2.7.4