\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 r703786 = x;
double r703787 = y;
double r703788 = z;
double r703789 = r703787 * r703788;
double r703790 = r703789 - r703786;
double r703791 = t;
double r703792 = r703791 * r703788;
double r703793 = r703792 - r703786;
double r703794 = r703790 / r703793;
double r703795 = r703786 + r703794;
double r703796 = 1.0;
double r703797 = r703786 + r703796;
double r703798 = r703795 / r703797;
return r703798;
}
double f(double x, double y, double z, double t) {
double r703799 = x;
double r703800 = 1.379014540377949e-298;
bool r703801 = r703799 <= r703800;
double r703802 = y;
double r703803 = z;
double r703804 = t;
double r703805 = r703804 * r703803;
double r703806 = r703805 - r703799;
double r703807 = r703803 / r703806;
double r703808 = r703802 * r703807;
double r703809 = r703799 + r703808;
double r703810 = 1.0;
double r703811 = r703799 + r703810;
double r703812 = r703809 / r703811;
double r703813 = r703799 / r703806;
double r703814 = 3.0;
double r703815 = pow(r703813, r703814);
double r703816 = cbrt(r703815);
double r703817 = r703816 / r703811;
double r703818 = r703812 - r703817;
double r703819 = 2.740266379468141e-249;
bool r703820 = r703799 <= r703819;
double r703821 = r703802 / r703804;
double r703822 = r703799 + r703821;
double r703823 = r703822 / r703811;
double r703824 = cbrt(r703809);
double r703825 = r703824 * r703824;
double r703826 = cbrt(r703811);
double r703827 = r703826 * r703826;
double r703828 = r703825 / r703827;
double r703829 = r703824 / r703826;
double r703830 = r703828 * r703829;
double r703831 = r703813 / r703811;
double r703832 = r703830 - r703831;
double r703833 = r703820 ? r703823 : r703832;
double r703834 = r703801 ? r703818 : r703833;
return r703834;
}




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