\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\begin{array}{l}
\mathbf{if}\;a \cdot 2 \le -1.356756991660825556619789092465379933879 \cdot 10^{85}:\\
\;\;\;\;0.5 \cdot \frac{x \cdot y}{a} - 4.5 \cdot \left(\frac{t}{\sqrt[3]{a} \cdot \sqrt[3]{a}} \cdot \frac{z}{\sqrt[3]{a}}\right)\\
\mathbf{elif}\;a \cdot 2 \le 523961.87070419988594949245452880859375:\\
\;\;\;\;0.5 \cdot \frac{x \cdot y}{a} - \frac{4.5 \cdot \left(t \cdot z\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot \frac{x \cdot y}{a} - 4.5 \cdot \frac{t}{\frac{a}{z}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r49790339 = x;
double r49790340 = y;
double r49790341 = r49790339 * r49790340;
double r49790342 = z;
double r49790343 = 9.0;
double r49790344 = r49790342 * r49790343;
double r49790345 = t;
double r49790346 = r49790344 * r49790345;
double r49790347 = r49790341 - r49790346;
double r49790348 = a;
double r49790349 = 2.0;
double r49790350 = r49790348 * r49790349;
double r49790351 = r49790347 / r49790350;
return r49790351;
}
double f(double x, double y, double z, double t, double a) {
double r49790352 = a;
double r49790353 = 2.0;
double r49790354 = r49790352 * r49790353;
double r49790355 = -1.3567569916608256e+85;
bool r49790356 = r49790354 <= r49790355;
double r49790357 = 0.5;
double r49790358 = x;
double r49790359 = y;
double r49790360 = r49790358 * r49790359;
double r49790361 = r49790360 / r49790352;
double r49790362 = r49790357 * r49790361;
double r49790363 = 4.5;
double r49790364 = t;
double r49790365 = cbrt(r49790352);
double r49790366 = r49790365 * r49790365;
double r49790367 = r49790364 / r49790366;
double r49790368 = z;
double r49790369 = r49790368 / r49790365;
double r49790370 = r49790367 * r49790369;
double r49790371 = r49790363 * r49790370;
double r49790372 = r49790362 - r49790371;
double r49790373 = 523961.8707041999;
bool r49790374 = r49790354 <= r49790373;
double r49790375 = r49790364 * r49790368;
double r49790376 = r49790363 * r49790375;
double r49790377 = r49790376 / r49790352;
double r49790378 = r49790362 - r49790377;
double r49790379 = r49790352 / r49790368;
double r49790380 = r49790364 / r49790379;
double r49790381 = r49790363 * r49790380;
double r49790382 = r49790362 - r49790381;
double r49790383 = r49790374 ? r49790378 : r49790382;
double r49790384 = r49790356 ? r49790372 : r49790383;
return r49790384;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 8.0 |
|---|---|
| Target | 6.0 |
| Herbie | 5.9 |
if (* a 2.0) < -1.3567569916608256e+85Initial program 13.8
rmApplied associate-*l*13.9
rmApplied associate-*r*13.8
Taylor expanded around 0 13.6
rmApplied add-cube-cbrt14.0
Applied times-frac9.9
if -1.3567569916608256e+85 < (* a 2.0) < 523961.8707041999Initial program 2.1
rmApplied associate-*l*2.1
rmApplied associate-*r*2.1
Taylor expanded around 0 2.1
rmApplied associate-*r/2.1
if 523961.8707041999 < (* a 2.0) Initial program 11.6
rmApplied associate-*l*11.5
rmApplied associate-*r*11.6
Taylor expanded around 0 11.4
rmApplied associate-/l*8.0
Final simplification5.9
herbie shell --seed 2019174
(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)))