\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\begin{array}{l}
\mathbf{if}\;\left(z \cdot 9\right) \cdot t = -\infty:\\
\;\;\;\;\frac{x \cdot y}{a \cdot 2} - \frac{9 \cdot t}{a} \cdot \frac{z}{2}\\
\mathbf{elif}\;\left(z \cdot 9\right) \cdot t \le 3.053927322628306114212532979821395041866 \cdot 10^{156}:\\
\;\;\;\;\frac{x \cdot y - \sqrt{9} \cdot \left(\sqrt{9} \cdot \left(t \cdot z\right)\right)}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot y}{a \cdot 2} - \frac{9 \cdot t}{a} \cdot \frac{z}{2}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r83724331 = x;
double r83724332 = y;
double r83724333 = r83724331 * r83724332;
double r83724334 = z;
double r83724335 = 9.0;
double r83724336 = r83724334 * r83724335;
double r83724337 = t;
double r83724338 = r83724336 * r83724337;
double r83724339 = r83724333 - r83724338;
double r83724340 = a;
double r83724341 = 2.0;
double r83724342 = r83724340 * r83724341;
double r83724343 = r83724339 / r83724342;
return r83724343;
}
double f(double x, double y, double z, double t, double a) {
double r83724344 = z;
double r83724345 = 9.0;
double r83724346 = r83724344 * r83724345;
double r83724347 = t;
double r83724348 = r83724346 * r83724347;
double r83724349 = -inf.0;
bool r83724350 = r83724348 <= r83724349;
double r83724351 = x;
double r83724352 = y;
double r83724353 = r83724351 * r83724352;
double r83724354 = a;
double r83724355 = 2.0;
double r83724356 = r83724354 * r83724355;
double r83724357 = r83724353 / r83724356;
double r83724358 = r83724345 * r83724347;
double r83724359 = r83724358 / r83724354;
double r83724360 = r83724344 / r83724355;
double r83724361 = r83724359 * r83724360;
double r83724362 = r83724357 - r83724361;
double r83724363 = 3.053927322628306e+156;
bool r83724364 = r83724348 <= r83724363;
double r83724365 = sqrt(r83724345);
double r83724366 = r83724347 * r83724344;
double r83724367 = r83724365 * r83724366;
double r83724368 = r83724365 * r83724367;
double r83724369 = r83724353 - r83724368;
double r83724370 = r83724369 / r83724356;
double r83724371 = r83724364 ? r83724370 : r83724362;
double r83724372 = r83724350 ? r83724362 : r83724371;
return r83724372;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 7.7 |
|---|---|
| Target | 5.7 |
| Herbie | 4.8 |
if (* (* z 9.0) t) < -inf.0 or 3.053927322628306e+156 < (* (* z 9.0) t) Initial program 33.3
Taylor expanded around inf 33.2
rmApplied add-sqr-sqrt33.2
Applied associate-*l*33.2
rmApplied associate-*r*33.3
rmApplied div-sub33.3
Simplified7.4
if -inf.0 < (* (* z 9.0) t) < 3.053927322628306e+156Initial program 4.4
Taylor expanded around inf 4.4
rmApplied add-sqr-sqrt4.4
Applied associate-*l*4.4
Final simplification4.8
herbie shell --seed 2019173 +o rules:numerics
(FPCore (x y z t a)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, I"
:herbie-target
(if (< a -2.090464557976709e+86) (- (* 0.5 (/ (* y x) a)) (* 4.5 (/ t (/ a z)))) (if (< a 2.144030707833976e+99) (/ (- (* x y) (* z (* 9.0 t))) (* a 2.0)) (- (* (/ y a) (* x 0.5)) (* (/ t a) (* z 4.5)))))
(/ (- (* x y) (* (* z 9.0) t)) (* a 2.0)))