\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}\begin{array}{l}
\mathbf{if}\;x \le 3.766513859273963841353065981247573842567 \cdot 10^{142}:\\
\;\;\;\;\sqrt{\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876} \cdot \sqrt{\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.9189385332046700050057097541866824030876} + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{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.9189385332046700050057097541866824030876\right)\right) + \frac{1}{x \cdot \left(z \cdot 0.4000000000000064059868520871532382443547 - {z}^{2} \cdot 0.1009522780952416126654114236771420110017\right) + 12.00000000000004796163466380676254630089 \cdot x}\\
\end{array}double f(double x, double y, double z) {
double r432226 = x;
double r432227 = 0.5;
double r432228 = r432226 - r432227;
double r432229 = log(r432226);
double r432230 = r432228 * r432229;
double r432231 = r432230 - r432226;
double r432232 = 0.91893853320467;
double r432233 = r432231 + r432232;
double r432234 = y;
double r432235 = 0.0007936500793651;
double r432236 = r432234 + r432235;
double r432237 = z;
double r432238 = r432236 * r432237;
double r432239 = 0.0027777777777778;
double r432240 = r432238 - r432239;
double r432241 = r432240 * r432237;
double r432242 = 0.083333333333333;
double r432243 = r432241 + r432242;
double r432244 = r432243 / r432226;
double r432245 = r432233 + r432244;
return r432245;
}
double f(double x, double y, double z) {
double r432246 = x;
double r432247 = 3.766513859273964e+142;
bool r432248 = r432246 <= r432247;
double r432249 = 0.5;
double r432250 = r432246 - r432249;
double r432251 = log(r432246);
double r432252 = r432250 * r432251;
double r432253 = r432252 - r432246;
double r432254 = 0.91893853320467;
double r432255 = r432253 + r432254;
double r432256 = sqrt(r432255);
double r432257 = r432256 * r432256;
double r432258 = y;
double r432259 = 0.0007936500793651;
double r432260 = r432258 + r432259;
double r432261 = z;
double r432262 = r432260 * r432261;
double r432263 = 0.0027777777777778;
double r432264 = r432262 - r432263;
double r432265 = r432264 * r432261;
double r432266 = 0.083333333333333;
double r432267 = r432265 + r432266;
double r432268 = r432267 / r432246;
double r432269 = r432257 + r432268;
double r432270 = cbrt(r432246);
double r432271 = r432270 * r432270;
double r432272 = log(r432271);
double r432273 = r432272 * r432250;
double r432274 = log(r432270);
double r432275 = r432274 * r432250;
double r432276 = r432275 - r432246;
double r432277 = r432276 + r432254;
double r432278 = r432273 + r432277;
double r432279 = 1.0;
double r432280 = 0.4000000000000064;
double r432281 = r432261 * r432280;
double r432282 = 2.0;
double r432283 = pow(r432261, r432282);
double r432284 = 0.10095227809524161;
double r432285 = r432283 * r432284;
double r432286 = r432281 - r432285;
double r432287 = r432246 * r432286;
double r432288 = 12.000000000000048;
double r432289 = r432288 * r432246;
double r432290 = r432287 + r432289;
double r432291 = r432279 / r432290;
double r432292 = r432278 + r432291;
double r432293 = r432248 ? r432269 : r432292;
return r432293;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.0 |
|---|---|
| Target | 1.1 |
| Herbie | 3.1 |
if x < 3.766513859273964e+142Initial program 1.7
rmApplied add-sqr-sqrt1.9
if 3.766513859273964e+142 < x Initial program 14.2
rmApplied add-cube-cbrt14.2
Applied log-prod14.2
Applied distribute-rgt-in14.2
Applied associate--l+14.2
Applied associate-+l+14.2
rmApplied clear-num14.2
Taylor expanded around 0 12.2
Simplified5.4
Final simplification3.1
herbie shell --seed 2019354
(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)))