Predicates on Numbers
Numbers
Random Numbers
These functions perform various arithmetic operations on numbers.
abs
only for Emacs 18 versions which don't provide
it as a primitive.)
expt
only for Emacs 18 versions which don't
provide it as a primitive.)
floor
function.
It is called floor*
to avoid name conflicts with the
simpler floor
function built-in to Emacs 19.
With one argument, floor*
returns a list of two numbers:
The argument rounded down (toward minus infinity) to an integer,
and the ``remainder'' which would have to be added back to the
first return value to yield the argument again. If the argument
is an integer x, the result is always the list (x 0)
.
If the argument is an Emacs 19 floating-point number, the first
result is a Lisp integer and the second is a Lisp float between
0 (inclusive) and 1 (exclusive).
With two arguments, floor*
divides number by
divisor, and returns the floor of the quotient and the
corresponding remainder as a list of two numbers. If
(floor* x y)
returns (q r)
,
then q*y + r = x
, with r
between 0 (inclusive) and r (exclusive). Also, note
that (floor* x)
is exactly equivalent to
(floor* x 1)
.
This function is entirely compatible with Common Lisp's floor
function, except that it returns the two results in a list since
Emacs Lisp does not support multiple-valued functions.
ceiling
function,
which is analogous to floor
except that it rounds the
argument or quotient of the arguments up toward plus infinity.
The remainder will be between 0 and minus r.
truncate
function,
which is analogous to floor
except that it rounds the
argument or quotient of the arguments toward zero. Thus it is
equivalent to floor*
if the argument or quotient is
positive, or to ceiling*
otherwise. The remainder has
the same sign as number.
round
function,
which is analogous to floor
except that it rounds the
argument or quotient of the arguments to the nearest integer.
In the case of a tie (the argument or quotient is exactly
halfway between two integers), it rounds to the even integer.
floor
.
truncate
.
These definitions are compatible with those in the Quiroz
`cl.el
' package, except that this package appends `*
'
to certain function names to avoid conflicts with existing
Emacs 19 functions, and that the mechanism for returning
multiple values is different.