\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b
\begin{array}{l}
\mathbf{if}\;\left(y \cdot 9\right) \cdot z = -\infty:\\
\;\;\;\;\left(27 \cdot a\right) \cdot b + \left(x \cdot 2 - \left(t \cdot z\right) \cdot \left(y \cdot 9\right)\right)\\
\mathbf{elif}\;\left(y \cdot 9\right) \cdot z \le 2.379137651611160183029917607616711028297 \cdot 10^{96}:\\
\;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(27 \cdot b\right) \cdot a\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\sqrt{27} \cdot b\right) \cdot a\right) \cdot \sqrt{27} - \left(t \cdot \left(z \cdot 9\right)\right) \cdot y\right) + x \cdot 2\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r34904443 = x;
double r34904444 = 2.0;
double r34904445 = r34904443 * r34904444;
double r34904446 = y;
double r34904447 = 9.0;
double r34904448 = r34904446 * r34904447;
double r34904449 = z;
double r34904450 = r34904448 * r34904449;
double r34904451 = t;
double r34904452 = r34904450 * r34904451;
double r34904453 = r34904445 - r34904452;
double r34904454 = a;
double r34904455 = 27.0;
double r34904456 = r34904454 * r34904455;
double r34904457 = b;
double r34904458 = r34904456 * r34904457;
double r34904459 = r34904453 + r34904458;
return r34904459;
}
double f(double x, double y, double z, double t, double a, double b) {
double r34904460 = y;
double r34904461 = 9.0;
double r34904462 = r34904460 * r34904461;
double r34904463 = z;
double r34904464 = r34904462 * r34904463;
double r34904465 = -inf.0;
bool r34904466 = r34904464 <= r34904465;
double r34904467 = 27.0;
double r34904468 = a;
double r34904469 = r34904467 * r34904468;
double r34904470 = b;
double r34904471 = r34904469 * r34904470;
double r34904472 = x;
double r34904473 = 2.0;
double r34904474 = r34904472 * r34904473;
double r34904475 = t;
double r34904476 = r34904475 * r34904463;
double r34904477 = r34904476 * r34904462;
double r34904478 = r34904474 - r34904477;
double r34904479 = r34904471 + r34904478;
double r34904480 = 2.37913765161116e+96;
bool r34904481 = r34904464 <= r34904480;
double r34904482 = r34904464 * r34904475;
double r34904483 = r34904474 - r34904482;
double r34904484 = r34904467 * r34904470;
double r34904485 = r34904484 * r34904468;
double r34904486 = r34904483 + r34904485;
double r34904487 = sqrt(r34904467);
double r34904488 = r34904487 * r34904470;
double r34904489 = r34904488 * r34904468;
double r34904490 = r34904489 * r34904487;
double r34904491 = r34904463 * r34904461;
double r34904492 = r34904475 * r34904491;
double r34904493 = r34904492 * r34904460;
double r34904494 = r34904490 - r34904493;
double r34904495 = r34904494 + r34904474;
double r34904496 = r34904481 ? r34904486 : r34904495;
double r34904497 = r34904466 ? r34904479 : r34904496;
return r34904497;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 3.8 |
|---|---|
| Target | 2.8 |
| Herbie | 0.8 |
if (* (* y 9.0) z) < -inf.0Initial program 64.0
rmApplied associate-*l*1.4
if -inf.0 < (* (* y 9.0) z) < 2.37913765161116e+96Initial program 0.4
rmApplied associate-*l*0.4
if 2.37913765161116e+96 < (* (* y 9.0) z) Initial program 14.5
rmApplied sub-neg14.5
Applied associate-+l+14.5
Simplified3.5
rmApplied add-sqr-sqrt3.5
Applied associate-*r*3.5
rmApplied *-un-lft-identity3.5
Applied sqrt-prod3.5
Applied associate-*r*3.5
Simplified3.5
Final simplification0.8
herbie shell --seed 2019174
(FPCore (x y z t a b)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, A"
:herbie-target
(if (< y 7.590524218811189e-161) (+ (- (* x 2.0) (* (* (* y 9.0) z) t)) (* a (* 27.0 b))) (+ (- (* x 2.0) (* 9.0 (* y (* t z)))) (* (* a 27.0) b)))
(+ (- (* x 2.0) (* (* (* y 9.0) z) t)) (* (* a 27.0) b)))