\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 r753387 = x;
double r753388 = 18.0;
double r753389 = r753387 * r753388;
double r753390 = y;
double r753391 = r753389 * r753390;
double r753392 = z;
double r753393 = r753391 * r753392;
double r753394 = t;
double r753395 = r753393 * r753394;
double r753396 = a;
double r753397 = 4.0;
double r753398 = r753396 * r753397;
double r753399 = r753398 * r753394;
double r753400 = r753395 - r753399;
double r753401 = b;
double r753402 = c;
double r753403 = r753401 * r753402;
double r753404 = r753400 + r753403;
double r753405 = r753387 * r753397;
double r753406 = i;
double r753407 = r753405 * r753406;
double r753408 = r753404 - r753407;
double r753409 = j;
double r753410 = 27.0;
double r753411 = r753409 * r753410;
double r753412 = k;
double r753413 = r753411 * r753412;
double r753414 = r753408 - r753413;
return r753414;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r753415 = x;
double r753416 = 18.0;
double r753417 = r753415 * r753416;
double r753418 = y;
double r753419 = r753417 * r753418;
double r753420 = z;
double r753421 = r753419 * r753420;
double r753422 = t;
double r753423 = r753421 * r753422;
double r753424 = a;
double r753425 = 4.0;
double r753426 = r753424 * r753425;
double r753427 = r753426 * r753422;
double r753428 = r753423 - r753427;
double r753429 = b;
double r753430 = c;
double r753431 = r753429 * r753430;
double r753432 = r753428 + r753431;
double r753433 = r753415 * r753425;
double r753434 = i;
double r753435 = r753433 * r753434;
double r753436 = r753432 - r753435;
double r753437 = -2.0388838865965318e+295;
bool r753438 = r753436 <= r753437;
double r753439 = r753420 * r753422;
double r753440 = r753418 * r753439;
double r753441 = r753417 * r753440;
double r753442 = r753441 - r753427;
double r753443 = r753442 + r753431;
double r753444 = r753443 - r753435;
double r753445 = j;
double r753446 = 27.0;
double r753447 = r753445 * r753446;
double r753448 = k;
double r753449 = r753447 * r753448;
double r753450 = r753444 - r753449;
double r753451 = 2.661920863197471e+300;
bool r753452 = r753436 <= r753451;
double r753453 = r753446 * r753448;
double r753454 = r753445 * r753453;
double r753455 = r753436 - r753454;
double r753456 = r753418 * r753420;
double r753457 = r753456 * r753422;
double r753458 = r753417 * r753457;
double r753459 = r753458 - r753427;
double r753460 = r753459 + r753431;
double r753461 = r753460 - r753435;
double r753462 = r753461 - r753449;
double r753463 = r753452 ? r753455 : r753462;
double r753464 = r753438 ? r753450 : r753463;
return r753464;
}




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
(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)))