\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(\sqrt[3]{x} \cdot \left(1 \cdot \left({\left(\sqrt{x}\right)}^{\frac{1}{3}} \cdot {\left(\sqrt{x}\right)}^{\frac{1}{3}}\right)\right)\right) + \left(\left(\log \left({\left(\sqrt{x}\right)}^{\frac{1}{3}} \cdot {\left(\sqrt{x}\right)}^{\frac{1}{3}}\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 r633735 = x;
double r633736 = 0.5;
double r633737 = r633735 - r633736;
double r633738 = log(r633735);
double r633739 = r633737 * r633738;
double r633740 = r633739 - r633735;
double r633741 = 0.91893853320467;
double r633742 = r633740 + r633741;
double r633743 = y;
double r633744 = 0.0007936500793651;
double r633745 = r633743 + r633744;
double r633746 = z;
double r633747 = r633745 * r633746;
double r633748 = 0.0027777777777778;
double r633749 = r633747 - r633748;
double r633750 = r633749 * r633746;
double r633751 = 0.083333333333333;
double r633752 = r633750 + r633751;
double r633753 = r633752 / r633735;
double r633754 = r633742 + r633753;
return r633754;
}
double f(double x, double y, double z) {
double r633755 = x;
double r633756 = 0.5;
double r633757 = r633755 - r633756;
double r633758 = cbrt(r633755);
double r633759 = 1.0;
double r633760 = sqrt(r633755);
double r633761 = 0.3333333333333333;
double r633762 = pow(r633760, r633761);
double r633763 = r633762 * r633762;
double r633764 = r633759 * r633763;
double r633765 = r633758 * r633764;
double r633766 = log(r633765);
double r633767 = r633757 * r633766;
double r633768 = log(r633763);
double r633769 = r633768 * r633757;
double r633770 = r633769 - r633755;
double r633771 = 0.91893853320467;
double r633772 = r633770 + r633771;
double r633773 = r633767 + r633772;
double r633774 = y;
double r633775 = 0.0007936500793651;
double r633776 = r633774 + r633775;
double r633777 = z;
double r633778 = r633776 * r633777;
double r633779 = 0.0027777777777778;
double r633780 = r633778 - r633779;
double r633781 = r633780 * r633777;
double r633782 = 0.083333333333333;
double r633783 = r633781 + r633782;
double r633784 = r633783 / r633755;
double r633785 = r633773 + r633784;
return r633785;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 5.9 |
|---|---|
| Target | 1.2 |
| Herbie | 5.9 |
Initial program 5.9
rmApplied add-cube-cbrt5.9
Applied log-prod5.9
Applied distribute-lft-in5.9
Applied associate--l+5.9
Applied associate-+l+5.9
Simplified5.9
rmApplied *-un-lft-identity5.9
Applied cbrt-prod5.9
Simplified5.9
Simplified5.9
rmApplied add-sqr-sqrt5.9
Applied unpow-prod-down5.9
rmApplied add-sqr-sqrt5.9
Applied cbrt-prod5.9
Simplified5.9
Simplified5.9
Final simplification5.9
herbie shell --seed 2020035
(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)))