\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 177333351812856.5:\\
\;\;\;\;\sqrt{\log \left(\sqrt{x}\right) \cdot \left(\left(x - 0.5\right) + \left(x - 0.5\right)\right) - \left(x - 0.9189385332046700050057097541866824030876\right)} \cdot \sqrt{\log \left(\sqrt{x}\right) \cdot \left(\left(x - 0.5\right) + \left(x - 0.5\right)\right) - \left(x - 0.9189385332046700050057097541866824030876\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(\frac{{z}^{2}}{x} \cdot \left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) - 0.002777777777777800001512975569539776188321 \cdot \frac{z}{x}\right)\\
\end{array}double f(double x, double y, double z) {
double r344562 = x;
double r344563 = 0.5;
double r344564 = r344562 - r344563;
double r344565 = log(r344562);
double r344566 = r344564 * r344565;
double r344567 = r344566 - r344562;
double r344568 = 0.91893853320467;
double r344569 = r344567 + r344568;
double r344570 = y;
double r344571 = 0.0007936500793651;
double r344572 = r344570 + r344571;
double r344573 = z;
double r344574 = r344572 * r344573;
double r344575 = 0.0027777777777778;
double r344576 = r344574 - r344575;
double r344577 = r344576 * r344573;
double r344578 = 0.083333333333333;
double r344579 = r344577 + r344578;
double r344580 = r344579 / r344562;
double r344581 = r344569 + r344580;
return r344581;
}
double f(double x, double y, double z) {
double r344582 = x;
double r344583 = 177333351812856.5;
bool r344584 = r344582 <= r344583;
double r344585 = sqrt(r344582);
double r344586 = log(r344585);
double r344587 = 0.5;
double r344588 = r344582 - r344587;
double r344589 = r344588 + r344588;
double r344590 = r344586 * r344589;
double r344591 = 0.91893853320467;
double r344592 = r344582 - r344591;
double r344593 = r344590 - r344592;
double r344594 = sqrt(r344593);
double r344595 = r344594 * r344594;
double r344596 = y;
double r344597 = 0.0007936500793651;
double r344598 = r344596 + r344597;
double r344599 = z;
double r344600 = r344598 * r344599;
double r344601 = 0.0027777777777778;
double r344602 = r344600 - r344601;
double r344603 = r344602 * r344599;
double r344604 = 0.083333333333333;
double r344605 = r344603 + r344604;
double r344606 = r344605 / r344582;
double r344607 = r344595 + r344606;
double r344608 = cbrt(r344582);
double r344609 = r344608 * r344608;
double r344610 = log(r344609);
double r344611 = r344610 * r344588;
double r344612 = log(r344608);
double r344613 = r344612 * r344588;
double r344614 = r344613 - r344582;
double r344615 = r344614 + r344591;
double r344616 = r344611 + r344615;
double r344617 = 2.0;
double r344618 = pow(r344599, r344617);
double r344619 = r344618 / r344582;
double r344620 = r344619 * r344598;
double r344621 = r344599 / r344582;
double r344622 = r344601 * r344621;
double r344623 = r344620 - r344622;
double r344624 = r344616 + r344623;
double r344625 = r344584 ? r344607 : r344624;
return r344625;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.1 |
|---|---|
| Target | 1.2 |
| Herbie | 4.5 |
if x < 177333351812856.5Initial program 0.2
rmApplied add-sqr-sqrt0.2
Applied log-prod0.2
Applied distribute-lft-in0.2
Applied associate--l+0.2
Applied associate-+l+0.2
Simplified0.2
rmApplied add-sqr-sqrt0.3
Simplified0.3
Simplified0.3
if 177333351812856.5 < x Initial program 10.7
rmApplied add-cube-cbrt10.7
Applied log-prod10.8
Applied distribute-rgt-in10.8
Applied associate--l+10.7
Applied associate-+l+10.7
Taylor expanded around inf 10.8
Simplified7.6
Final simplification4.5
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)))