\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\begin{array}{l}
\mathbf{if}\;z \cdot 3 \le -2.315641800986653731087017149548046290874:\\
\;\;\;\;\left(x - \frac{\frac{y}{z}}{3}\right) + t \cdot \frac{\frac{1}{y}}{3 \cdot z}\\
\mathbf{elif}\;z \cdot 3 \le 2.181965382420920083950531709255992849268 \cdot 10^{-43}:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{\frac{t}{y}}{z \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{1}{z} \cdot \frac{y}{3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\\
\end{array}double f(double x, double y, double z, double t) {
double r496797 = x;
double r496798 = y;
double r496799 = z;
double r496800 = 3.0;
double r496801 = r496799 * r496800;
double r496802 = r496798 / r496801;
double r496803 = r496797 - r496802;
double r496804 = t;
double r496805 = r496801 * r496798;
double r496806 = r496804 / r496805;
double r496807 = r496803 + r496806;
return r496807;
}
double f(double x, double y, double z, double t) {
double r496808 = z;
double r496809 = 3.0;
double r496810 = r496808 * r496809;
double r496811 = -2.3156418009866537;
bool r496812 = r496810 <= r496811;
double r496813 = x;
double r496814 = y;
double r496815 = r496814 / r496808;
double r496816 = r496815 / r496809;
double r496817 = r496813 - r496816;
double r496818 = t;
double r496819 = 1.0;
double r496820 = r496819 / r496814;
double r496821 = r496809 * r496808;
double r496822 = r496820 / r496821;
double r496823 = r496818 * r496822;
double r496824 = r496817 + r496823;
double r496825 = 2.18196538242092e-43;
bool r496826 = r496810 <= r496825;
double r496827 = r496814 / r496810;
double r496828 = r496813 - r496827;
double r496829 = r496818 / r496814;
double r496830 = r496829 / r496810;
double r496831 = r496828 + r496830;
double r496832 = r496819 / r496808;
double r496833 = r496814 / r496809;
double r496834 = r496832 * r496833;
double r496835 = r496813 - r496834;
double r496836 = r496810 * r496814;
double r496837 = r496818 / r496836;
double r496838 = r496835 + r496837;
double r496839 = r496826 ? r496831 : r496838;
double r496840 = r496812 ? r496824 : r496839;
return r496840;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.9 |
|---|---|
| Target | 1.9 |
| Herbie | 0.3 |
if (* z 3.0) < -2.3156418009866537Initial program 0.4
rmApplied add-cube-cbrt0.6
Applied times-frac2.0
rmApplied div-inv2.0
Applied associate-*r*1.4
Simplified1.2
rmApplied associate-/r*1.1
rmApplied div-inv1.1
Applied associate-*l*0.3
Simplified0.3
if -2.3156418009866537 < (* z 3.0) < 2.18196538242092e-43Initial program 12.1
rmApplied add-cube-cbrt12.3
Applied times-frac1.1
rmApplied associate-*l/0.6
Simplified0.3
if 2.18196538242092e-43 < (* z 3.0) Initial program 0.3
rmApplied *-un-lft-identity0.3
Applied times-frac0.4
Final simplification0.3
herbie shell --seed 2019323
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, H"
:precision binary64
:herbie-target
(+ (- x (/ y (* z 3))) (/ (/ t (* z 3)) y))
(+ (- x (/ y (* z 3))) (/ t (* (* z 3) y))))