\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 6.743725811360242913044849532668067028984 \cdot 10^{87}:\\
\;\;\;\;\frac{{\left(\left(x - 0.5\right) \cdot \log x - x\right)}^{3} + {0.9189385332046700050057097541866824030876}^{3}}{0.9189385332046700050057097541866824030876 \cdot \left(0.9189385332046700050057097541866824030876 - \left(\left(x - 0.5\right) \cdot \log x - x\right)\right) + \left(\left(x - 0.5\right) \cdot \log x - x\right) \cdot \left(\left(x - 0.5\right) \cdot \log x - x\right)} + \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) + \left(\left(7.936500793651000149400709382518925849581 \cdot 10^{-4} \cdot \frac{{z}^{2}}{x} + 0.08333333333333299564049667651488562114537 \cdot \frac{1}{x}\right) - 0.002777777777777800001512975569539776188321 \cdot \frac{z}{x}\right)\\
\end{array}double f(double x, double y, double z) {
double r344482 = x;
double r344483 = 0.5;
double r344484 = r344482 - r344483;
double r344485 = log(r344482);
double r344486 = r344484 * r344485;
double r344487 = r344486 - r344482;
double r344488 = 0.91893853320467;
double r344489 = r344487 + r344488;
double r344490 = y;
double r344491 = 0.0007936500793651;
double r344492 = r344490 + r344491;
double r344493 = z;
double r344494 = r344492 * r344493;
double r344495 = 0.0027777777777778;
double r344496 = r344494 - r344495;
double r344497 = r344496 * r344493;
double r344498 = 0.083333333333333;
double r344499 = r344497 + r344498;
double r344500 = r344499 / r344482;
double r344501 = r344489 + r344500;
return r344501;
}
double f(double x, double y, double z) {
double r344502 = x;
double r344503 = 6.743725811360243e+87;
bool r344504 = r344502 <= r344503;
double r344505 = 0.5;
double r344506 = r344502 - r344505;
double r344507 = log(r344502);
double r344508 = r344506 * r344507;
double r344509 = r344508 - r344502;
double r344510 = 3.0;
double r344511 = pow(r344509, r344510);
double r344512 = 0.91893853320467;
double r344513 = pow(r344512, r344510);
double r344514 = r344511 + r344513;
double r344515 = r344512 - r344509;
double r344516 = r344512 * r344515;
double r344517 = r344509 * r344509;
double r344518 = r344516 + r344517;
double r344519 = r344514 / r344518;
double r344520 = y;
double r344521 = 0.0007936500793651;
double r344522 = r344520 + r344521;
double r344523 = z;
double r344524 = r344522 * r344523;
double r344525 = 0.0027777777777778;
double r344526 = r344524 - r344525;
double r344527 = r344526 * r344523;
double r344528 = 0.083333333333333;
double r344529 = r344527 + r344528;
double r344530 = r344529 / r344502;
double r344531 = r344519 + r344530;
double r344532 = cbrt(r344502);
double r344533 = r344532 * r344532;
double r344534 = log(r344533);
double r344535 = r344534 * r344506;
double r344536 = log(r344532);
double r344537 = r344536 * r344506;
double r344538 = r344537 - r344502;
double r344539 = r344538 + r344512;
double r344540 = r344535 + r344539;
double r344541 = 2.0;
double r344542 = pow(r344523, r344541);
double r344543 = r344542 / r344502;
double r344544 = r344521 * r344543;
double r344545 = 1.0;
double r344546 = r344545 / r344502;
double r344547 = r344528 * r344546;
double r344548 = r344544 + r344547;
double r344549 = r344523 / r344502;
double r344550 = r344525 * r344549;
double r344551 = r344548 - r344550;
double r344552 = r344540 + r344551;
double r344553 = r344504 ? r344531 : r344552;
return r344553;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.1 |
|---|---|
| Target | 1.2 |
| Herbie | 5.4 |
if x < 6.743725811360243e+87Initial program 1.1
rmApplied flip3-+1.1
Simplified1.1
if 6.743725811360243e+87 < x Initial program 12.4
rmApplied add-cube-cbrt12.4
Applied log-prod12.5
Applied distribute-rgt-in12.5
Applied associate--l+12.5
Applied associate-+l+12.5
Taylor expanded around 0 10.9
Final simplification5.4
herbie shell --seed 2019308
(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.91893853320467001 x)) (/ 0.0833333333333329956 x)) (* (/ z x) (- (* z (+ y 7.93650079365100015e-4)) 0.0027777777777778)))
(+ (+ (- (* (- x 0.5) (log x)) x) 0.91893853320467001) (/ (+ (* (- (* (+ y 7.93650079365100015e-4) z) 0.0027777777777778) z) 0.0833333333333329956) x)))