\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(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b \le -2.028892807404785401104759331827718168245 \cdot 10^{283} \lor \neg \left(\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b \le 7.208264048131548745100809289264292588062 \cdot 10^{298}\right):\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\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 r50362 = x;
double r50363 = 2.0;
double r50364 = r50362 * r50363;
double r50365 = y;
double r50366 = 9.0;
double r50367 = r50365 * r50366;
double r50368 = z;
double r50369 = r50367 * r50368;
double r50370 = t;
double r50371 = r50369 * r50370;
double r50372 = r50364 - r50371;
double r50373 = a;
double r50374 = 27.0;
double r50375 = r50373 * r50374;
double r50376 = b;
double r50377 = r50375 * r50376;
double r50378 = r50372 + r50377;
return r50378;
}
double f(double x, double y, double z, double t, double a, double b) {
double r50379 = x;
double r50380 = 2.0;
double r50381 = r50379 * r50380;
double r50382 = y;
double r50383 = 9.0;
double r50384 = r50382 * r50383;
double r50385 = z;
double r50386 = r50384 * r50385;
double r50387 = t;
double r50388 = r50386 * r50387;
double r50389 = r50381 - r50388;
double r50390 = a;
double r50391 = 27.0;
double r50392 = r50390 * r50391;
double r50393 = b;
double r50394 = r50392 * r50393;
double r50395 = r50389 + r50394;
double r50396 = -2.0288928074047854e+283;
bool r50397 = r50395 <= r50396;
double r50398 = 7.208264048131549e+298;
bool r50399 = r50395 <= r50398;
double r50400 = !r50399;
bool r50401 = r50397 || r50400;
double r50402 = r50385 * r50387;
double r50403 = r50384 * r50402;
double r50404 = r50381 - r50403;
double r50405 = r50391 * r50393;
double r50406 = r50390 * r50405;
double r50407 = r50404 + r50406;
double r50408 = r50380 * r50379;
double r50409 = r50390 * r50393;
double r50410 = r50391 * r50409;
double r50411 = r50408 + r50410;
double r50412 = r50385 * r50382;
double r50413 = r50387 * r50412;
double r50414 = r50383 * r50413;
double r50415 = r50411 - r50414;
double r50416 = r50401 ? r50407 : r50415;
return r50416;
}




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.6 |
| Herbie | 0.8 |
if (+ (- (* x 2.0) (* (* (* y 9.0) z) t)) (* (* a 27.0) b)) < -2.0288928074047854e+283 or 7.208264048131549e+298 < (+ (- (* x 2.0) (* (* (* y 9.0) z) t)) (* (* a 27.0) b)) Initial program 32.4
rmApplied associate-*l*5.3
rmApplied associate-*l*4.5
if -2.0288928074047854e+283 < (+ (- (* x 2.0) (* (* (* y 9.0) z) t)) (* (* a 27.0) b)) < 7.208264048131549e+298Initial program 0.3
rmApplied associate-*l*3.6
Taylor expanded around 0 3.6
Taylor expanded around inf 0.3
Final simplification0.8
herbie shell --seed 2019315
(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)))