\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}\;x \le 7033530.257601138:\\
\;\;\;\;\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{0.083333333333333 + \left(\left(0.0007936500793651 + y\right) \cdot \left(z \cdot z\right) - 0.0027777777777778 \cdot z\right)}{x}\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right) - x\right) + \left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right)\right) + 0.91893853320467\right) + \left(\left(0.0007936500793651 + y\right) \cdot \left(z \cdot \frac{z}{x}\right) - 0.0027777777777778 \cdot \frac{z}{x}\right)\\
\end{array}double f(double x, double y, double z) {
double r25034608 = x;
double r25034609 = 0.5;
double r25034610 = r25034608 - r25034609;
double r25034611 = log(r25034608);
double r25034612 = r25034610 * r25034611;
double r25034613 = r25034612 - r25034608;
double r25034614 = 0.91893853320467;
double r25034615 = r25034613 + r25034614;
double r25034616 = y;
double r25034617 = 0.0007936500793651;
double r25034618 = r25034616 + r25034617;
double r25034619 = z;
double r25034620 = r25034618 * r25034619;
double r25034621 = 0.0027777777777778;
double r25034622 = r25034620 - r25034621;
double r25034623 = r25034622 * r25034619;
double r25034624 = 0.083333333333333;
double r25034625 = r25034623 + r25034624;
double r25034626 = r25034625 / r25034608;
double r25034627 = r25034615 + r25034626;
return r25034627;
}
double f(double x, double y, double z) {
double r25034628 = x;
double r25034629 = 7033530.257601138;
bool r25034630 = r25034628 <= r25034629;
double r25034631 = 0.5;
double r25034632 = r25034628 - r25034631;
double r25034633 = log(r25034628);
double r25034634 = r25034632 * r25034633;
double r25034635 = r25034634 - r25034628;
double r25034636 = 0.91893853320467;
double r25034637 = r25034635 + r25034636;
double r25034638 = 0.083333333333333;
double r25034639 = 0.0007936500793651;
double r25034640 = y;
double r25034641 = r25034639 + r25034640;
double r25034642 = z;
double r25034643 = r25034642 * r25034642;
double r25034644 = r25034641 * r25034643;
double r25034645 = 0.0027777777777778;
double r25034646 = r25034645 * r25034642;
double r25034647 = r25034644 - r25034646;
double r25034648 = r25034638 + r25034647;
double r25034649 = r25034648 / r25034628;
double r25034650 = r25034637 + r25034649;
double r25034651 = cbrt(r25034628);
double r25034652 = log(r25034651);
double r25034653 = r25034652 * r25034632;
double r25034654 = r25034653 - r25034628;
double r25034655 = r25034651 * r25034651;
double r25034656 = log(r25034655);
double r25034657 = r25034632 * r25034656;
double r25034658 = r25034654 + r25034657;
double r25034659 = r25034658 + r25034636;
double r25034660 = r25034642 / r25034628;
double r25034661 = r25034642 * r25034660;
double r25034662 = r25034641 * r25034661;
double r25034663 = r25034645 * r25034660;
double r25034664 = r25034662 - r25034663;
double r25034665 = r25034659 + r25034664;
double r25034666 = r25034630 ? r25034650 : r25034665;
return r25034666;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.1 |
|---|---|
| Target | 1.2 |
| Herbie | 0.3 |
if x < 7033530.257601138Initial program 0.1
Taylor expanded around 0 0.1
Simplified0.1
if 7033530.257601138 < x Initial program 10.4
rmApplied add-cube-cbrt10.4
Applied log-prod10.5
Applied distribute-rgt-in10.5
Applied associate--l+10.4
Taylor expanded around inf 10.5
Simplified0.5
Final simplification0.3
herbie shell --seed 2019165 +o rules:numerics
(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)))