[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## Re: (expt 2 (log 0)) hangs

**From**: |
Marius Vollmer |

**Subject**: |
Re: (expt 2 (log 0)) hangs |

**Date**: |
Tue, 07 Sep 2004 12:59:13 +0200 |

**User-agent**: |
Gnus/5.1003 (Gnus v5.10.3) Emacs/21.3 (gnu/linux) |

Kevin Ryde <address@hidden> writes:
>* Thanks. I fixed integer-expt to reject an exponent +/-inf.*
Hmm, we could only allow exact integers. That would reject +/-inf as
well. Right now, we have
(exact? (integer-expt 2 2.0))
=> #t
which seems wrong.
>* It got there because (integer? -inf.0) => #t, which seems pretty*
>* wrong to me, so I changed that to #f. That expt now goes to pow(),*
>* giving 0.*
Making the infinities integers was done on purpose, to follow the lead
of PLT Scheme. After all
floor (inf) == inf && ceil (inf) == inf
It would not be good to be gratuitously incompatible with PLT Scheme
here.
I propose to have integer-expt reject all inexact integers and change
expt so that it does not use it for inexact numbers.
That way, we can correctly compute things like
(expt 2 -inf.0)
=> 0.0
(expt 0.5 -inf.0)
=> +inf.0
[ Also, integer-expt now also works with negative exponents, but the
docstring doesn't state this and expt could be simplyfied by
exploiting it.
]
Opinions?