From: Richard M. Stallman Date: Sat, 25 Jun 2005 04:31:49 +0000 (+0000) Subject: (read1): 0.0e+NaN should make a "positive" NaN. X-Git-Tag: emacs-pretest-22.0.90~8654 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=7690cbb0f9d9f7bb56edd67c06a89f116dd4f80d;p=emacs.git (read1): 0.0e+NaN should make a "positive" NaN. --- diff --git a/src/lread.c b/src/lread.c index 9317933013e..ccc94c32dd1 100644 --- a/src/lread.c +++ b/src/lread.c @@ -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);