\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}\;z \le -2.339994438330015674673474874476476077102 \cdot 10^{138}:\\
\;\;\;\;\left(\left(t \cdot \left(\left(\left(x \cdot y\right) \cdot 18\right) \cdot z - a \cdot 4\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \sqrt{27} \cdot \left(\sqrt{27} \cdot \left(j \cdot k\right)\right)\\
\mathbf{elif}\;z \le 2.041304797355415594397236028962282394842 \cdot 10^{-44}:\\
\;\;\;\;\left(\left(\left(18 \cdot \left(t \cdot \left(x \cdot \left(z \cdot y\right)\right)\right) - 4 \cdot \left(a \cdot t\right)\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - 27 \cdot \left(j \cdot k\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(t \cdot \left(\left(\left(x \cdot y\right) \cdot 18\right) \cdot z - a \cdot 4\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \sqrt{27} \cdot \left(\sqrt{27} \cdot \left(j \cdot k\right)\right)\\
\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 r50952411 = x;
double r50952412 = 18.0;
double r50952413 = r50952411 * r50952412;
double r50952414 = y;
double r50952415 = r50952413 * r50952414;
double r50952416 = z;
double r50952417 = r50952415 * r50952416;
double r50952418 = t;
double r50952419 = r50952417 * r50952418;
double r50952420 = a;
double r50952421 = 4.0;
double r50952422 = r50952420 * r50952421;
double r50952423 = r50952422 * r50952418;
double r50952424 = r50952419 - r50952423;
double r50952425 = b;
double r50952426 = c;
double r50952427 = r50952425 * r50952426;
double r50952428 = r50952424 + r50952427;
double r50952429 = r50952411 * r50952421;
double r50952430 = i;
double r50952431 = r50952429 * r50952430;
double r50952432 = r50952428 - r50952431;
double r50952433 = j;
double r50952434 = 27.0;
double r50952435 = r50952433 * r50952434;
double r50952436 = k;
double r50952437 = r50952435 * r50952436;
double r50952438 = r50952432 - r50952437;
return r50952438;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r50952439 = z;
double r50952440 = -2.3399944383300157e+138;
bool r50952441 = r50952439 <= r50952440;
double r50952442 = t;
double r50952443 = x;
double r50952444 = y;
double r50952445 = r50952443 * r50952444;
double r50952446 = 18.0;
double r50952447 = r50952445 * r50952446;
double r50952448 = r50952447 * r50952439;
double r50952449 = a;
double r50952450 = 4.0;
double r50952451 = r50952449 * r50952450;
double r50952452 = r50952448 - r50952451;
double r50952453 = r50952442 * r50952452;
double r50952454 = b;
double r50952455 = c;
double r50952456 = r50952454 * r50952455;
double r50952457 = r50952453 + r50952456;
double r50952458 = r50952443 * r50952450;
double r50952459 = i;
double r50952460 = r50952458 * r50952459;
double r50952461 = r50952457 - r50952460;
double r50952462 = 27.0;
double r50952463 = sqrt(r50952462);
double r50952464 = j;
double r50952465 = k;
double r50952466 = r50952464 * r50952465;
double r50952467 = r50952463 * r50952466;
double r50952468 = r50952463 * r50952467;
double r50952469 = r50952461 - r50952468;
double r50952470 = 2.0413047973554156e-44;
bool r50952471 = r50952439 <= r50952470;
double r50952472 = r50952439 * r50952444;
double r50952473 = r50952443 * r50952472;
double r50952474 = r50952442 * r50952473;
double r50952475 = r50952446 * r50952474;
double r50952476 = r50952449 * r50952442;
double r50952477 = r50952450 * r50952476;
double r50952478 = r50952475 - r50952477;
double r50952479 = r50952478 + r50952456;
double r50952480 = r50952479 - r50952460;
double r50952481 = r50952462 * r50952466;
double r50952482 = r50952480 - r50952481;
double r50952483 = r50952471 ? r50952482 : r50952469;
double r50952484 = r50952441 ? r50952469 : r50952483;
return r50952484;
}




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.9 |
|---|---|
| Target | 1.6 |
| Herbie | 4.1 |
if z < -2.3399944383300157e+138 or 2.0413047973554156e-44 < z Initial program 7.6
Simplified7.6
Taylor expanded around 0 7.5
rmApplied *-un-lft-identity7.5
Applied associate-*r*7.5
Simplified7.5
rmApplied add-sqr-sqrt7.5
Applied associate-*l*7.5
if -2.3399944383300157e+138 < z < 2.0413047973554156e-44Initial program 4.9
Simplified4.9
Taylor expanded around 0 4.8
rmApplied *-un-lft-identity4.8
Applied associate-*r*4.8
Simplified4.8
Taylor expanded around inf 2.1
Final simplification4.1
herbie shell --seed 2019174
(FPCore (x y z t a b c i j k)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, E"
:herbie-target
(if (< t -1.6210815397541398e-69) (- (- (* (* 18.0 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4.0)) (- (* (* k j) 27.0) (* c b))) (if (< t 165.68027943805222) (+ (- (* (* 18.0 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4.0)) (- (* c b) (* 27.0 (* k j)))) (- (- (* (* 18.0 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4.0)) (- (* (* k j) 27.0) (* c b)))))
(- (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) (* (* j 27.0) k)))