\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 -4.69108630807474606 \cdot 10^{73}:\\
\;\;\;\;t \cdot \left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + j \cdot \left(27 \cdot k\right)\right)\right)\\
\mathbf{elif}\;z \le 1.310910086329059 \cdot 10^{-90}:\\
\;\;\;\;t \cdot \left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right) - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + \left(j \cdot 27\right) \cdot k\right)\right)\\
\mathbf{else}:\\
\;\;\;\;t \cdot \left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \sqrt{z}\right) \cdot \sqrt{z} - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + \left(j \cdot 27\right) \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 r1576339 = x;
double r1576340 = 18.0;
double r1576341 = r1576339 * r1576340;
double r1576342 = y;
double r1576343 = r1576341 * r1576342;
double r1576344 = z;
double r1576345 = r1576343 * r1576344;
double r1576346 = t;
double r1576347 = r1576345 * r1576346;
double r1576348 = a;
double r1576349 = 4.0;
double r1576350 = r1576348 * r1576349;
double r1576351 = r1576350 * r1576346;
double r1576352 = r1576347 - r1576351;
double r1576353 = b;
double r1576354 = c;
double r1576355 = r1576353 * r1576354;
double r1576356 = r1576352 + r1576355;
double r1576357 = r1576339 * r1576349;
double r1576358 = i;
double r1576359 = r1576357 * r1576358;
double r1576360 = r1576356 - r1576359;
double r1576361 = j;
double r1576362 = 27.0;
double r1576363 = r1576361 * r1576362;
double r1576364 = k;
double r1576365 = r1576363 * r1576364;
double r1576366 = r1576360 - r1576365;
return r1576366;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r1576367 = z;
double r1576368 = -4.691086308074746e+73;
bool r1576369 = r1576367 <= r1576368;
double r1576370 = t;
double r1576371 = x;
double r1576372 = 18.0;
double r1576373 = r1576371 * r1576372;
double r1576374 = y;
double r1576375 = r1576373 * r1576374;
double r1576376 = r1576375 * r1576367;
double r1576377 = a;
double r1576378 = 4.0;
double r1576379 = r1576377 * r1576378;
double r1576380 = r1576376 - r1576379;
double r1576381 = r1576370 * r1576380;
double r1576382 = b;
double r1576383 = c;
double r1576384 = r1576382 * r1576383;
double r1576385 = r1576371 * r1576378;
double r1576386 = i;
double r1576387 = r1576385 * r1576386;
double r1576388 = j;
double r1576389 = 27.0;
double r1576390 = k;
double r1576391 = r1576389 * r1576390;
double r1576392 = r1576388 * r1576391;
double r1576393 = r1576387 + r1576392;
double r1576394 = r1576384 - r1576393;
double r1576395 = r1576381 + r1576394;
double r1576396 = 1.310910086329059e-90;
bool r1576397 = r1576367 <= r1576396;
double r1576398 = r1576374 * r1576367;
double r1576399 = r1576373 * r1576398;
double r1576400 = r1576399 - r1576379;
double r1576401 = r1576370 * r1576400;
double r1576402 = r1576388 * r1576389;
double r1576403 = r1576402 * r1576390;
double r1576404 = r1576387 + r1576403;
double r1576405 = r1576384 - r1576404;
double r1576406 = r1576401 + r1576405;
double r1576407 = sqrt(r1576367);
double r1576408 = r1576375 * r1576407;
double r1576409 = r1576408 * r1576407;
double r1576410 = r1576409 - r1576379;
double r1576411 = r1576370 * r1576410;
double r1576412 = r1576411 + r1576405;
double r1576413 = r1576397 ? r1576406 : r1576412;
double r1576414 = r1576369 ? r1576395 : r1576413;
return r1576414;
}




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.4 |
|---|---|
| Target | 1.7 |
| Herbie | 3.7 |
if z < -4.691086308074746e+73Initial program 7.7
Simplified7.7
rmApplied associate-*l*8.0
if -4.691086308074746e+73 < z < 1.310910086329059e-90Initial program 4.7
Simplified4.7
rmApplied associate-*l*1.4
if 1.310910086329059e-90 < z Initial program 5.5
Simplified5.5
rmApplied add-sqr-sqrt5.5
Applied associate-*r*5.5
Final simplification3.7
herbie shell --seed 2020057
(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)))