\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}\;\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z \le -3.520954592162492302099211475988550581985 \cdot 10^{232} \lor \neg \left(\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z \le 3.095442877025864136131057233467329835656 \cdot 10^{282}\right):\\
\;\;\;\;\left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) + \left(\left(\log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right) - x\right) + 0.9189385332046700050057097541866824030876\right)\right) + \left(\frac{{z}^{2}}{x} \cdot \left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) - 0.002777777777777800001512975569539776188321 \cdot \frac{z}{x}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) + \left(\left(\log \left(\sqrt{x}\right) \cdot \left(x - 0.5\right) - x\right) + 0.9189385332046700050057097541866824030876\right)\right) + \frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{x}\\
\end{array}double f(double x, double y, double z) {
double r366532 = x;
double r366533 = 0.5;
double r366534 = r366532 - r366533;
double r366535 = log(r366532);
double r366536 = r366534 * r366535;
double r366537 = r366536 - r366532;
double r366538 = 0.91893853320467;
double r366539 = r366537 + r366538;
double r366540 = y;
double r366541 = 0.0007936500793651;
double r366542 = r366540 + r366541;
double r366543 = z;
double r366544 = r366542 * r366543;
double r366545 = 0.0027777777777778;
double r366546 = r366544 - r366545;
double r366547 = r366546 * r366543;
double r366548 = 0.083333333333333;
double r366549 = r366547 + r366548;
double r366550 = r366549 / r366532;
double r366551 = r366539 + r366550;
return r366551;
}
double f(double x, double y, double z) {
double r366552 = y;
double r366553 = 0.0007936500793651;
double r366554 = r366552 + r366553;
double r366555 = z;
double r366556 = r366554 * r366555;
double r366557 = 0.0027777777777778;
double r366558 = r366556 - r366557;
double r366559 = r366558 * r366555;
double r366560 = -3.5209545921624923e+232;
bool r366561 = r366559 <= r366560;
double r366562 = 3.095442877025864e+282;
bool r366563 = r366559 <= r366562;
double r366564 = !r366563;
bool r366565 = r366561 || r366564;
double r366566 = x;
double r366567 = 0.5;
double r366568 = r366566 - r366567;
double r366569 = cbrt(r366566);
double r366570 = r366569 * r366569;
double r366571 = log(r366570);
double r366572 = r366568 * r366571;
double r366573 = log(r366569);
double r366574 = r366573 * r366568;
double r366575 = r366574 - r366566;
double r366576 = 0.91893853320467;
double r366577 = r366575 + r366576;
double r366578 = r366572 + r366577;
double r366579 = 2.0;
double r366580 = pow(r366555, r366579);
double r366581 = r366580 / r366566;
double r366582 = r366581 * r366554;
double r366583 = r366555 / r366566;
double r366584 = r366557 * r366583;
double r366585 = r366582 - r366584;
double r366586 = r366578 + r366585;
double r366587 = sqrt(r366566);
double r366588 = log(r366587);
double r366589 = r366588 * r366568;
double r366590 = r366589 - r366566;
double r366591 = r366590 + r366576;
double r366592 = r366589 + r366591;
double r366593 = 0.083333333333333;
double r366594 = r366559 + r366593;
double r366595 = r366594 / r366566;
double r366596 = r366592 + r366595;
double r366597 = r366565 ? r366586 : r366596;
return r366597;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.1 |
|---|---|
| Target | 1.2 |
| Herbie | 4.4 |
if (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) < -3.5209545921624923e+232 or 3.095442877025864e+282 < (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) Initial program 51.7
rmApplied add-cube-cbrt51.7
Applied log-prod51.7
Applied distribute-lft-in51.7
Applied associate--l+51.7
Applied associate-+l+51.7
Simplified51.7
Taylor expanded around inf 52.1
Simplified36.4
if -3.5209545921624923e+232 < (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) < 3.095442877025864e+282Initial program 0.2
rmApplied add-sqr-sqrt0.2
Applied log-prod0.2
Applied distribute-rgt-in0.2
Applied associate--l+0.3
Applied associate-+l+0.3
Final simplification4.4
herbie shell --seed 2019323
(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)))