\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 r591060 = x;
double r591061 = y;
double r591062 = z;
double r591063 = r591061 * r591062;
double r591064 = r591063 - r591060;
double r591065 = t;
double r591066 = r591065 * r591062;
double r591067 = r591066 - r591060;
double r591068 = r591064 / r591067;
double r591069 = r591060 + r591068;
double r591070 = 1.0;
double r591071 = r591060 + r591070;
double r591072 = r591069 / r591071;
return r591072;
}
double f(double x, double y, double z, double t) {
double r591073 = z;
double r591074 = -1.4125849650261744e+211;
bool r591075 = r591073 <= r591074;
double r591076 = x;
double r591077 = y;
double r591078 = t;
double r591079 = r591077 / r591078;
double r591080 = r591076 + r591079;
double r591081 = 1.0;
double r591082 = r591076 + r591081;
double r591083 = r591080 / r591082;
double r591084 = -2.5806840213600397e+160;
bool r591085 = r591073 <= r591084;
double r591086 = r591078 * r591073;
double r591087 = r591086 - r591076;
double r591088 = r591077 / r591087;
double r591089 = r591088 * r591073;
double r591090 = r591089 + r591076;
double r591091 = 1.0;
double r591092 = r591082 * r591091;
double r591093 = r591090 / r591092;
double r591094 = r591076 / r591087;
double r591095 = r591094 / r591082;
double r591096 = 3.0;
double r591097 = pow(r591095, r591096);
double r591098 = cbrt(r591097);
double r591099 = r591093 - r591098;
double r591100 = -2.9668302515090302e+118;
bool r591101 = r591073 <= r591100;
double r591102 = 1.0382962873080827e+46;
bool r591103 = r591073 <= r591102;
double r591104 = r591077 * r591073;
double r591105 = r591104 - r591076;
double r591106 = r591105 / r591087;
double r591107 = r591076 + r591106;
double r591108 = r591091 / r591082;
double r591109 = r591107 * r591108;
double r591110 = r591103 ? r591109 : r591099;
double r591111 = r591101 ? r591083 : r591110;
double r591112 = r591085 ? r591099 : r591111;
double r591113 = r591075 ? r591083 : r591112;
return r591113;
}




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)))