\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}\;t \le -6.660311807137084788107015105621119988366 \cdot 10^{90} \lor \neg \left(t \le 6.858672798378862507206508113638693409984 \cdot 10^{53}\right):\\
\;\;\;\;27 \cdot \left(a \cdot b\right) + \left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right) + a \cdot \left(27 \cdot b\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r529648 = x;
double r529649 = 2.0;
double r529650 = r529648 * r529649;
double r529651 = y;
double r529652 = 9.0;
double r529653 = r529651 * r529652;
double r529654 = z;
double r529655 = r529653 * r529654;
double r529656 = t;
double r529657 = r529655 * r529656;
double r529658 = r529650 - r529657;
double r529659 = a;
double r529660 = 27.0;
double r529661 = r529659 * r529660;
double r529662 = b;
double r529663 = r529661 * r529662;
double r529664 = r529658 + r529663;
return r529664;
}
double f(double x, double y, double z, double t, double a, double b) {
double r529665 = t;
double r529666 = -6.660311807137085e+90;
bool r529667 = r529665 <= r529666;
double r529668 = 6.8586727983788625e+53;
bool r529669 = r529665 <= r529668;
double r529670 = !r529669;
bool r529671 = r529667 || r529670;
double r529672 = 27.0;
double r529673 = a;
double r529674 = b;
double r529675 = r529673 * r529674;
double r529676 = r529672 * r529675;
double r529677 = x;
double r529678 = 2.0;
double r529679 = r529677 * r529678;
double r529680 = y;
double r529681 = 9.0;
double r529682 = r529680 * r529681;
double r529683 = z;
double r529684 = r529682 * r529683;
double r529685 = r529684 * r529665;
double r529686 = r529679 - r529685;
double r529687 = r529676 + r529686;
double r529688 = r529683 * r529665;
double r529689 = r529682 * r529688;
double r529690 = r529679 - r529689;
double r529691 = r529672 * r529674;
double r529692 = r529673 * r529691;
double r529693 = r529690 + r529692;
double r529694 = r529671 ? r529687 : r529693;
return r529694;
}




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.5 |
|---|---|
| Target | 2.6 |
| Herbie | 0.9 |
if t < -6.660311807137085e+90 or 6.8586727983788625e+53 < t Initial program 0.8
rmApplied pow10.8
Applied pow10.8
Applied pow10.8
Applied pow-prod-down0.8
Applied pow-prod-down0.8
Simplified0.8
if -6.660311807137085e+90 < t < 6.8586727983788625e+53Initial program 4.7
rmApplied associate-*l*4.7
rmApplied associate-*l*1.0
Final simplification0.9
herbie shell --seed 2019303
(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)))