\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\begin{array}{l}
\mathbf{if}\;z \cdot \left(\left(0.0007936500793651 + y\right) \cdot z - 0.0027777777777778\right) \le -3.432525363345576 \cdot 10^{-11}:\\
\;\;\;\;\left(\left(\log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \left(x - 0.5\right) + \left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x}\right) - x\right)\right) + 0.91893853320467\right) + \left(\left(0.0007936500793651 + y\right) \cdot \frac{z \cdot z}{x} - \frac{z}{x} \cdot 0.0027777777777778\right)\\
\mathbf{elif}\;z \cdot \left(\left(0.0007936500793651 + y\right) \cdot z - 0.0027777777777778\right) \le 9.449329761537006 \cdot 10^{+294}:\\
\;\;\;\;\left(0.91893853320467 + \left(\log x \cdot \left(x - 0.5\right) - x\right)\right) + \left(0.083333333333333 + z \cdot \left(\left(0.0007936500793651 + y\right) \cdot z - 0.0027777777777778\right)\right) \cdot \frac{1}{x}\\
\mathbf{else}:\\
\;\;\;\;\left(0.91893853320467 + \left(\log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \left(x - 0.5\right) + \left(\left(x - 0.5\right) \cdot \log \left({\left({x}^{\left(\sqrt{\frac{1}{3}}\right)}\right)}^{\left(\sqrt{\frac{1}{3}}\right)}\right) - x\right)\right)\right) + \left(\left(\frac{z \cdot 0.0007936500793651}{\frac{x}{z}} - \frac{z}{x} \cdot 0.0027777777777778\right) + \frac{0.083333333333333}{x}\right)\\
\end{array}double f(double x, double y, double z) {
double r24398283 = x;
double r24398284 = 0.5;
double r24398285 = r24398283 - r24398284;
double r24398286 = log(r24398283);
double r24398287 = r24398285 * r24398286;
double r24398288 = r24398287 - r24398283;
double r24398289 = 0.91893853320467;
double r24398290 = r24398288 + r24398289;
double r24398291 = y;
double r24398292 = 0.0007936500793651;
double r24398293 = r24398291 + r24398292;
double r24398294 = z;
double r24398295 = r24398293 * r24398294;
double r24398296 = 0.0027777777777778;
double r24398297 = r24398295 - r24398296;
double r24398298 = r24398297 * r24398294;
double r24398299 = 0.083333333333333;
double r24398300 = r24398298 + r24398299;
double r24398301 = r24398300 / r24398283;
double r24398302 = r24398290 + r24398301;
return r24398302;
}
double f(double x, double y, double z) {
double r24398303 = z;
double r24398304 = 0.0007936500793651;
double r24398305 = y;
double r24398306 = r24398304 + r24398305;
double r24398307 = r24398306 * r24398303;
double r24398308 = 0.0027777777777778;
double r24398309 = r24398307 - r24398308;
double r24398310 = r24398303 * r24398309;
double r24398311 = -3.432525363345576e-11;
bool r24398312 = r24398310 <= r24398311;
double r24398313 = x;
double r24398314 = cbrt(r24398313);
double r24398315 = r24398314 * r24398314;
double r24398316 = log(r24398315);
double r24398317 = 0.5;
double r24398318 = r24398313 - r24398317;
double r24398319 = r24398316 * r24398318;
double r24398320 = log(r24398314);
double r24398321 = r24398318 * r24398320;
double r24398322 = r24398321 - r24398313;
double r24398323 = r24398319 + r24398322;
double r24398324 = 0.91893853320467;
double r24398325 = r24398323 + r24398324;
double r24398326 = r24398303 * r24398303;
double r24398327 = r24398326 / r24398313;
double r24398328 = r24398306 * r24398327;
double r24398329 = r24398303 / r24398313;
double r24398330 = r24398329 * r24398308;
double r24398331 = r24398328 - r24398330;
double r24398332 = r24398325 + r24398331;
double r24398333 = 9.449329761537006e+294;
bool r24398334 = r24398310 <= r24398333;
double r24398335 = log(r24398313);
double r24398336 = r24398335 * r24398318;
double r24398337 = r24398336 - r24398313;
double r24398338 = r24398324 + r24398337;
double r24398339 = 0.083333333333333;
double r24398340 = r24398339 + r24398310;
double r24398341 = 1.0;
double r24398342 = r24398341 / r24398313;
double r24398343 = r24398340 * r24398342;
double r24398344 = r24398338 + r24398343;
double r24398345 = 0.3333333333333333;
double r24398346 = sqrt(r24398345);
double r24398347 = pow(r24398313, r24398346);
double r24398348 = pow(r24398347, r24398346);
double r24398349 = log(r24398348);
double r24398350 = r24398318 * r24398349;
double r24398351 = r24398350 - r24398313;
double r24398352 = r24398319 + r24398351;
double r24398353 = r24398324 + r24398352;
double r24398354 = r24398303 * r24398304;
double r24398355 = r24398313 / r24398303;
double r24398356 = r24398354 / r24398355;
double r24398357 = r24398356 - r24398330;
double r24398358 = r24398339 / r24398313;
double r24398359 = r24398357 + r24398358;
double r24398360 = r24398353 + r24398359;
double r24398361 = r24398334 ? r24398344 : r24398360;
double r24398362 = r24398312 ? r24398332 : r24398361;
return r24398362;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 5.6 |
|---|---|
| Target | 1.1 |
| Herbie | 2.0 |
if (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) < -3.432525363345576e-11Initial program 15.4
rmApplied add-cube-cbrt15.4
Applied log-prod15.4
Applied distribute-rgt-in15.4
Applied associate--l+15.4
Taylor expanded around inf 19.6
Simplified9.4
if -3.432525363345576e-11 < (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) < 9.449329761537006e+294Initial program 0.2
rmApplied div-inv0.4
if 9.449329761537006e+294 < (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) Initial program 55.0
rmApplied add-cube-cbrt55.0
Applied log-prod55.0
Applied distribute-rgt-in55.0
Applied associate--l+55.0
Taylor expanded around 0 47.8
Simplified9.7
rmApplied pow1/39.7
rmApplied add-sqr-sqrt9.7
Applied pow-unpow9.7
Final simplification2.0
herbie shell --seed 2019168
(FPCore (x y z)
:name "Numeric.SpecFunctions:$slogFactorial from math-functions-0.1.5.2, B"
: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)))