(Integer Basics): Clarify radix explanation.

(Predicates on Numbers): Minor clarification.
(Comparison of Numbers): Minor clarification.  Clarify eql.
Typos in min, max.
(Math Functions): Clarify overflow in expt.
This commit is contained in:
Richard M. Stallman 2005-02-14 10:19:36 +00:00
parent e37d6e4c86
commit 4182ecfc37

View file

@ -73,14 +73,21 @@ initial sign and optional final period.
@cindex hex numbers
@cindex octal numbers
@cindex reading numbers in hex, octal, and binary
In addition, the Lisp reader recognizes a syntax for integers in
bases other than 10: @samp{#B@var{integer}} reads @var{integer} in
binary (radix 2), @samp{#O@var{integer}} reads @var{integer} in octal
(radix 8), @samp{#X@var{integer}} reads @var{integer} in hexadecimal
(radix 16), and @samp{#@var{radix}r@var{integer}} reads @var{integer}
in radix @var{radix} (where @var{radix} is between 2 and 36,
inclusively). Case is not significant for the letter after @samp{#}
(@samp{B}, @samp{O}, etc.) that denotes the radix.
The syntax for integers in bases other than 10 uses @samp{#}
followed by a letter that specifies the radix: @samp{b} for binary,
@samp{o} for octal, @samp{x} for hex, or @samp{@var{radix}r} to
specify radix @var{radix}. Case is not significant for the letter
that specifies the radix. Thus, @samp{#b@var{integer}} reads
@var{integer} in binary, and @samp{#@var{radix}r@var{integer}} reads
@var{integer} in radix @var{radix}. Allowed values of @var{radix} run
from 2 to 36. For example:
@example
#b101100 @result{} 44
#o54 @result{} 44
#x2c @result{} 44
#24r1k @result{} 44
@end example
To understand how various functions work on integers, especially the
bitwise operators (@pxref{Bitwise Operations}), it is often helpful to
@ -211,13 +218,12 @@ down to an integer.
@node Predicates on Numbers
@section Type Predicates for Numbers
The functions in this section test whether the argument is a number or
whether it is a certain sort of number. The functions @code{integerp}
and @code{floatp} can take any type of Lisp object as argument (the
predicates would not be of much use otherwise); but the @code{zerop}
predicate requires a number as its argument. See also
@code{integer-or-marker-p} and @code{number-or-marker-p}, in
@ref{Predicates on Markers}.
The functions in this section test for numbers, or for a specific
type of number. The functions @code{integerp} and @code{floatp} can
take any type of Lisp object as argument (they would not be of much
use otherwise), but the @code{zerop} predicate requires a number as
its argument. See also @code{integer-or-marker-p} and
@code{number-or-marker-p}, in @ref{Predicates on Markers}.
@defun floatp object
This predicate tests whether its argument is a floating point
@ -251,7 +257,7 @@ considered non-negative.
This predicate tests whether its argument is zero, and returns @code{t}
if so, @code{nil} otherwise. The argument must be a number.
These two forms are equivalent: @code{(zerop x)} @equiv{} @code{(= x 0)}.
@code{(zerop x)} is equivalent to @code{(= x 0)}.
@end defun
@node Comparison of Numbers
@ -275,10 +281,11 @@ numbers or markers. However, it is a good idea to use @code{=} if you
can, even for comparing integers, just in case we change the
representation of integers in a future Emacs version.
Sometimes it is useful to compare numbers with @code{equal}; it treats
two numbers as equal if they have the same data type (both integers, or
both floating point) and the same value. By contrast, @code{=} can
treat an integer and a floating point number as equal.
Sometimes it is useful to compare numbers with @code{equal}; it
treats two numbers as equal if they have the same data type (both
integers, or both floating point) and the same value. By contrast,
@code{=} can treat an integer and a floating point number as equal.
@xref{Equality Predicates}.
There is another wrinkle: because floating point arithmetic is not
exact, it is often a bad idea to check for equality of two floating
@ -309,10 +316,10 @@ returns @code{t} if so, @code{nil} otherwise.
@end defun
@defun eql value1 value2
This function compares two floating point numbers like @code{=}, and
compares two integers like @code{=}, and acts like @code{eq} in all
other cases. Thus, @code{(eql 1.0 1)} returns @code{nil}, but
@code{(eql 1.0 1.0)} and @code{(eql 1 1)} both return @code{t}.
This function acts like @code{eq} except when both arguments are
numbers. It compares numbers by type and numberic value, so that
@code{(eql 1.0 1)} returns @code{nil}, but @code{(eql 1.0 1.0)} and
@code{(eql 1 1)} both return @code{t}.
@end defun
@defun /= number-or-marker1 number-or-marker2
@ -345,7 +352,7 @@ otherwise.
@defun max number-or-marker &rest numbers-or-markers
This function returns the largest of its arguments.
If any of the argument is floating-point, the value is returned
If any of the arguments is floating-point, the value is returned
as floating point, even if it was given as an integer.
@example
@ -360,7 +367,7 @@ as floating point, even if it was given as an integer.
@defun min number-or-marker &rest numbers-or-markers
This function returns the smallest of its arguments.
If any of the argument is floating-point, the value is returned
If any of the arguments is floating-point, the value is returned
as floating point, even if it was given as an integer.
@example
@ -1147,8 +1154,7 @@ approximately.
@defun expt x y
This function returns @var{x} raised to power @var{y}. If both
arguments are integers and @var{y} is positive, the result is an
integer; in this case, it is truncated to fit the range of possible
integer values.
integer; in this case, overflow causes truncation, so watch out.
@end defun
@defun sqrt arg