\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 \le -1.654581372873604285653245436545007261713 \cdot 10^{143}:\\
\;\;\;\;\frac{x}{\frac{a}{0.5}} \cdot y - z \cdot \left(\frac{4.5}{a} \cdot t\right)\\
\mathbf{elif}\;\left(z \cdot 9\right) \cdot t \le -5.35651608434410405542734389883583406978 \cdot 10^{-257} \lor \neg \left(\left(z \cdot 9\right) \cdot t \le 0.0\right) \land \left(z \cdot 9\right) \cdot t \le 8.464150091225659695774595298852786761345 \cdot 10^{254}:\\
\;\;\;\;\left(0.5 \cdot x\right) \cdot \left(y \cdot \frac{1}{a}\right) - \frac{4.5}{\frac{a}{t \cdot z}}\\
\mathbf{else}:\\
\;\;\;\;\frac{0.5}{\frac{a}{y \cdot x}} - \frac{z}{\frac{\frac{a}{t}}{4.5}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r670217 = x;
double r670218 = y;
double r670219 = r670217 * r670218;
double r670220 = z;
double r670221 = 9.0;
double r670222 = r670220 * r670221;
double r670223 = t;
double r670224 = r670222 * r670223;
double r670225 = r670219 - r670224;
double r670226 = a;
double r670227 = 2.0;
double r670228 = r670226 * r670227;
double r670229 = r670225 / r670228;
return r670229;
}
double f(double x, double y, double z, double t, double a) {
double r670230 = z;
double r670231 = 9.0;
double r670232 = r670230 * r670231;
double r670233 = t;
double r670234 = r670232 * r670233;
double r670235 = -1.6545813728736043e+143;
bool r670236 = r670234 <= r670235;
double r670237 = x;
double r670238 = a;
double r670239 = 0.5;
double r670240 = r670238 / r670239;
double r670241 = r670237 / r670240;
double r670242 = y;
double r670243 = r670241 * r670242;
double r670244 = 4.5;
double r670245 = r670244 / r670238;
double r670246 = r670245 * r670233;
double r670247 = r670230 * r670246;
double r670248 = r670243 - r670247;
double r670249 = -5.356516084344104e-257;
bool r670250 = r670234 <= r670249;
double r670251 = 0.0;
bool r670252 = r670234 <= r670251;
double r670253 = !r670252;
double r670254 = 8.46415009122566e+254;
bool r670255 = r670234 <= r670254;
bool r670256 = r670253 && r670255;
bool r670257 = r670250 || r670256;
double r670258 = r670239 * r670237;
double r670259 = 1.0;
double r670260 = r670259 / r670238;
double r670261 = r670242 * r670260;
double r670262 = r670258 * r670261;
double r670263 = r670233 * r670230;
double r670264 = r670238 / r670263;
double r670265 = r670244 / r670264;
double r670266 = r670262 - r670265;
double r670267 = r670242 * r670237;
double r670268 = r670238 / r670267;
double r670269 = r670239 / r670268;
double r670270 = r670238 / r670233;
double r670271 = r670270 / r670244;
double r670272 = r670230 / r670271;
double r670273 = r670269 - r670272;
double r670274 = r670257 ? r670266 : r670273;
double r670275 = r670236 ? r670248 : r670274;
return r670275;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 7.4 |
|---|---|
| Target | 5.4 |
| Herbie | 4.9 |
if (* (* z 9.0) t) < -1.6545813728736043e+143Initial program 21.8
Taylor expanded around 0 21.3
Simplified18.5
rmApplied *-un-lft-identity18.5
Applied times-frac1.9
Applied *-un-lft-identity1.9
Applied times-frac2.2
Simplified2.1
Simplified2.0
rmApplied associate-/r/2.1
Simplified2.1
if -1.6545813728736043e+143 < (* (* z 9.0) t) < -5.356516084344104e-257 or 0.0 < (* (* z 9.0) t) < 8.46415009122566e+254Initial program 3.6
Taylor expanded around 0 3.6
Simplified4.9
rmApplied div-inv5.3
Simplified5.2
if -5.356516084344104e-257 < (* (* z 9.0) t) < 0.0 or 8.46415009122566e+254 < (* (* z 9.0) t) Initial program 13.0
Taylor expanded around 0 12.9
Simplified14.2
rmApplied *-un-lft-identity14.2
Applied times-frac5.4
Applied associate-/r*5.4
Simplified5.3
rmApplied *-un-lft-identity5.3
Applied *-un-lft-identity5.3
Applied distribute-lft-out--5.3
Simplified5.4
Final simplification4.9
herbie shell --seed 2019179
(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)))