\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;x \le 1.3790145403779491 \cdot 10^{-298}:\\
\;\;\;\;\frac{x + y \cdot \frac{z}{t \cdot z - x}}{x + 1} - \frac{\sqrt[3]{{\left(\frac{x}{t \cdot z - x}\right)}^{3}}}{x + 1}\\
\mathbf{elif}\;x \le 2.74026637946814113 \cdot 10^{-249}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt[3]{x + y \cdot \frac{z}{t \cdot z - x}} \cdot \sqrt[3]{x + y \cdot \frac{z}{t \cdot z - x}}}{\sqrt[3]{x + 1} \cdot \sqrt[3]{x + 1}} \cdot \frac{\sqrt[3]{x + y \cdot \frac{z}{t \cdot z - x}}}{\sqrt[3]{x + 1}} - \frac{\frac{x}{t \cdot z - x}}{x + 1}\\
\end{array}double f(double x, double y, double z, double t) {
double r832106 = x;
double r832107 = y;
double r832108 = z;
double r832109 = r832107 * r832108;
double r832110 = r832109 - r832106;
double r832111 = t;
double r832112 = r832111 * r832108;
double r832113 = r832112 - r832106;
double r832114 = r832110 / r832113;
double r832115 = r832106 + r832114;
double r832116 = 1.0;
double r832117 = r832106 + r832116;
double r832118 = r832115 / r832117;
return r832118;
}
double f(double x, double y, double z, double t) {
double r832119 = x;
double r832120 = 1.379014540377949e-298;
bool r832121 = r832119 <= r832120;
double r832122 = y;
double r832123 = z;
double r832124 = t;
double r832125 = r832124 * r832123;
double r832126 = r832125 - r832119;
double r832127 = r832123 / r832126;
double r832128 = r832122 * r832127;
double r832129 = r832119 + r832128;
double r832130 = 1.0;
double r832131 = r832119 + r832130;
double r832132 = r832129 / r832131;
double r832133 = r832119 / r832126;
double r832134 = 3.0;
double r832135 = pow(r832133, r832134);
double r832136 = cbrt(r832135);
double r832137 = r832136 / r832131;
double r832138 = r832132 - r832137;
double r832139 = 2.740266379468141e-249;
bool r832140 = r832119 <= r832139;
double r832141 = r832122 / r832124;
double r832142 = r832119 + r832141;
double r832143 = r832142 / r832131;
double r832144 = cbrt(r832129);
double r832145 = r832144 * r832144;
double r832146 = cbrt(r832131);
double r832147 = r832146 * r832146;
double r832148 = r832145 / r832147;
double r832149 = r832144 / r832146;
double r832150 = r832148 * r832149;
double r832151 = r832133 / r832131;
double r832152 = r832150 - r832151;
double r832153 = r832140 ? r832143 : r832152;
double r832154 = r832121 ? r832138 : r832153;
return r832154;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.0 |
|---|---|
| Target | 0.4 |
| Herbie | 3.2 |
if x < 1.379014540377949e-298Initial program 6.7
rmApplied div-sub6.7
Applied associate-+r-6.7
Applied div-sub6.7
rmApplied *-un-lft-identity6.7
Applied times-frac2.1
Simplified2.1
rmApplied add-cbrt-cube9.0
Applied add-cbrt-cube30.7
Applied cbrt-undiv30.7
Simplified2.9
if 1.379014540377949e-298 < x < 2.740266379468141e-249Initial program 10.4
Taylor expanded around inf 15.3
if 2.740266379468141e-249 < x Initial program 7.1
rmApplied div-sub7.1
Applied associate-+r-7.1
Applied div-sub7.1
rmApplied *-un-lft-identity7.1
Applied times-frac2.0
Simplified2.0
rmApplied add-cube-cbrt2.8
Applied add-cube-cbrt2.5
Applied times-frac2.5
Final simplification3.2
herbie shell --seed 2020047
(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)))