py/formatfloat: Don't print the negative sign of a NaN value.
NaN may have the sign bit set but it has no meaning, so don't print it out.
diff --git a/py/formatfloat.c b/py/formatfloat.c
index 35cd5d5..b61a958 100644
--- a/py/formatfloat.c
+++ b/py/formatfloat.c
@@ -30,6 +30,7 @@
#include <assert.h>
#include <stdlib.h>
#include <stdint.h>
+#include <math.h>
#include "py/formatfloat.h"
/***********************************************************************
@@ -82,7 +83,6 @@
#define FPROUND_TO_ONE 0.999999999995
#define FPDECEXP 256
#define FPMIN_BUF_SIZE 7 // +9e+199
-#include <math.h>
#define fp_signbit(x) signbit(x)
#define fp_isspecial(x) 1
#define fp_isnan(x) isnan(x)
@@ -122,7 +122,7 @@
}
return buf_size >= 2;
}
- if (fp_signbit(f)) {
+ if (fp_signbit(f) && !isnan(f)) {
*s++ = '-';
f = -f;
} else {
diff --git a/tests/float/complex1.py b/tests/float/complex1.py
index 8544105..479b4b3 100644
--- a/tests/float/complex1.py
+++ b/tests/float/complex1.py
@@ -59,6 +59,7 @@
# check printing of inf/nan
print(float('nan') * 1j)
+print(float('-nan') * 1j)
print(float('inf') * (1 + 1j))
print(float('-inf') * (1 + 1j))
diff --git a/tests/float/float1.py b/tests/float/float1.py
index 137dacc..c64f965 100644
--- a/tests/float/float1.py
+++ b/tests/float/float1.py
@@ -21,6 +21,7 @@
print(float("infinity"))
print(float("INFINITY"))
print(float("nan"))
+print(float("-nan"))
print(float("NaN"))
try:
float("")