\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}\;y \cdot 9 \le -5620875659079845081513984:\\
\;\;\;\;\left(\sqrt[3]{a} \cdot \sqrt[3]{a}\right) \cdot \left(\sqrt[3]{a} \cdot \left(27 \cdot b\right)\right) + \left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(t \cdot z\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(b \cdot a\right) \cdot 27\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r23626409 = x;
double r23626410 = 2.0;
double r23626411 = r23626409 * r23626410;
double r23626412 = y;
double r23626413 = 9.0;
double r23626414 = r23626412 * r23626413;
double r23626415 = z;
double r23626416 = r23626414 * r23626415;
double r23626417 = t;
double r23626418 = r23626416 * r23626417;
double r23626419 = r23626411 - r23626418;
double r23626420 = a;
double r23626421 = 27.0;
double r23626422 = r23626420 * r23626421;
double r23626423 = b;
double r23626424 = r23626422 * r23626423;
double r23626425 = r23626419 + r23626424;
return r23626425;
}
double f(double x, double y, double z, double t, double a, double b) {
double r23626426 = y;
double r23626427 = 9.0;
double r23626428 = r23626426 * r23626427;
double r23626429 = -5.620875659079845e+24;
bool r23626430 = r23626428 <= r23626429;
double r23626431 = a;
double r23626432 = cbrt(r23626431);
double r23626433 = r23626432 * r23626432;
double r23626434 = 27.0;
double r23626435 = b;
double r23626436 = r23626434 * r23626435;
double r23626437 = r23626432 * r23626436;
double r23626438 = r23626433 * r23626437;
double r23626439 = x;
double r23626440 = 2.0;
double r23626441 = r23626439 * r23626440;
double r23626442 = t;
double r23626443 = z;
double r23626444 = r23626442 * r23626443;
double r23626445 = r23626428 * r23626444;
double r23626446 = r23626441 - r23626445;
double r23626447 = r23626438 + r23626446;
double r23626448 = r23626428 * r23626443;
double r23626449 = r23626448 * r23626442;
double r23626450 = r23626441 - r23626449;
double r23626451 = r23626435 * r23626431;
double r23626452 = r23626451 * r23626434;
double r23626453 = r23626450 + r23626452;
double r23626454 = r23626430 ? r23626447 : r23626453;
return r23626454;
}




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 | 2.2 |
if (* y 9.0) < -5.620875659079845e+24Initial program 8.9
rmApplied associate-*l*8.8
rmApplied associate-*l*1.0
rmApplied add-cube-cbrt1.3
Applied associate-*l*1.3
if -5.620875659079845e+24 < (* y 9.0) Initial program 2.5
Taylor expanded around 0 2.4
Final simplification2.2
herbie shell --seed 2019179
(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)))