\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}\;t \le -2.556070220324067637922052949506160381905 \cdot 10^{-307}:\\
\;\;\;\;\left(b \cdot c - \left(4 \cdot \left(i \cdot x\right) + \left(j \cdot 27\right) \cdot k\right)\right) + t \cdot \left(\left(x \cdot \left(z \cdot 18\right)\right) \cdot y - a \cdot 4\right)\\
\mathbf{elif}\;t \le 4.461860870917308238894980463712832079364 \cdot 10^{-94}:\\
\;\;\;\;\left(\left(\left(\left(\left(18 \cdot x\right) \cdot y\right) \cdot \left(t \cdot z\right) - t \cdot \left(a \cdot 4\right)\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(k \cdot 27\right) \cdot j\\
\mathbf{else}:\\
\;\;\;\;\left(b \cdot c - \left(4 \cdot \left(i \cdot x\right) + \left(j \cdot 27\right) \cdot k\right)\right) + t \cdot \left(\left(x \cdot \left(z \cdot 18\right)\right) \cdot y - a \cdot 4\right)\\
\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 r40228518 = x;
double r40228519 = 18.0;
double r40228520 = r40228518 * r40228519;
double r40228521 = y;
double r40228522 = r40228520 * r40228521;
double r40228523 = z;
double r40228524 = r40228522 * r40228523;
double r40228525 = t;
double r40228526 = r40228524 * r40228525;
double r40228527 = a;
double r40228528 = 4.0;
double r40228529 = r40228527 * r40228528;
double r40228530 = r40228529 * r40228525;
double r40228531 = r40228526 - r40228530;
double r40228532 = b;
double r40228533 = c;
double r40228534 = r40228532 * r40228533;
double r40228535 = r40228531 + r40228534;
double r40228536 = r40228518 * r40228528;
double r40228537 = i;
double r40228538 = r40228536 * r40228537;
double r40228539 = r40228535 - r40228538;
double r40228540 = j;
double r40228541 = 27.0;
double r40228542 = r40228540 * r40228541;
double r40228543 = k;
double r40228544 = r40228542 * r40228543;
double r40228545 = r40228539 - r40228544;
return r40228545;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r40228546 = t;
double r40228547 = -2.5560702203240676e-307;
bool r40228548 = r40228546 <= r40228547;
double r40228549 = b;
double r40228550 = c;
double r40228551 = r40228549 * r40228550;
double r40228552 = 4.0;
double r40228553 = i;
double r40228554 = x;
double r40228555 = r40228553 * r40228554;
double r40228556 = r40228552 * r40228555;
double r40228557 = j;
double r40228558 = 27.0;
double r40228559 = r40228557 * r40228558;
double r40228560 = k;
double r40228561 = r40228559 * r40228560;
double r40228562 = r40228556 + r40228561;
double r40228563 = r40228551 - r40228562;
double r40228564 = z;
double r40228565 = 18.0;
double r40228566 = r40228564 * r40228565;
double r40228567 = r40228554 * r40228566;
double r40228568 = y;
double r40228569 = r40228567 * r40228568;
double r40228570 = a;
double r40228571 = r40228570 * r40228552;
double r40228572 = r40228569 - r40228571;
double r40228573 = r40228546 * r40228572;
double r40228574 = r40228563 + r40228573;
double r40228575 = 4.461860870917308e-94;
bool r40228576 = r40228546 <= r40228575;
double r40228577 = r40228565 * r40228554;
double r40228578 = r40228577 * r40228568;
double r40228579 = r40228546 * r40228564;
double r40228580 = r40228578 * r40228579;
double r40228581 = r40228546 * r40228571;
double r40228582 = r40228580 - r40228581;
double r40228583 = r40228582 + r40228551;
double r40228584 = r40228554 * r40228552;
double r40228585 = r40228584 * r40228553;
double r40228586 = r40228583 - r40228585;
double r40228587 = r40228560 * r40228558;
double r40228588 = r40228587 * r40228557;
double r40228589 = r40228586 - r40228588;
double r40228590 = r40228576 ? r40228589 : r40228574;
double r40228591 = r40228548 ? r40228574 : r40228590;
return r40228591;
}




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
Results
| Original | 5.6 |
|---|---|
| Target | 1.5 |
| Herbie | 4.8 |
if t < -2.5560702203240676e-307 or 4.461860870917308e-94 < t Initial program 4.7
Simplified4.7
rmApplied associate-*l*5.0
if -2.5560702203240676e-307 < t < 4.461860870917308e-94Initial program 8.4
rmApplied associate-*l*8.4
rmApplied associate-*l*4.0
Final simplification4.8
herbie shell --seed 2019169
(FPCore (x y z t a b c i j k)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, E"
:herbie-target
(if (< t -1.6210815397541398e-69) (- (- (* (* 18.0 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4.0)) (- (* (* k j) 27.0) (* c b))) (if (< t 165.68027943805222) (+ (- (* (* 18.0 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4.0)) (- (* c b) (* 27.0 (* k j)))) (- (- (* (* 18.0 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4.0)) (- (* (* k j) 27.0) (* c b)))))
(- (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) (* (* j 27.0) k)))