\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}\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 \left(1 \cdot {x}^{\frac{1}{3}}\right)\right) + \left(\left(\log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right) - x\right) + 0.91893853320467001\right)\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}double f(double x, double y, double z) {
double r562756 = x;
double r562757 = 0.5;
double r562758 = r562756 - r562757;
double r562759 = log(r562756);
double r562760 = r562758 * r562759;
double r562761 = r562760 - r562756;
double r562762 = 0.91893853320467;
double r562763 = r562761 + r562762;
double r562764 = y;
double r562765 = 0.0007936500793651;
double r562766 = r562764 + r562765;
double r562767 = z;
double r562768 = r562766 * r562767;
double r562769 = 0.0027777777777778;
double r562770 = r562768 - r562769;
double r562771 = r562770 * r562767;
double r562772 = 0.083333333333333;
double r562773 = r562771 + r562772;
double r562774 = r562773 / r562756;
double r562775 = r562763 + r562774;
return r562775;
}
double f(double x, double y, double z) {
double r562776 = x;
double r562777 = 0.5;
double r562778 = r562776 - r562777;
double r562779 = 0.3333333333333333;
double r562780 = pow(r562776, r562779);
double r562781 = 0.6666666666666666;
double r562782 = cbrt(r562781);
double r562783 = r562782 * r562782;
double r562784 = pow(r562780, r562783);
double r562785 = pow(r562784, r562782);
double r562786 = cbrt(r562776);
double r562787 = pow(r562786, r562779);
double r562788 = r562785 * r562787;
double r562789 = 1.0;
double r562790 = r562789 * r562780;
double r562791 = r562788 * r562790;
double r562792 = log(r562791);
double r562793 = r562778 * r562792;
double r562794 = log(r562786);
double r562795 = r562794 * r562778;
double r562796 = r562795 - r562776;
double r562797 = 0.91893853320467;
double r562798 = r562796 + r562797;
double r562799 = r562793 + r562798;
double r562800 = y;
double r562801 = 0.0007936500793651;
double r562802 = r562800 + r562801;
double r562803 = z;
double r562804 = r562802 * r562803;
double r562805 = 0.0027777777777778;
double r562806 = r562804 - r562805;
double r562807 = r562806 * r562803;
double r562808 = 0.083333333333333;
double r562809 = r562807 + r562808;
double r562810 = r562809 / r562776;
double r562811 = r562799 + r562810;
return r562811;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.2 |
|---|---|
| Target | 1.3 |
| Herbie | 6.2 |
Initial program 6.2
rmApplied add-cube-cbrt6.2
Applied log-prod6.2
Applied distribute-lft-in6.2
Applied associate--l+6.2
Applied associate-+l+6.2
Simplified6.2
rmApplied *-un-lft-identity6.2
Applied cbrt-prod6.2
Simplified6.2
Simplified6.2
rmApplied add-cube-cbrt6.2
Simplified6.2
Simplified6.2
rmApplied add-cube-cbrt6.2
Applied pow-unpow6.2
Final simplification6.2
herbie shell --seed 2020060
(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)))