[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#64441: 29.0.92; elisp arithmetic error at ielm prompt
From: |
Stephen Berman |
Subject: |
bug#64441: 29.0.92; elisp arithmetic error at ielm prompt |
Date: |
Mon, 03 Jul 2023 18:50:58 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
On Mon, 3 Jul 2023 16:20:34 GMT Van Ly via "Bug reports for GNU Emacs, the
Swiss army knife of text editors" <bug-gnu-emacs@gnu.org> wrote:
> Hello,
>
> The following calculation errors in elisp.
>
> ELISP> (/ (* (/ 3 4) (/ 7 13)) (/ 5 12))
> *** Eval error *** Arithmetic error
>
> The SBCL repl doesn't.
>
> CL-USER> (/ (* (/ 3 4) (/ 7 13)) (/ 5 12))
> 63/65 (0.9692308, 1260/13%)
>
> Steps to reproduce the error.
>
> 1. start using, 'emacs -Q'
> 2. get to the ielm elisp prompt, 'M-x ielm'
> 3. enter the above calculation
`/' in Elisp is different from `/' in Common Lisp.
(elisp) Arithmetic Operations:
If all the arguments are integers, the result is an integer,
obtained by rounding the quotient towards zero after each division.
Hence (/ 3 4), (/ 7 13) and (/ 5 12) all evaluate to 0, and "If you
divide an integer by the integer 0, Emacs signals an ‘arith-error’
error".
But in Common Lisp
(http://www.lispworks.com/documentation/HyperSpec/Body/f_sl.htm):
If each argument is either an integer or a ratio, and the result is
not an integer, then it is a ratio.
Hence (/ 3 4) => 3/4, (/ 7 13) => 7/13 and (/ 5 12) => 5/12
Steve Berman