\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\begin{array}{l}
\mathbf{if}\;x \le 1.993574570781383 \cdot 10^{217}:\\
\;\;\;\;\left(\left(\left(x - 0.5\right) \cdot \log \left(\left({\left({\left({x}^{\frac{1}{3}}\right)}^{\left(\sqrt[3]{\frac{2}{3}} \cdot \sqrt[3]{\frac{2}{3}}\right)}\right)}^{\left(\sqrt[3]{\frac{2}{3}}\right)} \cdot {\left(\sqrt[3]{x}\right)}^{\frac{1}{3}}\right) \cdot \sqrt[3]{x}\right) + \left(\log \left(1 \cdot {x}^{\frac{1}{3}}\right) \cdot \left(x - 0.5\right) - x\right)\right) + 0.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001\right) + \left(\left(7.93650079365100015 \cdot 10^{-4} \cdot \frac{{z}^{2}}{x} + 0.0833333333333329956 \cdot \frac{1}{x}\right) - 0.0027777777777778 \cdot \frac{z}{x}\right)\\
\end{array}double f(double x, double y, double z) {
double r1977 = x;
double r1978 = 0.5;
double r1979 = r1977 - r1978;
double r1980 = log(r1977);
double r1981 = r1979 * r1980;
double r1982 = r1981 - r1977;
double r1983 = 0.91893853320467;
double r1984 = r1982 + r1983;
double r1985 = y;
double r1986 = 0.0007936500793651;
double r1987 = r1985 + r1986;
double r1988 = z;
double r1989 = r1987 * r1988;
double r1990 = 0.0027777777777778;
double r1991 = r1989 - r1990;
double r1992 = r1991 * r1988;
double r1993 = 0.083333333333333;
double r1994 = r1992 + r1993;
double r1995 = r1994 / r1977;
double r1996 = r1984 + r1995;
return r1996;
}
double f(double x, double y, double z) {
double r1997 = x;
double r1998 = 1.993574570781383e+217;
bool r1999 = r1997 <= r1998;
double r2000 = 0.5;
double r2001 = r1997 - r2000;
double r2002 = 0.3333333333333333;
double r2003 = pow(r1997, r2002);
double r2004 = 0.6666666666666666;
double r2005 = cbrt(r2004);
double r2006 = r2005 * r2005;
double r2007 = pow(r2003, r2006);
double r2008 = pow(r2007, r2005);
double r2009 = cbrt(r1997);
double r2010 = pow(r2009, r2002);
double r2011 = r2008 * r2010;
double r2012 = r2011 * r2009;
double r2013 = log(r2012);
double r2014 = r2001 * r2013;
double r2015 = 1.0;
double r2016 = r2015 * r2003;
double r2017 = log(r2016);
double r2018 = r2017 * r2001;
double r2019 = r2018 - r1997;
double r2020 = r2014 + r2019;
double r2021 = 0.91893853320467;
double r2022 = r2020 + r2021;
double r2023 = y;
double r2024 = 0.0007936500793651;
double r2025 = r2023 + r2024;
double r2026 = z;
double r2027 = r2025 * r2026;
double r2028 = 0.0027777777777778;
double r2029 = r2027 - r2028;
double r2030 = r2029 * r2026;
double r2031 = 0.083333333333333;
double r2032 = r2030 + r2031;
double r2033 = r2032 / r1997;
double r2034 = r2022 + r2033;
double r2035 = log(r1997);
double r2036 = r2001 * r2035;
double r2037 = r2036 - r1997;
double r2038 = r2037 + r2021;
double r2039 = 2.0;
double r2040 = pow(r2026, r2039);
double r2041 = r2040 / r1997;
double r2042 = r2024 * r2041;
double r2043 = r2015 / r1997;
double r2044 = r2031 * r2043;
double r2045 = r2042 + r2044;
double r2046 = r2026 / r1997;
double r2047 = r2028 * r2046;
double r2048 = r2045 - r2047;
double r2049 = r2038 + r2048;
double r2050 = r1999 ? r2034 : r2049;
return r2050;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.0 |
|---|---|
| Target | 1.3 |
| Herbie | 5.2 |
if x < 1.993574570781383e+217Initial program 3.8
rmApplied add-cube-cbrt3.8
Applied log-prod3.9
Applied distribute-lft-in3.9
Applied associate--l+3.9
Simplified3.9
rmApplied *-un-lft-identity3.9
Applied cbrt-prod3.9
Simplified3.9
Simplified3.8
rmApplied add-cube-cbrt3.8
Simplified3.9
Simplified3.9
rmApplied add-cube-cbrt3.8
Applied pow-unpow3.8
if 1.993574570781383e+217 < x Initial program 15.2
Taylor expanded around 0 10.9
Final simplification5.2
herbie shell --seed 2020025
(FPCore (x y z)
:name "Numeric.SpecFunctions:$slogFactorial from math-functions-0.1.5.2, B"
:precision binary64
:herbie-target
(+ (+ (+ (* (- x 0.5) (log x)) (- 0.91893853320467 x)) (/ 0.083333333333333 x)) (* (/ z x) (- (* z (+ y 0.0007936500793651)) 0.0027777777777778)))
(+ (+ (- (* (- x 0.5) (log x)) x) 0.91893853320467) (/ (+ (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) 0.083333333333333) x)))