From: Robert D. <rob...@gm...> - 2014-08-30 21:28:52
|
On 2014-08-30, couraud <l.c...@gm...> wrote: > solve(eq, r6); > > 1 Enter bfloat [0.0 + 1..#INF00e+000E+2678440] > > 2 Enter bfloat [0.0] > > 2 Exit bfloat 0.0b0 > > 2 Enter bfloat [1..#INF00e+000E+69] > > bfloat: attempted conversion of floating-point infinity. I think what's going on here is that Maxima is attempting to determine the sign of some constant expression (involving ratios of enormous integers), and tries to compute a floating point approximation. I think there is some provision in the code for failure to compute a float, and then it goes to a bigfloat approximation. That scheme works OK for Lisp implementations (Clisp, SBCL, Clozure CL) which can't compute floating point infinity by default, but it fails for those which do (GCL, ECL) -- after computing floating point infinity, Maxima tries to convert it to bigfloat (I don't know what's the purpose of that) and fails. The code of interest is in SIGN1 (src/compar.lisp) at lines 1243--1259. I guess one way to fix it is to account for non-finite floats. Can someone fix it? best Robert Dodier |