x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}\begin{array}{l}
\mathbf{if}\;y \le -1662637735122736681347178207859907550511000:\\
\;\;\;\;\left(x - \frac{2}{\sqrt[3]{2 \cdot z - \frac{t \cdot y}{z}}} \cdot \frac{y}{\sqrt[3]{2 \cdot z - \frac{t \cdot y}{z}} \cdot \sqrt[3]{2 \cdot z - \frac{t \cdot y}{z}}}\right) + \frac{y}{\sqrt[3]{2 \cdot z - \frac{t \cdot y}{z}} \cdot \sqrt[3]{2 \cdot z - \frac{t \cdot y}{z}}} \cdot \left(\left(-\frac{2}{\sqrt[3]{2 \cdot z - \frac{t \cdot y}{z}}}\right) + \frac{2}{\sqrt[3]{2 \cdot z - \frac{t \cdot y}{z}}}\right)\\
\mathbf{else}:\\
\;\;\;\;x - \frac{y \cdot 2}{2 \cdot z - t \cdot \frac{y}{z}}\\
\end{array}double f(double x, double y, double z, double t) {
double r515660 = x;
double r515661 = y;
double r515662 = 2.0;
double r515663 = r515661 * r515662;
double r515664 = z;
double r515665 = r515663 * r515664;
double r515666 = r515664 * r515662;
double r515667 = r515666 * r515664;
double r515668 = t;
double r515669 = r515661 * r515668;
double r515670 = r515667 - r515669;
double r515671 = r515665 / r515670;
double r515672 = r515660 - r515671;
return r515672;
}
double f(double x, double y, double z, double t) {
double r515673 = y;
double r515674 = -1.6626377351227367e+42;
bool r515675 = r515673 <= r515674;
double r515676 = x;
double r515677 = 2.0;
double r515678 = z;
double r515679 = r515677 * r515678;
double r515680 = t;
double r515681 = r515680 * r515673;
double r515682 = r515681 / r515678;
double r515683 = r515679 - r515682;
double r515684 = cbrt(r515683);
double r515685 = r515677 / r515684;
double r515686 = r515684 * r515684;
double r515687 = r515673 / r515686;
double r515688 = r515685 * r515687;
double r515689 = r515676 - r515688;
double r515690 = -r515685;
double r515691 = r515690 + r515685;
double r515692 = r515687 * r515691;
double r515693 = r515689 + r515692;
double r515694 = r515673 * r515677;
double r515695 = r515673 / r515678;
double r515696 = r515680 * r515695;
double r515697 = r515679 - r515696;
double r515698 = r515694 / r515697;
double r515699 = r515676 - r515698;
double r515700 = r515675 ? r515693 : r515699;
return r515700;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 11.5 |
|---|---|
| Target | 0.1 |
| Herbie | 2.4 |
if y < -1.6626377351227367e+42Initial program 19.9
rmApplied associate-/l*11.0
Taylor expanded around 0 5.3
rmApplied add-cube-cbrt5.6
Applied times-frac5.5
Applied add-sqr-sqrt34.0
Applied prod-diff34.0
Simplified5.5
Simplified5.5
if -1.6626377351227367e+42 < y Initial program 9.1
rmApplied associate-/l*5.6
Taylor expanded around 0 2.3
rmApplied *-un-lft-identity2.3
Applied times-frac1.6
Simplified1.6
Final simplification2.4
herbie shell --seed 2020002 +o rules:numerics
(FPCore (x y z t)
:name "Numeric.AD.Rank1.Halley:findZero from ad-4.2.4"
:precision binary64
:herbie-target
(- x (/ 1 (- (/ z y) (/ (/ t 2) z))))
(- x (/ (* (* y 2) z) (- (* (* z 2) z) (* y t)))))