\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 5.139606151127303520398748598797844304667 \cdot 10^{-106}:\\
\;\;\;\;x - \left(\frac{\frac{y}{3}}{z} - \frac{\frac{t}{z \cdot 3}}{y}\right)\\
\mathbf{else}:\\
\;\;\;\;x + \left(\frac{t}{\left(z \cdot 3\right) \cdot y} - \frac{\frac{y}{z}}{3}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r1217674 = x;
double r1217675 = y;
double r1217676 = z;
double r1217677 = 3.0;
double r1217678 = r1217676 * r1217677;
double r1217679 = r1217675 / r1217678;
double r1217680 = r1217674 - r1217679;
double r1217681 = t;
double r1217682 = r1217678 * r1217675;
double r1217683 = r1217681 / r1217682;
double r1217684 = r1217680 + r1217683;
return r1217684;
}
double f(double x, double y, double z, double t) {
double r1217685 = z;
double r1217686 = 3.0;
double r1217687 = r1217685 * r1217686;
double r1217688 = 5.139606151127304e-106;
bool r1217689 = r1217687 <= r1217688;
double r1217690 = x;
double r1217691 = y;
double r1217692 = r1217691 / r1217686;
double r1217693 = r1217692 / r1217685;
double r1217694 = t;
double r1217695 = r1217694 / r1217687;
double r1217696 = r1217695 / r1217691;
double r1217697 = r1217693 - r1217696;
double r1217698 = r1217690 - r1217697;
double r1217699 = r1217687 * r1217691;
double r1217700 = r1217694 / r1217699;
double r1217701 = r1217691 / r1217685;
double r1217702 = r1217701 / r1217686;
double r1217703 = r1217700 - r1217702;
double r1217704 = r1217690 + r1217703;
double r1217705 = r1217689 ? r1217698 : r1217704;
return r1217705;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.7 |
|---|---|
| Target | 1.9 |
| Herbie | 1.7 |
if (* z 3.0) < 5.139606151127304e-106Initial program 5.7
rmApplied associate-/r*2.3
rmApplied associate-+l-2.3
Simplified2.3
if 5.139606151127304e-106 < (* z 3.0) Initial program 1.0
rmApplied sub-neg1.0
Applied associate-+l+1.0
Simplified1.0
Final simplification1.7
herbie shell --seed 2019235 +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))))