\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 -2.616507040877682570245126886877728515495 \cdot 10^{173} \lor \neg \left(\left(y \cdot 9\right) \cdot z \le 2.373904462751578418471696630822150350491 \cdot 10^{192}\right):\\
\;\;\;\;\left(2 \cdot x - \left(\left(t \cdot z\right) \cdot y\right) \cdot 9\right) + a \cdot \left(27 \cdot b\right)\\
\mathbf{else}:\\
\;\;\;\;\left(2 \cdot x + 27 \cdot \left(a \cdot b\right)\right) - 9 \cdot \left(t \cdot \left(z \cdot y\right)\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r457367 = x;
double r457368 = 2.0;
double r457369 = r457367 * r457368;
double r457370 = y;
double r457371 = 9.0;
double r457372 = r457370 * r457371;
double r457373 = z;
double r457374 = r457372 * r457373;
double r457375 = t;
double r457376 = r457374 * r457375;
double r457377 = r457369 - r457376;
double r457378 = a;
double r457379 = 27.0;
double r457380 = r457378 * r457379;
double r457381 = b;
double r457382 = r457380 * r457381;
double r457383 = r457377 + r457382;
return r457383;
}
double f(double x, double y, double z, double t, double a, double b) {
double r457384 = y;
double r457385 = 9.0;
double r457386 = r457384 * r457385;
double r457387 = z;
double r457388 = r457386 * r457387;
double r457389 = -2.6165070408776826e+173;
bool r457390 = r457388 <= r457389;
double r457391 = 2.3739044627515784e+192;
bool r457392 = r457388 <= r457391;
double r457393 = !r457392;
bool r457394 = r457390 || r457393;
double r457395 = 2.0;
double r457396 = x;
double r457397 = r457395 * r457396;
double r457398 = t;
double r457399 = r457398 * r457387;
double r457400 = r457399 * r457384;
double r457401 = r457400 * r457385;
double r457402 = r457397 - r457401;
double r457403 = a;
double r457404 = 27.0;
double r457405 = b;
double r457406 = r457404 * r457405;
double r457407 = r457403 * r457406;
double r457408 = r457402 + r457407;
double r457409 = r457403 * r457405;
double r457410 = r457404 * r457409;
double r457411 = r457397 + r457410;
double r457412 = r457387 * r457384;
double r457413 = r457398 * r457412;
double r457414 = r457385 * r457413;
double r457415 = r457411 - r457414;
double r457416 = r457394 ? r457408 : r457415;
return r457416;
}




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.4 |
if (* (* y 9.0) z) < -2.6165070408776826e+173 or 2.3739044627515784e+192 < (* (* y 9.0) z) Initial program 24.2
rmApplied pow124.2
Applied pow124.2
Applied pow124.2
Applied pow124.2
Applied pow-prod-down24.2
Applied pow-prod-down24.2
Applied pow-prod-down24.2
Simplified1.3
rmApplied associate-*r*0.8
rmApplied pow10.8
Applied pow10.8
Applied pow10.8
Applied pow-prod-down0.8
Applied pow-prod-down0.8
Simplified0.9
if -2.6165070408776826e+173 < (* (* y 9.0) z) < 2.3739044627515784e+192Initial program 0.4
rmApplied pow10.4
Applied pow10.4
Applied pow10.4
Applied pow10.4
Applied pow-prod-down0.4
Applied pow-prod-down0.4
Applied pow-prod-down0.4
Simplified4.0
Taylor expanded around inf 0.3
Final simplification0.4
herbie shell --seed 2019208
(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)))