\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\begin{array}{l}
\mathbf{if}\;x \cdot y = -\infty:\\
\;\;\;\;\frac{0.5 \cdot x}{\frac{a}{y}} - \left(z \cdot \left(\sqrt[3]{4.5} \cdot \sqrt[3]{4.5}\right)\right) \cdot \left(\frac{\sqrt[3]{4.5}}{a} \cdot t\right)\\
\mathbf{elif}\;x \cdot y \le -4.132036820116678551692351105979607575537 \cdot 10^{-142}:\\
\;\;\;\;\frac{x \cdot y}{2 \cdot a} - \frac{9 \cdot t}{a} \cdot \frac{z}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.5 \cdot x}{\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{\sqrt[3]{y} \cdot \sqrt[3]{y}}}}{\frac{\sqrt[3]{a}}{\sqrt[3]{y}}} - \frac{4.5}{\frac{\frac{a}{z}}{t}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r609005 = x;
double r609006 = y;
double r609007 = r609005 * r609006;
double r609008 = z;
double r609009 = 9.0;
double r609010 = r609008 * r609009;
double r609011 = t;
double r609012 = r609010 * r609011;
double r609013 = r609007 - r609012;
double r609014 = a;
double r609015 = 2.0;
double r609016 = r609014 * r609015;
double r609017 = r609013 / r609016;
return r609017;
}
double f(double x, double y, double z, double t, double a) {
double r609018 = x;
double r609019 = y;
double r609020 = r609018 * r609019;
double r609021 = -inf.0;
bool r609022 = r609020 <= r609021;
double r609023 = 0.5;
double r609024 = r609023 * r609018;
double r609025 = a;
double r609026 = r609025 / r609019;
double r609027 = r609024 / r609026;
double r609028 = z;
double r609029 = 4.5;
double r609030 = cbrt(r609029);
double r609031 = r609030 * r609030;
double r609032 = r609028 * r609031;
double r609033 = r609030 / r609025;
double r609034 = t;
double r609035 = r609033 * r609034;
double r609036 = r609032 * r609035;
double r609037 = r609027 - r609036;
double r609038 = -4.1320368201166786e-142;
bool r609039 = r609020 <= r609038;
double r609040 = 2.0;
double r609041 = r609040 * r609025;
double r609042 = r609020 / r609041;
double r609043 = 9.0;
double r609044 = r609043 * r609034;
double r609045 = r609044 / r609025;
double r609046 = r609028 / r609040;
double r609047 = r609045 * r609046;
double r609048 = r609042 - r609047;
double r609049 = cbrt(r609025);
double r609050 = r609049 * r609049;
double r609051 = cbrt(r609019);
double r609052 = r609051 * r609051;
double r609053 = r609050 / r609052;
double r609054 = r609024 / r609053;
double r609055 = r609049 / r609051;
double r609056 = r609054 / r609055;
double r609057 = r609025 / r609028;
double r609058 = r609057 / r609034;
double r609059 = r609029 / r609058;
double r609060 = r609056 - r609059;
double r609061 = r609039 ? r609048 : r609060;
double r609062 = r609022 ? r609037 : r609061;
return r609062;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 8.1 |
|---|---|
| Target | 5.5 |
| Herbie | 4.8 |
if (* x y) < -inf.0Initial program 64.0
Taylor expanded around 0 64.0
Simplified5.1
rmApplied *-un-lft-identity5.1
Applied times-frac0.3
Applied add-cube-cbrt0.3
Applied times-frac0.3
Simplified0.3
Simplified0.3
if -inf.0 < (* x y) < -4.1320368201166786e-142Initial program 4.2
rmApplied div-sub4.2
Simplified4.2
Simplified4.2
if -4.1320368201166786e-142 < (* x y) Initial program 7.4
Taylor expanded around 0 7.3
Simplified7.3
rmApplied associate-/r*7.2
rmApplied add-cube-cbrt7.5
Applied add-cube-cbrt7.6
Applied times-frac7.6
Applied associate-/r*5.3
Final simplification4.8
herbie shell --seed 2019195
(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)))