\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k
\begin{array}{l}
\mathbf{if}\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i \le -1.591976256934889034187455180953636735584 \cdot 10^{302} \lor \neg \left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i \le 2.618961756211518564383950228017988163092 \cdot 10^{294}\right):\\
\;\;\;\;\mathsf{fma}\left(\left(\left(z \cdot t\right) \cdot y\right) \cdot x, 18, \mathsf{fma}\left(c, b, -\mathsf{fma}\left(4, \mathsf{fma}\left(t, a, x \cdot i\right), \left(j \cdot 27\right) \cdot k\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r456439 = x;
double r456440 = 18.0;
double r456441 = r456439 * r456440;
double r456442 = y;
double r456443 = r456441 * r456442;
double r456444 = z;
double r456445 = r456443 * r456444;
double r456446 = t;
double r456447 = r456445 * r456446;
double r456448 = a;
double r456449 = 4.0;
double r456450 = r456448 * r456449;
double r456451 = r456450 * r456446;
double r456452 = r456447 - r456451;
double r456453 = b;
double r456454 = c;
double r456455 = r456453 * r456454;
double r456456 = r456452 + r456455;
double r456457 = r456439 * r456449;
double r456458 = i;
double r456459 = r456457 * r456458;
double r456460 = r456456 - r456459;
double r456461 = j;
double r456462 = 27.0;
double r456463 = r456461 * r456462;
double r456464 = k;
double r456465 = r456463 * r456464;
double r456466 = r456460 - r456465;
return r456466;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r456467 = x;
double r456468 = 18.0;
double r456469 = r456467 * r456468;
double r456470 = y;
double r456471 = r456469 * r456470;
double r456472 = z;
double r456473 = r456471 * r456472;
double r456474 = t;
double r456475 = r456473 * r456474;
double r456476 = a;
double r456477 = 4.0;
double r456478 = r456476 * r456477;
double r456479 = r456478 * r456474;
double r456480 = r456475 - r456479;
double r456481 = b;
double r456482 = c;
double r456483 = r456481 * r456482;
double r456484 = r456480 + r456483;
double r456485 = r456467 * r456477;
double r456486 = i;
double r456487 = r456485 * r456486;
double r456488 = r456484 - r456487;
double r456489 = -1.591976256934889e+302;
bool r456490 = r456488 <= r456489;
double r456491 = 2.6189617562115186e+294;
bool r456492 = r456488 <= r456491;
double r456493 = !r456492;
bool r456494 = r456490 || r456493;
double r456495 = r456472 * r456474;
double r456496 = r456495 * r456470;
double r456497 = r456496 * r456467;
double r456498 = r456467 * r456486;
double r456499 = fma(r456474, r456476, r456498);
double r456500 = j;
double r456501 = 27.0;
double r456502 = r456500 * r456501;
double r456503 = k;
double r456504 = r456502 * r456503;
double r456505 = fma(r456477, r456499, r456504);
double r456506 = -r456505;
double r456507 = fma(r456482, r456481, r456506);
double r456508 = fma(r456497, r456468, r456507);
double r456509 = r456488 - r456504;
double r456510 = r456494 ? r456508 : r456509;
return r456510;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b




Bits error versus c




Bits error versus i




Bits error versus j




Bits error versus k
| Original | 5.8 |
|---|---|
| Target | 1.6 |
| Herbie | 1.0 |
if (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < -1.591976256934889e+302 or 2.6189617562115186e+294 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) Initial program 49.0
Simplified13.5
rmApplied associate-*r*7.4
rmApplied associate-*l*16.5
Simplified16.5
rmApplied associate-*r*6.0
Simplified6.0
if -1.591976256934889e+302 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < 2.6189617562115186e+294Initial program 0.3
Final simplification1.0
herbie shell --seed 2019325 +o rules:numerics
(FPCore (x y z t a b c i j k)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, E"
:precision binary64
:herbie-target
(if (< t -1.6210815397541398e-69) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b))) (if (< t 165.68027943805222) (+ (- (* (* 18 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4)) (- (* c b) (* 27 (* k j)))) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b)))))
(- (- (+ (- (* (* (* (* x 18) y) z) t) (* (* a 4) t)) (* b c)) (* (* x 4) i)) (* (* j 27) k)))