Commit 32d4834c authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

(Float Basics): Explain how to test for NaN, and printing the sign of NaNs.

parent 19cfc561
......@@ -183,21 +183,26 @@ there is no correct answer. For example, @code{(/ 0.0 0.0)} returns a
NaN. For practical purposes, there's no significant difference between
different NaN values in Emacs Lisp, and there's no rule for precisely
which NaN value should be used in a particular case, so Emacs Lisp
doesn't try to distinguish them. Here are the read syntaxes for
these special floating point values:
doesn't try to distinguish them (but it does report the sign, if you
print it). Here are the read syntaxes for these special floating
point values:
@table @asis
@item positive infinity
@samp{1.0e+INF}
@item negative infinity
@samp{-1.0e+INF}
@item Not-a-number
@samp{0.0e+NaN}.
@item Not-a-number
@samp{0.0e+NaN} or @samp{-0.0e+NaN}.
@end table
In addition, the value @code{-0.0} is distinguishable from ordinary
zero in @acronym{IEEE} floating point (although @code{equal} and
@code{=} consider them equal values).
To test whether a floating point value is a NaN, compare it with
itself using @code{=}. That returns @code{nil} for a NaN, and
@code{t} for any other floating point value.
The value @code{-0.0} is distinguishable from ordinary zero in
@acronym{IEEE} floating point, but Emacs Lisp @code{equal} and
@code{=} consider them equal values.
You can use @code{logb} to extract the binary exponent of a floating
point number (or estimate the logarithm of an integer):
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment