\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -1.412584965026174356547481107780761150371 \cdot 10^{211}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{elif}\;z \le -2.580684021360039689076100657919132626783 \cdot 10^{160}:\\
\;\;\;\;\frac{\frac{y}{t \cdot z - x} \cdot z + x}{\left(x + 1\right) \cdot 1} - \sqrt[3]{{\left(\frac{\frac{x}{t \cdot z - x}}{x + 1}\right)}^{3}}\\
\mathbf{elif}\;z \le -2.966830251509030236990636984311025104722 \cdot 10^{118}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{elif}\;z \le 1.03829628730808273860363989281490107116 \cdot 10^{46}:\\
\;\;\;\;\left(x + \frac{y \cdot z - x}{t \cdot z - x}\right) \cdot \frac{1}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{y}{t \cdot z - x} \cdot z + x}{\left(x + 1\right) \cdot 1} - \sqrt[3]{{\left(\frac{\frac{x}{t \cdot z - x}}{x + 1}\right)}^{3}}\\
\end{array}double f(double x, double y, double z, double t) {
double r626833 = x;
double r626834 = y;
double r626835 = z;
double r626836 = r626834 * r626835;
double r626837 = r626836 - r626833;
double r626838 = t;
double r626839 = r626838 * r626835;
double r626840 = r626839 - r626833;
double r626841 = r626837 / r626840;
double r626842 = r626833 + r626841;
double r626843 = 1.0;
double r626844 = r626833 + r626843;
double r626845 = r626842 / r626844;
return r626845;
}
double f(double x, double y, double z, double t) {
double r626846 = z;
double r626847 = -1.4125849650261744e+211;
bool r626848 = r626846 <= r626847;
double r626849 = x;
double r626850 = y;
double r626851 = t;
double r626852 = r626850 / r626851;
double r626853 = r626849 + r626852;
double r626854 = 1.0;
double r626855 = r626849 + r626854;
double r626856 = r626853 / r626855;
double r626857 = -2.5806840213600397e+160;
bool r626858 = r626846 <= r626857;
double r626859 = r626851 * r626846;
double r626860 = r626859 - r626849;
double r626861 = r626850 / r626860;
double r626862 = r626861 * r626846;
double r626863 = r626862 + r626849;
double r626864 = 1.0;
double r626865 = r626855 * r626864;
double r626866 = r626863 / r626865;
double r626867 = r626849 / r626860;
double r626868 = r626867 / r626855;
double r626869 = 3.0;
double r626870 = pow(r626868, r626869);
double r626871 = cbrt(r626870);
double r626872 = r626866 - r626871;
double r626873 = -2.9668302515090302e+118;
bool r626874 = r626846 <= r626873;
double r626875 = 1.0382962873080827e+46;
bool r626876 = r626846 <= r626875;
double r626877 = r626850 * r626846;
double r626878 = r626877 - r626849;
double r626879 = r626878 / r626860;
double r626880 = r626849 + r626879;
double r626881 = r626864 / r626855;
double r626882 = r626880 * r626881;
double r626883 = r626876 ? r626882 : r626872;
double r626884 = r626874 ? r626856 : r626883;
double r626885 = r626858 ? r626872 : r626884;
double r626886 = r626848 ? r626856 : r626885;
return r626886;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.2 |
|---|---|
| Target | 0.4 |
| Herbie | 3.0 |
if z < -1.4125849650261744e+211 or -2.5806840213600397e+160 < z < -2.9668302515090302e+118Initial program 21.8
Taylor expanded around inf 7.5
if -1.4125849650261744e+211 < z < -2.5806840213600397e+160 or 1.0382962873080827e+46 < z Initial program 17.5
rmApplied div-sub17.5
Applied associate-+r-17.5
Applied div-sub17.5
Simplified6.3
rmApplied fma-udef6.3
rmApplied add-cbrt-cube6.3
Applied add-cbrt-cube7.2
Applied add-cbrt-cube30.3
Applied cbrt-undiv30.3
Applied cbrt-undiv30.3
Simplified6.3
if -2.9668302515090302e+118 < z < 1.0382962873080827e+46Initial program 1.0
rmApplied div-inv1.1
Final simplification3.0
herbie shell --seed 2020001 +o rules:numerics
(FPCore (x y z t)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, A"
:precision binary64
:herbie-target
(/ (+ x (- (/ y (- t (/ x z))) (/ x (- (* t z) x)))) (+ x 1))
(/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1)))