Raymond Toy wrote:
> >>>>> "Richard" == Richard Fateman <fateman@cs.berkeley.edu> writes:
>
> Richard> clearly a bug. I get it in my precompiled windows binary too.
> Richard> I also get it in the Allegro CL version. So it is in
> Richard> the Maxima source, not some glitch in GCL.
>
> Same problem with Clisp.
>
> Richard> It must be adding bigfloats wrong!
>
> After some poking around, I think the problem is in biglsh in
> src/float.lisp, which I don't really understand what it's trying to
> do.
>
> However, if I replace fpshift with the following function which
> doesn't call biglsh, the buggy results are gone. This seems to be the
> right thing to do since fpshift appears to be basically Lisp ash (for
> a binary radix).
>
> (DEFUN FPSHIFT (L N)
> (COND ((NULL *DECFP)
> (ash L N))
> ((GREATERP N 0.) (TIMES L (EXPT 10. N)))
> ((LESSP N 0.) (QUOTIENT L (EXPT 10. (MINUS N))))
> (T L)))
>
> I think biglsh is only called by fpshift, so we could probably delete
> biglsh completely.
>
> Ray
>
I commited this fix to Maxima CVS.
--
[ Vadim V. Zhytnikov <vvzhy@mail.ru> <vvzhy@td.lpi.ac.ru> ]