\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 -6.370305939298982764420961800964263773328 \cdot 10^{-25} \lor \neg \left(z \cdot 3 \le 25217032.5919179953634738922119140625\right):\\
\;\;\;\;\left(x - \frac{\frac{y}{z}}{3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{\frac{1}{z}}{\frac{y}{\frac{t}{3}}}\\
\end{array}double f(double x, double y, double z, double t) {
double r922677 = x;
double r922678 = y;
double r922679 = z;
double r922680 = 3.0;
double r922681 = r922679 * r922680;
double r922682 = r922678 / r922681;
double r922683 = r922677 - r922682;
double r922684 = t;
double r922685 = r922681 * r922678;
double r922686 = r922684 / r922685;
double r922687 = r922683 + r922686;
return r922687;
}
double f(double x, double y, double z, double t) {
double r922688 = z;
double r922689 = 3.0;
double r922690 = r922688 * r922689;
double r922691 = -6.370305939298983e-25;
bool r922692 = r922690 <= r922691;
double r922693 = 25217032.591917995;
bool r922694 = r922690 <= r922693;
double r922695 = !r922694;
bool r922696 = r922692 || r922695;
double r922697 = x;
double r922698 = y;
double r922699 = r922698 / r922688;
double r922700 = r922699 / r922689;
double r922701 = r922697 - r922700;
double r922702 = t;
double r922703 = r922690 * r922698;
double r922704 = r922702 / r922703;
double r922705 = r922701 + r922704;
double r922706 = r922698 / r922690;
double r922707 = r922697 - r922706;
double r922708 = 1.0;
double r922709 = r922708 / r922688;
double r922710 = r922702 / r922689;
double r922711 = r922698 / r922710;
double r922712 = r922709 / r922711;
double r922713 = r922707 + r922712;
double r922714 = r922696 ? r922705 : r922713;
return r922714;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.6 |
|---|---|
| Target | 1.9 |
| Herbie | 0.3 |
if (* z 3.0) < -6.370305939298983e-25 or 25217032.591917995 < (* z 3.0) Initial program 0.4
rmApplied associate-/r*0.4
if -6.370305939298983e-25 < (* z 3.0) < 25217032.591917995Initial program 10.4
rmApplied associate-/r*3.4
rmApplied *-un-lft-identity3.4
Applied times-frac3.4
Applied associate-/l*0.3
Final simplification0.3
herbie shell --seed 2019362 +o rules:numerics
(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))))