\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 = -\infty:\\
\;\;\;\;\left(\left(\left(\left(x \cdot 18\right) \cdot \left(z \cdot \left(y \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.642866419000479000975446742197166565839 \cdot 10^{275}:\\
\;\;\;\;\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 \left(18 \cdot y\right)\right) \cdot \left(t \cdot z\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 r477382 = x;
double r477383 = 18.0;
double r477384 = r477382 * r477383;
double r477385 = y;
double r477386 = r477384 * r477385;
double r477387 = z;
double r477388 = r477386 * r477387;
double r477389 = t;
double r477390 = r477388 * r477389;
double r477391 = a;
double r477392 = 4.0;
double r477393 = r477391 * r477392;
double r477394 = r477393 * r477389;
double r477395 = r477390 - r477394;
double r477396 = b;
double r477397 = c;
double r477398 = r477396 * r477397;
double r477399 = r477395 + r477398;
double r477400 = r477382 * r477392;
double r477401 = i;
double r477402 = r477400 * r477401;
double r477403 = r477399 - r477402;
double r477404 = j;
double r477405 = 27.0;
double r477406 = r477404 * r477405;
double r477407 = k;
double r477408 = r477406 * r477407;
double r477409 = r477403 - r477408;
return r477409;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r477410 = x;
double r477411 = 18.0;
double r477412 = r477410 * r477411;
double r477413 = y;
double r477414 = r477412 * r477413;
double r477415 = z;
double r477416 = r477414 * r477415;
double r477417 = t;
double r477418 = r477416 * r477417;
double r477419 = a;
double r477420 = 4.0;
double r477421 = r477419 * r477420;
double r477422 = r477421 * r477417;
double r477423 = r477418 - r477422;
double r477424 = b;
double r477425 = c;
double r477426 = r477424 * r477425;
double r477427 = r477423 + r477426;
double r477428 = r477410 * r477420;
double r477429 = i;
double r477430 = r477428 * r477429;
double r477431 = r477427 - r477430;
double r477432 = -inf.0;
bool r477433 = r477431 <= r477432;
double r477434 = r477413 * r477417;
double r477435 = r477415 * r477434;
double r477436 = r477412 * r477435;
double r477437 = r477436 - r477422;
double r477438 = r477437 + r477426;
double r477439 = r477438 - r477430;
double r477440 = j;
double r477441 = 27.0;
double r477442 = r477440 * r477441;
double r477443 = k;
double r477444 = r477442 * r477443;
double r477445 = r477439 - r477444;
double r477446 = 2.642866419000479e+275;
bool r477447 = r477431 <= r477446;
double r477448 = r477441 * r477443;
double r477449 = r477440 * r477448;
double r477450 = r477431 - r477449;
double r477451 = r477411 * r477413;
double r477452 = r477410 * r477451;
double r477453 = r477417 * r477415;
double r477454 = r477452 * r477453;
double r477455 = r477454 - r477422;
double r477456 = r477455 + r477426;
double r477457 = r477456 - r477430;
double r477458 = r477457 - r477444;
double r477459 = r477447 ? r477450 : r477458;
double r477460 = r477433 ? r477445 : r477459;
return r477460;
}




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.7 |
| Herbie | 2.5 |
if (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < -inf.0Initial program 64.0
rmApplied associate-*l*34.7
Simplified34.7
rmApplied associate-*l*4.8
Simplified7.2
if -inf.0 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < 2.642866419000479e+275Initial program 0.4
rmApplied associate-*l*0.4
if 2.642866419000479e+275 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) Initial program 29.9
rmApplied associate-*l*21.6
Simplified21.6
rmApplied associate-*l*21.6
Final simplification2.5
herbie shell --seed 2019347 +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)))