\left(\left(x - \left(y + 0.5\right) \cdot \log y\right) + y\right) - z
\left(\left(x + y\right) - \mathsf{fma}\left(\log y, y + 0.5, z\right)\right) + 0 \cdot \mathsf{fma}\left(y + 0.5, \log y, z\right)double f(double x, double y, double z) {
double r263801 = x;
double r263802 = y;
double r263803 = 0.5;
double r263804 = r263802 + r263803;
double r263805 = log(r263802);
double r263806 = r263804 * r263805;
double r263807 = r263801 - r263806;
double r263808 = r263807 + r263802;
double r263809 = z;
double r263810 = r263808 - r263809;
return r263810;
}
double f(double x, double y, double z) {
double r263811 = x;
double r263812 = y;
double r263813 = r263811 + r263812;
double r263814 = log(r263812);
double r263815 = 0.5;
double r263816 = r263812 + r263815;
double r263817 = z;
double r263818 = fma(r263814, r263816, r263817);
double r263819 = r263813 - r263818;
double r263820 = 0.0;
double r263821 = fma(r263816, r263814, r263817);
double r263822 = r263820 * r263821;
double r263823 = r263819 + r263822;
return r263823;
}




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
Simplified0.1
rmApplied add-cube-cbrt0.9
Applied add-cube-cbrt1.3
Applied prod-diff1.3
Simplified0.5
Simplified0.5
Taylor expanded around 0 0.1
Final simplification0.1
herbie shell --seed 2019303 +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))