You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It seems that the computation of the discriminant for quadratic equations uses the textbook formula $\Delta=b^2-4ac$ (source), which is flawed for some inputs. As a consequence, some equations are not solved correctly. Case in point:
$x^2 + (1+2^{-52})x + (0.25+2^{-53}) = 0$
All parameters are representable with double precision floating-point numbers. The solutions are also perfectly representable: $x_1=-\frac{1}{2}$ and $x_2=-\frac{1+2^{-51}}{2}$.
However, Numworks gets both the number of solutions and the solution wrong as it claims that there is only one solution equal to $\frac{4503599627370497}{9007199254740992}=-\frac{1+2^{-52}}{2}$.
Screenshots
To Reproduce
Steps to reproduce the behavior:
Go to the 'Equations' app
Type the equation above
Solve
Expected behavior
The quadratic solver should use a better algorithm to compute the discriminant so as to avoid returning the wrong number of solutions whenever possible. The state of the art is nicely summarized, albeit without references, in the blog post by Panchekha about the implementation of quadratic-solutions in the racket programming language.
Environment
Epsilon version (Settings > About > Software version): 20.4.0
The platform(s) on which the problem happens: online simulator, actual device, etc...
Simulator. Should be the same problem on the actual device.
The text was updated successfully, but these errors were encountered:
Also, this is not a matter of discriminant computation only. Try $x^2+2^{27}x+\frac{3}{4}=0$. It should have the solutions -134217728 and -5.587935447692871e-9. There is a catastrophic cancellation in computing the second solution with the naive formula, and the Numworks calculator computes the value $\approx$-7.45e-9. The algorithm should use the modified Fagnano's formulas to compute the solutions.
Describe the bug
It seems that the computation of the discriminant for quadratic equations uses the textbook formula$\Delta=b^2-4ac$ (source), which is flawed for some inputs. As a consequence, some equations are not solved correctly. Case in point:
All parameters are representable with double precision floating-point numbers. The solutions are also perfectly representable:$x_1=-\frac{1}{2}$ and $x_2=-\frac{1+2^{-51}}{2}$ .
However, Numworks gets both the number of solutions and the solution wrong as it claims that there is only one solution equal to$\frac{4503599627370497}{9007199254740992}=-\frac{1+2^{-52}}{2}$ .
Screenshots
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The quadratic solver should use a better algorithm to compute the discriminant so as to avoid returning the wrong number of solutions whenever possible. The state of the art is nicely summarized, albeit without references, in the blog post by Panchekha about the implementation of
quadratic-solutions
in the racket programming language.Environment
Simulator. Should be the same problem on the actual device.
The text was updated successfully, but these errors were encountered: