\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}\;t \le -7.467666342330362837578212211978847188411 \cdot 10^{56}:\\
\;\;\;\;\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{27} \cdot \left(\sqrt{27} \cdot \left(k \cdot j\right)\right)\\
\mathbf{elif}\;t \le 1.03627926093686525716420392912551359763 \cdot 10^{45}:\\
\;\;\;\;\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) - 27 \cdot \left(k \cdot j\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(18 \cdot \left(t \cdot \left(x \cdot \left(z \cdot y\right)\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\\
\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 r586461 = x;
double r586462 = 18.0;
double r586463 = r586461 * r586462;
double r586464 = y;
double r586465 = r586463 * r586464;
double r586466 = z;
double r586467 = r586465 * r586466;
double r586468 = t;
double r586469 = r586467 * r586468;
double r586470 = a;
double r586471 = 4.0;
double r586472 = r586470 * r586471;
double r586473 = r586472 * r586468;
double r586474 = r586469 - r586473;
double r586475 = b;
double r586476 = c;
double r586477 = r586475 * r586476;
double r586478 = r586474 + r586477;
double r586479 = r586461 * r586471;
double r586480 = i;
double r586481 = r586479 * r586480;
double r586482 = r586478 - r586481;
double r586483 = j;
double r586484 = 27.0;
double r586485 = r586483 * r586484;
double r586486 = k;
double r586487 = r586485 * r586486;
double r586488 = r586482 - r586487;
return r586488;
}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
double r586489 = t;
double r586490 = -7.467666342330363e+56;
bool r586491 = r586489 <= r586490;
double r586492 = x;
double r586493 = 18.0;
double r586494 = r586492 * r586493;
double r586495 = y;
double r586496 = r586494 * r586495;
double r586497 = z;
double r586498 = r586496 * r586497;
double r586499 = r586498 * r586489;
double r586500 = a;
double r586501 = 4.0;
double r586502 = r586500 * r586501;
double r586503 = r586502 * r586489;
double r586504 = r586499 - r586503;
double r586505 = b;
double r586506 = c;
double r586507 = r586505 * r586506;
double r586508 = r586504 + r586507;
double r586509 = r586492 * r586501;
double r586510 = i;
double r586511 = r586509 * r586510;
double r586512 = r586508 - r586511;
double r586513 = 27.0;
double r586514 = sqrt(r586513);
double r586515 = k;
double r586516 = j;
double r586517 = r586515 * r586516;
double r586518 = r586514 * r586517;
double r586519 = r586514 * r586518;
double r586520 = r586512 - r586519;
double r586521 = 1.0362792609368653e+45;
bool r586522 = r586489 <= r586521;
double r586523 = r586497 * r586489;
double r586524 = r586496 * r586523;
double r586525 = r586524 - r586503;
double r586526 = r586525 + r586507;
double r586527 = r586526 - r586511;
double r586528 = r586513 * r586517;
double r586529 = r586527 - r586528;
double r586530 = r586497 * r586495;
double r586531 = r586492 * r586530;
double r586532 = r586489 * r586531;
double r586533 = r586493 * r586532;
double r586534 = r586533 - r586503;
double r586535 = r586534 + r586507;
double r586536 = r586535 - r586511;
double r586537 = r586516 * r586513;
double r586538 = r586537 * r586515;
double r586539 = r586536 - r586538;
double r586540 = r586522 ? r586529 : r586539;
double r586541 = r586491 ? r586520 : r586540;
return r586541;
}




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.6 |
|---|---|
| Target | 1.5 |
| Herbie | 3.6 |
if t < -7.467666342330363e+56Initial program 1.5
rmApplied associate-*l*1.4
rmApplied *-un-lft-identity1.4
Applied associate-*l*1.4
Simplified1.3
rmApplied add-sqr-sqrt1.3
Applied associate-*l*1.3
if -7.467666342330363e+56 < t < 1.0362792609368653e+45Initial program 7.2
rmApplied associate-*l*7.2
rmApplied *-un-lft-identity7.2
Applied associate-*l*7.2
Simplified7.1
rmApplied associate-*l*4.3
if 1.0362792609368653e+45 < t Initial program 1.8
Taylor expanded around inf 1.9
Final simplification3.6
herbie shell --seed 2019303
(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.680279438052224) (+ (- (* (* 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)))