\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z
\left(x + \mathsf{fma}\left(-\left(y + 0.5\right), \log y, y\right)\right) - zdouble f(double x, double y, double z) {
double r326648 = x;
double r326649 = y;
double r326650 = 0.5;
double r326651 = r326649 + r326650;
double r326652 = log(r326649);
double r326653 = r326651 * r326652;
double r326654 = r326648 - r326653;
double r326655 = r326654 + r326649;
double r326656 = z;
double r326657 = r326655 - r326656;
return r326657;
}
double f(double x, double y, double z) {
double r326658 = x;
double r326659 = y;
double r326660 = 0.5;
double r326661 = r326659 + r326660;
double r326662 = -r326661;
double r326663 = log(r326659);
double r326664 = fma(r326662, r326663, r326659);
double r326665 = r326658 + r326664;
double r326666 = z;
double r326667 = r326665 - r326666;
return r326667;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.1
rmApplied sub-neg0.1
Applied associate-+l+0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2020064 +o rules:numerics
(FPCore (x y z)
:name "Numeric.SpecFunctions:stirlingError from math-functions-0.1.5.2"
:precision binary64
:herbie-target
(- (- (+ y x) z) (* (+ y 0.5) (log y)))
(- (+ (- x (* (+ y 0.5) (log y))) y) z))