\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 \le -6.16983098656915618770243611823975193088 \cdot 10^{244}:\\
\;\;\;\;\left(x \cdot 2 - \left(\left(z \cdot 9\right) \cdot t\right) \cdot y\right) + \left(27 \cdot b\right) \cdot a\\
\mathbf{elif}\;\left(y \cdot 9\right) \cdot z \le 7.777712036168804730778105716002265939491 \cdot 10^{90}:\\
\;\;\;\;\left(x \cdot 2 + \left(a \cdot b\right) \cdot 27\right) - 9 \cdot \left(\left(z \cdot y\right) \cdot t\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot 2 - \left(\left(z \cdot 9\right) \cdot t\right) \cdot y\right) + \left(27 \cdot b\right) \cdot a\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r34123598 = x;
double r34123599 = 2.0;
double r34123600 = r34123598 * r34123599;
double r34123601 = y;
double r34123602 = 9.0;
double r34123603 = r34123601 * r34123602;
double r34123604 = z;
double r34123605 = r34123603 * r34123604;
double r34123606 = t;
double r34123607 = r34123605 * r34123606;
double r34123608 = r34123600 - r34123607;
double r34123609 = a;
double r34123610 = 27.0;
double r34123611 = r34123609 * r34123610;
double r34123612 = b;
double r34123613 = r34123611 * r34123612;
double r34123614 = r34123608 + r34123613;
return r34123614;
}
double f(double x, double y, double z, double t, double a, double b) {
double r34123615 = y;
double r34123616 = 9.0;
double r34123617 = r34123615 * r34123616;
double r34123618 = z;
double r34123619 = r34123617 * r34123618;
double r34123620 = -6.169830986569156e+244;
bool r34123621 = r34123619 <= r34123620;
double r34123622 = x;
double r34123623 = 2.0;
double r34123624 = r34123622 * r34123623;
double r34123625 = r34123618 * r34123616;
double r34123626 = t;
double r34123627 = r34123625 * r34123626;
double r34123628 = r34123627 * r34123615;
double r34123629 = r34123624 - r34123628;
double r34123630 = 27.0;
double r34123631 = b;
double r34123632 = r34123630 * r34123631;
double r34123633 = a;
double r34123634 = r34123632 * r34123633;
double r34123635 = r34123629 + r34123634;
double r34123636 = 7.777712036168805e+90;
bool r34123637 = r34123619 <= r34123636;
double r34123638 = r34123633 * r34123631;
double r34123639 = r34123638 * r34123630;
double r34123640 = r34123624 + r34123639;
double r34123641 = r34123618 * r34123615;
double r34123642 = r34123641 * r34123626;
double r34123643 = r34123616 * r34123642;
double r34123644 = r34123640 - r34123643;
double r34123645 = r34123637 ? r34123644 : r34123635;
double r34123646 = r34123621 ? r34123635 : r34123645;
return r34123646;
}




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.6 |
|---|---|
| Target | 2.6 |
| Herbie | 0.6 |
if (* (* y 9.0) z) < -6.169830986569156e+244 or 7.777712036168805e+90 < (* (* y 9.0) z) Initial program 19.3
rmApplied associate-*l*2.0
rmApplied associate-*l*1.5
rmApplied associate-*r*1.7
rmApplied associate-*l*1.7
if -6.169830986569156e+244 < (* (* y 9.0) z) < 7.777712036168805e+90Initial program 0.4
Taylor expanded around inf 0.4
Final simplification0.6
herbie shell --seed 2019168
(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)))