\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}\sqrt{\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001} \cdot \sqrt{\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001} + \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 r493130 = x;
double r493131 = 0.5;
double r493132 = r493130 - r493131;
double r493133 = log(r493130);
double r493134 = r493132 * r493133;
double r493135 = r493134 - r493130;
double r493136 = 0.91893853320467;
double r493137 = r493135 + r493136;
double r493138 = y;
double r493139 = 0.0007936500793651;
double r493140 = r493138 + r493139;
double r493141 = z;
double r493142 = r493140 * r493141;
double r493143 = 0.0027777777777778;
double r493144 = r493142 - r493143;
double r493145 = r493144 * r493141;
double r493146 = 0.083333333333333;
double r493147 = r493145 + r493146;
double r493148 = r493147 / r493130;
double r493149 = r493137 + r493148;
return r493149;
}
double f(double x, double y, double z) {
double r493150 = x;
double r493151 = 0.5;
double r493152 = r493150 - r493151;
double r493153 = log(r493150);
double r493154 = r493152 * r493153;
double r493155 = r493154 - r493150;
double r493156 = 0.91893853320467;
double r493157 = r493155 + r493156;
double r493158 = sqrt(r493157);
double r493159 = r493158 * r493158;
double r493160 = y;
double r493161 = 0.0007936500793651;
double r493162 = r493160 + r493161;
double r493163 = z;
double r493164 = r493162 * r493163;
double r493165 = 0.0027777777777778;
double r493166 = r493164 - r493165;
double r493167 = r493166 * r493163;
double r493168 = 0.083333333333333;
double r493169 = r493167 + r493168;
double r493170 = r493169 / r493150;
double r493171 = r493159 + r493170;
return r493171;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 5.8 |
|---|---|
| Target | 1.0 |
| Herbie | 6.0 |
Initial program 5.8
rmApplied add-sqr-sqrt6.0
Final simplification6.0
herbie shell --seed 2020046
(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)))