\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(\left(y \cdot 9\right) \cdot z\right) \cdot t = -\infty:\\
\;\;\;\;\left(x \cdot 2 - y \cdot \left(\left(9 \cdot z\right) \cdot t\right)\right) + \left(\sqrt[3]{\left(a \cdot 27\right) \cdot b} \cdot \sqrt[3]{\left(a \cdot 27\right) \cdot b}\right) \cdot \sqrt[3]{\left(a \cdot 27\right) \cdot b}\\
\mathbf{elif}\;\left(\left(y \cdot 9\right) \cdot z\right) \cdot t \le 8.81455376018243294 \cdot 10^{242}:\\
\;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + a \cdot \left(27 \cdot b\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot 2 - y \cdot \left(9 \cdot \left(z \cdot t\right)\right)\right) + \left(\left(a \cdot 27\right) \cdot \left(\sqrt[3]{b} \cdot \sqrt[3]{b}\right)\right) \cdot \sqrt[3]{b}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r443661 = x;
double r443662 = 2.0;
double r443663 = r443661 * r443662;
double r443664 = y;
double r443665 = 9.0;
double r443666 = r443664 * r443665;
double r443667 = z;
double r443668 = r443666 * r443667;
double r443669 = t;
double r443670 = r443668 * r443669;
double r443671 = r443663 - r443670;
double r443672 = a;
double r443673 = 27.0;
double r443674 = r443672 * r443673;
double r443675 = b;
double r443676 = r443674 * r443675;
double r443677 = r443671 + r443676;
return r443677;
}
double f(double x, double y, double z, double t, double a, double b) {
double r443678 = y;
double r443679 = 9.0;
double r443680 = r443678 * r443679;
double r443681 = z;
double r443682 = r443680 * r443681;
double r443683 = t;
double r443684 = r443682 * r443683;
double r443685 = -inf.0;
bool r443686 = r443684 <= r443685;
double r443687 = x;
double r443688 = 2.0;
double r443689 = r443687 * r443688;
double r443690 = r443679 * r443681;
double r443691 = r443690 * r443683;
double r443692 = r443678 * r443691;
double r443693 = r443689 - r443692;
double r443694 = a;
double r443695 = 27.0;
double r443696 = r443694 * r443695;
double r443697 = b;
double r443698 = r443696 * r443697;
double r443699 = cbrt(r443698);
double r443700 = r443699 * r443699;
double r443701 = r443700 * r443699;
double r443702 = r443693 + r443701;
double r443703 = 8.814553760182433e+242;
bool r443704 = r443684 <= r443703;
double r443705 = r443689 - r443684;
double r443706 = r443695 * r443697;
double r443707 = r443694 * r443706;
double r443708 = r443705 + r443707;
double r443709 = r443681 * r443683;
double r443710 = r443679 * r443709;
double r443711 = r443678 * r443710;
double r443712 = r443689 - r443711;
double r443713 = cbrt(r443697);
double r443714 = r443713 * r443713;
double r443715 = r443696 * r443714;
double r443716 = r443715 * r443713;
double r443717 = r443712 + r443716;
double r443718 = r443704 ? r443708 : r443717;
double r443719 = r443686 ? r443702 : r443718;
return r443719;
}




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.6 |
| Herbie | 1.0 |
if (* (* (* y 9.0) z) t) < -inf.0Initial program 64.0
rmApplied associate-*l*2.4
rmApplied associate-*l*0.6
rmApplied associate-*r*0.6
rmApplied add-cube-cbrt0.7
if -inf.0 < (* (* (* y 9.0) z) t) < 8.814553760182433e+242Initial program 0.5
rmApplied associate-*l*0.5
if 8.814553760182433e+242 < (* (* (* y 9.0) z) t) Initial program 31.8
rmApplied associate-*l*9.9
rmApplied associate-*l*9.1
rmApplied add-cube-cbrt9.1
Applied associate-*r*9.1
Final simplification1.0
herbie shell --seed 2020042
(FPCore (x y z t a b)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, A"
:precision binary64
:herbie-target
(if (< y 7.590524218811189e-161) (+ (- (* x 2) (* (* (* y 9) z) t)) (* a (* 27 b))) (+ (- (* x 2) (* 9 (* y (* t z)))) (* (* a 27) b)))
(+ (- (* x 2) (* (* (* y 9) z) t)) (* (* a 27) b)))