\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k
\begin{array}{l}
\mathbf{if}\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i \le -2.03888388659653177 \cdot 10^{295}:\\
\;\;\;\;\left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(z \cdot t\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\
\mathbf{elif}\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i \le 2.661920863197471 \cdot 10^{300}:\\
\;\;\;\;\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - j \cdot \left(27 \cdot k\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(x \cdot 18\right) \cdot \left(\left(y \cdot z\right) \cdot t\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r770393 = x;
double r770394 = 18.0;
double r770395 = r770393 * r770394;
double r770396 = y;
double r770397 = r770395 * r770396;
double r770398 = z;
double r770399 = r770397 * r770398;
double r770400 = t;
double r770401 = r770399 * r770400;
double r770402 = a;
double r770403 = 4.0;
double r770404 = r770402 * r770403;
double r770405 = r770404 * r770400;
double r770406 = r770401 - r770405;
double r770407 = b;
double r770408 = c;
double r770409 = r770407 * r770408;
double r770410 = r770406 + r770409;
double r770411 = r770393 * r770403;
double r770412 = i;
double r770413 = r770411 * r770412;
double r770414 = r770410 - r770413;
double r770415 = j;
double r770416 = 27.0;
double r770417 = r770415 * r770416;
double r770418 = k;
double r770419 = r770417 * r770418;
double r770420 = r770414 - r770419;
return r770420;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r770421 = x;
double r770422 = 18.0;
double r770423 = r770421 * r770422;
double r770424 = y;
double r770425 = r770423 * r770424;
double r770426 = z;
double r770427 = r770425 * r770426;
double r770428 = t;
double r770429 = r770427 * r770428;
double r770430 = a;
double r770431 = 4.0;
double r770432 = r770430 * r770431;
double r770433 = r770432 * r770428;
double r770434 = r770429 - r770433;
double r770435 = b;
double r770436 = c;
double r770437 = r770435 * r770436;
double r770438 = r770434 + r770437;
double r770439 = r770421 * r770431;
double r770440 = i;
double r770441 = r770439 * r770440;
double r770442 = r770438 - r770441;
double r770443 = -2.0388838865965318e+295;
bool r770444 = r770442 <= r770443;
double r770445 = r770426 * r770428;
double r770446 = r770424 * r770445;
double r770447 = r770423 * r770446;
double r770448 = r770447 - r770433;
double r770449 = r770448 + r770437;
double r770450 = r770449 - r770441;
double r770451 = j;
double r770452 = 27.0;
double r770453 = r770451 * r770452;
double r770454 = k;
double r770455 = r770453 * r770454;
double r770456 = r770450 - r770455;
double r770457 = 2.661920863197471e+300;
bool r770458 = r770442 <= r770457;
double r770459 = r770452 * r770454;
double r770460 = r770451 * r770459;
double r770461 = r770442 - r770460;
double r770462 = r770424 * r770426;
double r770463 = r770462 * r770428;
double r770464 = r770423 * r770463;
double r770465 = r770464 - r770433;
double r770466 = r770465 + r770437;
double r770467 = r770466 - r770441;
double r770468 = r770467 - r770455;
double r770469 = r770458 ? r770461 : r770468;
double r770470 = r770444 ? r770456 : r770469;
return r770470;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b




Bits error versus c




Bits error versus i




Bits error versus j




Bits error versus k
Results
| Original | 5.5 |
|---|---|
| Target | 1.5 |
| Herbie | 1.6 |
if (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < -2.0388838865965318e+295Initial program 44.3
rmApplied associate-*l*28.1
rmApplied associate-*l*16.2
rmApplied associate-*l*7.9
if -2.0388838865965318e+295 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < 2.661920863197471e+300Initial program 0.3
rmApplied associate-*l*0.4
if 2.661920863197471e+300 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) Initial program 51.2
rmApplied associate-*l*33.3
rmApplied associate-*l*15.0
Final simplification1.6
herbie shell --seed 2020056 +o rules:numerics
(FPCore (x y z t a b c i j k)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, E"
:precision binary64
:herbie-target
(if (< t -1.6210815397541398e-69) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b))) (if (< t 165.68027943805222) (+ (- (* (* 18 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4)) (- (* c b) (* 27 (* k j)))) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b)))))
(- (- (+ (- (* (* (* (* x 18) y) z) t) (* (* a 4) t)) (* b c)) (* (* x 4) i)) (* (* j 27) k)))