\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(j \cdot 27\right) \cdot k \le -4.540980572012251526114420073985087439812 \cdot 10^{-316} \lor \neg \left(\left(j \cdot 27\right) \cdot k \le 2161642607386816256\right) \land \left(j \cdot 27\right) \cdot k \le 1.732330144710722980399686902944367574721 \cdot 10^{167}:\\
\;\;\;\;\left(\left(\left(18 \cdot \left(\left(t \cdot x\right) \cdot \left(z \cdot y\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{else}:\\
\;\;\;\;\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) - \sqrt{\left(j \cdot 27\right) \cdot k} \cdot \sqrt{\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 r494436 = x;
double r494437 = 18.0;
double r494438 = r494436 * r494437;
double r494439 = y;
double r494440 = r494438 * r494439;
double r494441 = z;
double r494442 = r494440 * r494441;
double r494443 = t;
double r494444 = r494442 * r494443;
double r494445 = a;
double r494446 = 4.0;
double r494447 = r494445 * r494446;
double r494448 = r494447 * r494443;
double r494449 = r494444 - r494448;
double r494450 = b;
double r494451 = c;
double r494452 = r494450 * r494451;
double r494453 = r494449 + r494452;
double r494454 = r494436 * r494446;
double r494455 = i;
double r494456 = r494454 * r494455;
double r494457 = r494453 - r494456;
double r494458 = j;
double r494459 = 27.0;
double r494460 = r494458 * r494459;
double r494461 = k;
double r494462 = r494460 * r494461;
double r494463 = r494457 - r494462;
return r494463;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r494464 = j;
double r494465 = 27.0;
double r494466 = r494464 * r494465;
double r494467 = k;
double r494468 = r494466 * r494467;
double r494469 = -4.5409805720123e-316;
bool r494470 = r494468 <= r494469;
double r494471 = 2.1616426073868163e+18;
bool r494472 = r494468 <= r494471;
double r494473 = !r494472;
double r494474 = 1.732330144710723e+167;
bool r494475 = r494468 <= r494474;
bool r494476 = r494473 && r494475;
bool r494477 = r494470 || r494476;
double r494478 = 18.0;
double r494479 = t;
double r494480 = x;
double r494481 = r494479 * r494480;
double r494482 = z;
double r494483 = y;
double r494484 = r494482 * r494483;
double r494485 = r494481 * r494484;
double r494486 = r494478 * r494485;
double r494487 = a;
double r494488 = 4.0;
double r494489 = r494487 * r494488;
double r494490 = r494489 * r494479;
double r494491 = r494486 - r494490;
double r494492 = b;
double r494493 = c;
double r494494 = r494492 * r494493;
double r494495 = r494491 + r494494;
double r494496 = r494480 * r494488;
double r494497 = i;
double r494498 = r494496 * r494497;
double r494499 = r494495 - r494498;
double r494500 = r494499 - r494468;
double r494501 = r494480 * r494478;
double r494502 = r494501 * r494483;
double r494503 = r494502 * r494482;
double r494504 = r494503 * r494479;
double r494505 = r494504 - r494490;
double r494506 = r494505 + r494494;
double r494507 = r494506 - r494498;
double r494508 = sqrt(r494468);
double r494509 = r494508 * r494508;
double r494510 = r494507 - r494509;
double r494511 = r494477 ? r494500 : r494510;
return r494511;
}




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.8 |
|---|---|
| Target | 1.6 |
| Herbie | 6.3 |
if (* (* j 27.0) k) < -4.5409805720123e-316 or 2.1616426073868163e+18 < (* (* j 27.0) k) < 1.732330144710723e+167Initial program 5.9
Taylor expanded around inf 6.1
rmApplied associate-*r*6.3
if -4.5409805720123e-316 < (* (* j 27.0) k) < 2.1616426073868163e+18 or 1.732330144710723e+167 < (* (* j 27.0) k) Initial program 5.6
rmApplied add-sqr-sqrt6.2
Final simplification6.3
herbie shell --seed 2019325
(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)))