\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 -8.9800446771093483 \cdot 10^{217} \lor \neg \left(\left(y \cdot 9\right) \cdot z \le 7.947264576269877 \cdot 10^{204}\right):\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right) + 27 \cdot \left(a \cdot b\right)\\
\mathbf{else}:\\
\;\;\;\;\left(2 \cdot x - 9 \cdot \left(t \cdot \left(z \cdot y\right)\right)\right) + \left(a \cdot 27\right) \cdot b\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r757640 = x;
double r757641 = 2.0;
double r757642 = r757640 * r757641;
double r757643 = y;
double r757644 = 9.0;
double r757645 = r757643 * r757644;
double r757646 = z;
double r757647 = r757645 * r757646;
double r757648 = t;
double r757649 = r757647 * r757648;
double r757650 = r757642 - r757649;
double r757651 = a;
double r757652 = 27.0;
double r757653 = r757651 * r757652;
double r757654 = b;
double r757655 = r757653 * r757654;
double r757656 = r757650 + r757655;
return r757656;
}
double f(double x, double y, double z, double t, double a, double b) {
double r757657 = y;
double r757658 = 9.0;
double r757659 = r757657 * r757658;
double r757660 = z;
double r757661 = r757659 * r757660;
double r757662 = -8.980044677109348e+217;
bool r757663 = r757661 <= r757662;
double r757664 = 7.947264576269877e+204;
bool r757665 = r757661 <= r757664;
double r757666 = !r757665;
bool r757667 = r757663 || r757666;
double r757668 = x;
double r757669 = 2.0;
double r757670 = r757668 * r757669;
double r757671 = t;
double r757672 = r757660 * r757671;
double r757673 = r757659 * r757672;
double r757674 = r757670 - r757673;
double r757675 = 27.0;
double r757676 = a;
double r757677 = b;
double r757678 = r757676 * r757677;
double r757679 = r757675 * r757678;
double r757680 = r757674 + r757679;
double r757681 = r757669 * r757668;
double r757682 = r757660 * r757657;
double r757683 = r757671 * r757682;
double r757684 = r757658 * r757683;
double r757685 = r757681 - r757684;
double r757686 = r757676 * r757675;
double r757687 = r757686 * r757677;
double r757688 = r757685 + r757687;
double r757689 = r757667 ? r757680 : r757688;
return r757689;
}




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.7 |
|---|---|
| Target | 2.7 |
| Herbie | 0.6 |
if (* (* y 9.0) z) < -8.980044677109348e+217 or 7.947264576269877e+204 < (* (* y 9.0) z) Initial program 28.2
rmApplied associate-*l*1.1
Taylor expanded around 0 1.0
if -8.980044677109348e+217 < (* (* y 9.0) z) < 7.947264576269877e+204Initial program 0.5
rmApplied associate-*l*3.8
Taylor expanded around inf 0.5
Final simplification0.6
herbie shell --seed 2020036
(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)))