changeset 20816:6397d7a97277

(float_to_string): Handle infinities and NaN specially.
author Richard M. Stallman <rms@gnu.org>
date Mon, 02 Feb 1998 01:09:35 +0000
parents d5ae7491d2b0
children 297fefd12ecf
files src/print.c
diffstat 1 files changed, 20 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/print.c	Mon Feb 02 01:08:52 1998 +0000
+++ b/src/print.c	Mon Feb 02 01:09:35 1998 +0000
@@ -956,6 +956,26 @@
   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: