\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(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \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\\
\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 1.433693085574820316107865306676310981183 \cdot 10^{307}:\\
\;\;\;\;\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(\left(x \cdot 18\right) \cdot \left(y \cdot z\right)\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\\
\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 r765323 = x;
double r765324 = 18.0;
double r765325 = r765323 * r765324;
double r765326 = y;
double r765327 = r765325 * r765326;
double r765328 = z;
double r765329 = r765327 * r765328;
double r765330 = t;
double r765331 = r765329 * r765330;
double r765332 = a;
double r765333 = 4.0;
double r765334 = r765332 * r765333;
double r765335 = r765334 * r765330;
double r765336 = r765331 - r765335;
double r765337 = b;
double r765338 = c;
double r765339 = r765337 * r765338;
double r765340 = r765336 + r765339;
double r765341 = r765323 * r765333;
double r765342 = i;
double r765343 = r765341 * r765342;
double r765344 = r765340 - r765343;
double r765345 = j;
double r765346 = 27.0;
double r765347 = r765345 * r765346;
double r765348 = k;
double r765349 = r765347 * r765348;
double r765350 = r765344 - r765349;
return r765350;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r765351 = x;
double r765352 = 18.0;
double r765353 = r765351 * r765352;
double r765354 = y;
double r765355 = r765353 * r765354;
double r765356 = z;
double r765357 = r765355 * r765356;
double r765358 = t;
double r765359 = r765357 * r765358;
double r765360 = a;
double r765361 = 4.0;
double r765362 = r765360 * r765361;
double r765363 = r765362 * r765358;
double r765364 = r765359 - r765363;
double r765365 = b;
double r765366 = c;
double r765367 = r765365 * r765366;
double r765368 = r765364 + r765367;
double r765369 = r765351 * r765361;
double r765370 = i;
double r765371 = r765369 * r765370;
double r765372 = r765368 - r765371;
double r765373 = -inf.0;
bool r765374 = r765372 <= r765373;
double r765375 = r765356 * r765358;
double r765376 = r765355 * r765375;
double r765377 = r765376 - r765363;
double r765378 = r765377 + r765367;
double r765379 = r765378 - r765371;
double r765380 = j;
double r765381 = 27.0;
double r765382 = r765380 * r765381;
double r765383 = k;
double r765384 = r765382 * r765383;
double r765385 = r765379 - r765384;
double r765386 = 1.4336930855748203e+307;
bool r765387 = r765372 <= r765386;
double r765388 = r765381 * r765383;
double r765389 = r765380 * r765388;
double r765390 = r765372 - r765389;
double r765391 = r765354 * r765356;
double r765392 = r765353 * r765391;
double r765393 = r765392 * r765358;
double r765394 = r765393 - r765363;
double r765395 = r765394 + r765367;
double r765396 = r765395 - r765371;
double r765397 = r765396 - r765384;
double r765398 = r765387 ? r765390 : r765397;
double r765399 = r765374 ? r765385 : r765398;
return r765399;
}




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 | 3.3 |
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*35.4
if -inf.0 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) < 1.4336930855748203e+307Initial program 0.3
rmApplied associate-*l*0.3
if 1.4336930855748203e+307 < (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) Initial program 62.1
rmApplied associate-*l*38.1
Final simplification3.3
herbie shell --seed 2019353
(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)))