 Casio FX-115MS bug - Printable Version +- HP Forums (https://www.hpmuseum.org/forum) +-- Forum: Not HP Calculators (/forum-7.html) +--- Forum: Not remotely HP Calculators (/forum-9.html) +--- Thread: Casio FX-115MS bug (/thread-11704.html) Casio FX-115MS bug - Albert Chan - 10-31-2018 07:02 PM Tried solving a cubic using Casio FX-115MS: 1295/24 X³ - 1295/12 X² - 37/2 X + 0.248048 = 0 The calculator just crashed, with weird blinking random pixels ... Same cubic, but scaled, avoided the crash: f(X) = 1295 X³ - 2590 X² - 444 X + 5.953152 = 0 --> 3 roots = 2.157897584, -0.170399539, 0.012501955 Update: for accurate cubic roots, see my Kahan cubic solver post RE: Casio FX-115MS bug - klesl - 11-01-2018 11:14 AM Post this problem on forum dedicated to casio https://community.casiocalc.org RE: Casio FX-115MS bug - ijabbott - 11-01-2018 08:16 PM (10-31-2018 07:02 PM)Albert Chan Wrote:  Tried solving a cubic using Casio FX-115MS: 1295/24 X³ - 1295/12 X² - 37/2 X + 0.248048 = 0 The calculator just crashed, with weird blinking random pixels ... I got the same thing the first time I tried it. For the second time I tried it, it just blanked the screen for a couple of seconds, gave up, and went back to displaying the "a?" prompt! RE: Casio FX-115MS bug - G. Cook - 11-02-2018 09:14 PM Interestingly, On a Casio FX-115ES Plus, the correct roots are obtained whether the coefficients are scaled or not RE: Casio FX-115MS bug - Albert Chan - 11-03-2018 02:41 PM The bug only shows if coefficient(s) were entered as an expression. It were the excess precision internal digits that tripped the solver. My guess is the algorithm assumed user entered a,b,c,d as numbers. Even if user entered more digits than calculator can handle, it only keep (truncated) 10 sig. digits. Example: 123.456789999 [=] [Ans] - 123, we only get back 0.4567899 RE: Casio FX-115MS bug - Albert Chan - 11-05-2018 08:58 PM Crashing Casio FX-115MS with only a 7 X³/7 + X²/7 - 7X + 7 = 0 Also can crash with other number instead of 7: 12, 13, 17, 18, 19, 21, 22 ... RE: Casio FX-115MS bug - Albert Chan - 11-07-2018 08:15 PM Even if no crashing, the results are not very good. if X = 100, X³ + X = 1000100 Solve X³ + X - 1000100 = 0 for X, should get back 100 Cubic solver gives back 100.0033332 ? I thought maybe it is due to rounding errors, trying to deflate cubic to quadratic. But, no. X = 100 is the only real root, the rest are complex: 50 ± √(7501) i The equation were *already* a depressed cubic, with r = 1/3, s = -1000100/2 From Thomas Klemm cubic formula thread, using the same calculator (to be fair): X = -2 √(r) sinh(1/3 * asinh(s/r^1.5)) = 100 Do this another way, with X = u - r/u, where u³ = -(s + sign(s) √(s² + r³)) With r this small, and s negative, u³ ~ -2s = 1000100 u ~ 100.0033332 X = u - r/u = 100 Edit: if discriminant s² + r³ < 0, X = u - r/u imaginary part cancelled out: θ = acos(-s/(-r)^1.5) / 3 k = 2√(-r) X = k*cos(θ), k*cos(θ + 120°), k*cos(θ + 240°), all real roots RE: Casio FX-115MS bug - klesl - 11-07-2018 08:33 PM I have 2 questions 1. Why do you expect the exact result? Generally the solving doesn't provide the exact result. 2. Why the result 100.0033332 isn't good? The difference is 0,003 (0,003%) only, according to me it is perfect result. Generally the deviation 3 - 5 % is a good results. At least for engineers. RE: Casio FX-115MS bug - Albert Chan - 11-07-2018 10:47 PM Hi, klesl I don't expect exact result. But the result seems not due to rounding errors. Relative errors of 0.003% is not the upper bound. Try this: X³ + 11 X - 1000100 = 0 Cubic Solver still returned real root of 100.0033332 For above cubic, u is still about 100.0033332, but r is now 11/3 X = u - r/u = 99.96666778, so Solver result only have 3 good digits. If it is a generalized solver, maybe 3 or 4 good digits is enough. But, this is a specialized Cubic Solver, with known formula for it. Even worse case may be possible (example, by adding X² term) Update: Let Y = X - 100, hoping for better luck: Y³ + 300 Y² + 30011 Y + 1000 = 0 Expecting Y correction of -0.03333222. Instead, I got +0.003333223 Cubic Solver get the sign wrong ! (Relative error of 110% !) RE: Casio FX-115MS bug - Albert Chan - 11-08-2018 02:51 PM Solving roots reciprocal, with coefficients in reversed order : X³ + 11 X - 1000100 = 0 Let x = 100/X, above turns to -1.0001 x³ + 0.0011 x² + 1 = 0 Cubic Solver get x = 1.000333299, X = 100/x = 99.96668121 Doing the same for Y=X-100, y=1/Y, solved X is even better: Y³ + 300 Y² + 30011 Y + 1000 = 0 => 1000 y³ + 30011 y² + 300 y + 1 = 0 Cubic Solver get y = -30.00100144, X = 100 + 1/y = 99.96666778 Of course, since Y ~ 0, we could just iterate Y = (Y³ + 300 Y² + 1000) ÷ -30011 We have Y = 0 -> -0.033321115 -> -0.033332213 -> -0.03333222 (converged) X = 100 + Y = 99.96666778 RE: Casio FX-115MS bug - Albert Chan - 11-08-2018 04:17 PM (11-07-2018 08:15 PM)Albert Chan Wrote:  The equation were *already* a depressed cubic, with r = 1/3, s = -1000100/2 ... Do this another way, with X = u - r/u, where u³ = -(s + sign(s) √(s² + r³)) With r this small, and s negative, u³ ~ -2s = 1000100 u ~ 100.0033332 X = u - r/u = 100 I think I figured out the reason for loss of precision. Instead of using above formula, it uses this: X³ + (3r)X + (2s) = 0 X = ³√(-s + √(s² + r³)) + ³√(-s - √(s² + r³)) Above example, subtraction cancellation dropped the last term, we get X ~ u + 0 = u Comment on previous posts: Post #9: Y = X-100 had no effect, because Cubic Solver revert it back to depressed cubic. Post #10: root reciprocal suffer less rounding errors because dropped term are smaller. x = 0.00036663 (shift to depress cubic) + 0.9999666689 + 0.0000001344 (dropped) = 1.000333299 RE: Casio FX-115MS bug - Albert Chan - 11-24-2018 07:25 PM Solving cubic with hyperbolic sine formula, discovered Casio FX-115MS asinh bug (asinh bug also hit my Casio FX-3650P ...) Solve X³ + 11 X - 1000100 = 0 for X, using formula X = -2 √(r) sinh(1/3 * asinh(s/r^1.5)) asinh(s/r^1.5)) = asinh(-500050/(11/3)^1.5) = asinh(-71220.70789) = -11.86817286 ??? Even my pocket Casio FX-260Solar get this right, asinh(-71220.70789) = -11.86668608 My guess the problem is the Quadratic Solver subtraction cancellation. Solving sinh(x) = (exp(x) - 1/exp(x))/2 = -71220.70789, solver gives exp(x) = 7.01e-6 x = ln(7.01e-6) = -11.86817286 (same as the produced bug) As a temporary fix, force asinh to use big root: asinh(x) = ln(√(x²+1) + x) = - ln(√(x²+1) - x) = - asinh(-x) asinh(x) = sign(x) * asinh(|x|) asinh(-71220.70789) = -1 * asinh(+71220.70789) = -11.86668608 RE: Casio FX-115MS bug - ijabbott - 11-24-2018 08:28 PM (11-24-2018 07:25 PM)Albert Chan Wrote:  Solving cubic with hyperbolic sine formula, discovered Casio FX-115MS asinh bug (asinh bug also hit my Casio FX-3650P ...) Solve X³ + 11 X - 1000100 = 0 for X, using formula X = -2 √(r) sinh(1/3 * asinh(s/r^1.5)) asinh(s/r^1.5)) = asinh(-500050/(11/3)^1.5) = asinh(-71220.70789) = -11.86817286 ??? Even my pocket Casio FX-260Solar get this right, asinh(-71220.70789) = -11.86668608 Even the TI-35X and TI-36X SOLAR manage to get this one correct, although this parameter is too large to be affected by the Texas Instruments Logarithm Bug. (They are nice calculators, especially the versions with the rubber keys, but it's a shame about this bug.) RE: Casio FX-115MS bug - brickviking - 11-28-2018 01:01 AM Both my 9750G+ and GII gets it "right", but the two FX-82s (TL/MS) don't. Interestingly, the Canon F-804P gets it right. I'm puzzled as to why the two calculators dating to 2000-ish are getting it wrong. (Post 319)