\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}\begin{array}{l}
\mathbf{if}\;x \le 2.05678114906993506 \cdot 10^{132}:\\
\;\;\;\;\left(\left(\frac{\left(\left(\sqrt{x} - \sqrt{0.5}\right) \cdot \log x\right) \cdot \left(x + \left(-0.5\right)\right)}{\sqrt{x} - \sqrt{0.5}} - 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}\\
\mathbf{else}:\\
\;\;\;\;\left(\log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \left(x - 0.5\right) + \left(\left(\log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right) - x\right) + 0.91893853320467001\right)\right) + \left(\left(7.93650079365100015 \cdot 10^{-4} \cdot \frac{{z}^{2}}{x} - 0.0027777777777778 \cdot \frac{z}{x}\right) + \frac{0.0833333333333329956}{x}\right)\\
\end{array}double f(double x, double y, double z) {
double r411156 = x;
double r411157 = 0.5;
double r411158 = r411156 - r411157;
double r411159 = log(r411156);
double r411160 = r411158 * r411159;
double r411161 = r411160 - r411156;
double r411162 = 0.91893853320467;
double r411163 = r411161 + r411162;
double r411164 = y;
double r411165 = 0.0007936500793651;
double r411166 = r411164 + r411165;
double r411167 = z;
double r411168 = r411166 * r411167;
double r411169 = 0.0027777777777778;
double r411170 = r411168 - r411169;
double r411171 = r411170 * r411167;
double r411172 = 0.083333333333333;
double r411173 = r411171 + r411172;
double r411174 = r411173 / r411156;
double r411175 = r411163 + r411174;
return r411175;
}
double f(double x, double y, double z) {
double r411176 = x;
double r411177 = 2.056781149069935e+132;
bool r411178 = r411176 <= r411177;
double r411179 = sqrt(r411176);
double r411180 = 0.5;
double r411181 = sqrt(r411180);
double r411182 = r411179 - r411181;
double r411183 = log(r411176);
double r411184 = r411182 * r411183;
double r411185 = -r411180;
double r411186 = r411176 + r411185;
double r411187 = r411184 * r411186;
double r411188 = r411187 / r411182;
double r411189 = r411188 - r411176;
double r411190 = 0.91893853320467;
double r411191 = r411189 + r411190;
double r411192 = y;
double r411193 = 0.0007936500793651;
double r411194 = r411192 + r411193;
double r411195 = z;
double r411196 = r411194 * r411195;
double r411197 = 0.0027777777777778;
double r411198 = r411196 - r411197;
double r411199 = r411198 * r411195;
double r411200 = 0.083333333333333;
double r411201 = r411199 + r411200;
double r411202 = r411201 / r411176;
double r411203 = r411191 + r411202;
double r411204 = cbrt(r411176);
double r411205 = r411204 * r411204;
double r411206 = log(r411205);
double r411207 = r411176 - r411180;
double r411208 = r411206 * r411207;
double r411209 = log(r411204);
double r411210 = r411209 * r411207;
double r411211 = r411210 - r411176;
double r411212 = r411211 + r411190;
double r411213 = r411208 + r411212;
double r411214 = 2.0;
double r411215 = pow(r411195, r411214);
double r411216 = r411215 / r411176;
double r411217 = r411193 * r411216;
double r411218 = r411195 / r411176;
double r411219 = r411197 * r411218;
double r411220 = r411217 - r411219;
double r411221 = r411200 / r411176;
double r411222 = r411220 + r411221;
double r411223 = r411213 + r411222;
double r411224 = r411178 ? r411203 : r411223;
return r411224;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.0 |
|---|---|
| Target | 1.2 |
| Herbie | 5.2 |
if x < 2.056781149069935e+132Initial program 1.9
rmApplied add-sqr-sqrt1.9
Applied add-sqr-sqrt2.0
Applied difference-of-squares2.0
Applied associate-*l*2.0
rmApplied flip-+2.0
Applied associate-*l/2.0
Simplified1.9
if 2.056781149069935e+132 < x Initial program 13.6
rmApplied add-cube-cbrt13.6
Applied log-prod13.7
Applied distribute-rgt-in13.6
Applied associate--l+13.6
Applied associate-+l+13.6
Taylor expanded around 0 11.2
Simplified11.2
Final simplification5.2
herbie shell --seed 2020064
(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)))