Predicates on Numbers Numbers Random Numbers
These functions perform various arithmetic operations on numbers.
absonly for Emacs 18 versions which don't provide it as a primitive.)
exptonly for Emacs 18 versions which don't provide it as a primitive.)
floorfunction. It is called
floor*to avoid name conflicts with the simpler
floorfunction 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
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*y + r = x, with r
between 0 (inclusive) and r (exclusive). Also, note
(floor* x) is exactly equivalent to
(floor* x 1).
This function is entirely compatible with Common Lisp's
function, except that it returns the two results in a list since
Emacs Lisp does not support multiple-valued functions.
ceilingfunction, which is analogous to
floorexcept that it rounds the argument or quotient of the arguments up toward plus infinity. The remainder will be between 0 and minus r.
truncatefunction, which is analogous to
floorexcept 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.
roundfunction, which is analogous to
floorexcept 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.
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.