prf.c: properly format INF/NAN/zero with prefix

The space or plus prefix must appear when requested even with INF and
NAN. And no zero-padding in that case.

Also, 0.0 and -0.0  are distinct values. It is necessary to display
the minus sign with a negative zero.

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
This commit is contained in:
Nicolas Pitre 2019-06-19 20:57:15 -04:00 committed by Anas Nashif
commit 53169743d2
2 changed files with 19 additions and 16 deletions

View file

@ -121,6 +121,10 @@ void test_sprintf_double(void)
zassert_true((strcmp(buffer, "-INF") == 0),
"sprintf(-INF) - incorrect output '%s'\n", buffer);
sprintf(buffer, "%010f", var.d);
zassert_true((strcmp(buffer, " -inf") == 0),
"sprintf( +inf) - incorrect output '%s'\n", buffer);
var.u1 = 0x00000000;
var.u2 = 0x7ff80000; /* Bit pattern for NaN (double) */
sprintf(buffer, "%e", var.d);
@ -147,6 +151,10 @@ void test_sprintf_double(void)
zassert_true((strcmp(buffer, "NAN") == 0),
"sprintf(NAN) - incorrect output '%s'\n", buffer);
sprintf(buffer, "%+8.5e", var.d);
zassert_true((strcmp(buffer, " +nan") == 0),
"sprintf( +nan) - incorrect output '%s'\n", buffer);
var.u1 = 0x00000000;
var.u2 = 0xfff80000; /* Bit pattern for -NaN (double) */
sprintf(buffer, "%e", var.d);