]> git.eshelyaron.com Git - emacs.git/commitdiff
(float_to_string): Handle infinities and NaN specially.
authorRichard M. Stallman <rms@gnu.org>
Mon, 2 Feb 1998 01:09:35 +0000 (01:09 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 2 Feb 1998 01:09:35 +0000 (01:09 +0000)
src/print.c

index a9c83ea821d1ed9d8e911df4deb4a14b159801b8..e3fbc393fea6e3c27aa543b3bb9a2903bc68071e 100644 (file)
@@ -956,6 +956,26 @@ float_to_string (buf, data)
   unsigned char *cp;
   int width;
       
+  /* Check for plus infinity in a way that won't lose
+     if there is no plus infinity.  */
+  if (data == data / 2 && data > 1.0)
+    {
+      strcpy (buf, "1.0e+INF");
+      return;
+    }
+  /* Likewise for minus infinity.  */
+  if (data == data / 2 && data < -1.0)
+    {
+      strcpy (buf, "-1.0e+INF");
+      return;
+    }
+  /* Check for NaN in a way that won't fail if there are no NaNs.  */
+  if (! (data * 0.0 >= 0.0))
+    {
+      strcpy (buf, "0.0e+NaN");
+      return;
+    }
+
   if (NILP (Vfloat_output_format)
       || !STRINGP (Vfloat_output_format))
   lose: