]> git.eshelyaron.com Git - emacs.git/commitdiff
(read1): 0.0e+NaN should make a "positive" NaN.
authorRichard M. Stallman <rms@gnu.org>
Sat, 25 Jun 2005 04:31:49 +0000 (04:31 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sat, 25 Jun 2005 04:31:49 +0000 (04:31 +0000)
src/lread.c

index 9317933013ee54ad52aaea25fd6dbd33e6b93c50..ccc94c32dd15e85c1e004e1b673d6101356ead34 100644 (file)
@@ -2595,6 +2595,23 @@ read1 (readcharfun, pch, first_in_list)
                    break;
                  case 'N':
                    value = zero / zero;
+
+                   /* If that made a "negative" NaN, negate it.  */
+
+                   {
+                     int i;
+                     union { double d; char c[sizeof (double)]; } u_data, u_minus_zero;
+
+                     u_data.d = value;
+                     u_minus_zero.d = - 0.0;
+                     for (i = 0; i < sizeof (double); i++)
+                       if (u_data.c[i] & u_minus_zero.c[i])
+                         {
+                           value = - value;
+                           break;
+                         }
+                   }
+                   /* Now VALUE is a positive NaN.  */
                    break;
                  default:
                    value = atof (read_buffer + negative);