\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876\right) + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{x}\left(\left(\left(\sqrt{x} + \sqrt{0.5}\right) \cdot \left(\left(\sqrt{x} - \sqrt{0.5}\right) \cdot \log x\right) - x\right) + 0.9189385332046700050057097541866824030876\right) + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{x}double f(double x, double y, double z) {
double r370662 = x;
double r370663 = 0.5;
double r370664 = r370662 - r370663;
double r370665 = log(r370662);
double r370666 = r370664 * r370665;
double r370667 = r370666 - r370662;
double r370668 = 0.91893853320467;
double r370669 = r370667 + r370668;
double r370670 = y;
double r370671 = 0.0007936500793651;
double r370672 = r370670 + r370671;
double r370673 = z;
double r370674 = r370672 * r370673;
double r370675 = 0.0027777777777778;
double r370676 = r370674 - r370675;
double r370677 = r370676 * r370673;
double r370678 = 0.083333333333333;
double r370679 = r370677 + r370678;
double r370680 = r370679 / r370662;
double r370681 = r370669 + r370680;
return r370681;
}
double f(double x, double y, double z) {
double r370682 = x;
double r370683 = sqrt(r370682);
double r370684 = 0.5;
double r370685 = sqrt(r370684);
double r370686 = r370683 + r370685;
double r370687 = r370683 - r370685;
double r370688 = log(r370682);
double r370689 = r370687 * r370688;
double r370690 = r370686 * r370689;
double r370691 = r370690 - r370682;
double r370692 = 0.91893853320467;
double r370693 = r370691 + r370692;
double r370694 = y;
double r370695 = 0.0007936500793651;
double r370696 = r370694 + r370695;
double r370697 = z;
double r370698 = r370696 * r370697;
double r370699 = 0.0027777777777778;
double r370700 = r370698 - r370699;
double r370701 = r370700 * r370697;
double r370702 = 0.083333333333333;
double r370703 = r370701 + r370702;
double r370704 = r370703 / r370682;
double r370705 = r370693 + r370704;
return r370705;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 5.6 |
|---|---|
| Target | 1.0 |
| Herbie | 5.7 |
Initial program 5.6
rmApplied add-sqr-sqrt5.6
Applied add-sqr-sqrt5.7
Applied difference-of-squares5.7
Applied associate-*l*5.7
Final simplification5.7
herbie shell --seed 2019298
(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.91893853320467001 x)) (/ 0.0833333333333329956 x)) (* (/ z x) (- (* z (+ y 7.93650079365100015e-4)) 0.0027777777777778)))
(+ (+ (- (* (- x 0.5) (log x)) x) 0.91893853320467001) (/ (+ (* (- (* (+ y 7.93650079365100015e-4) z) 0.0027777777777778) z) 0.0833333333333329956) x)))