\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467001\right) + \frac{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}{x}\begin{array}{l}
\mathbf{if}\;\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z \le 2.84987569520092838 \cdot 10^{298}:\\
\;\;\;\;\left(\left(\log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \left(x - 0.5\right) + \left(\log \left({\left(\frac{1}{x}\right)}^{\frac{-1}{3}}\right) \cdot \left(x - 0.5\right) - x\right)\right) + 0.91893853320467001\right) + \frac{1}{\frac{x}{\left(\left(y + 7.93650079365100015 \cdot 10^{-4}\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.0833333333333329956}}\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\log \left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \left(x - 0.5\right) + \left(\log \left({\left(\frac{1}{x}\right)}^{\frac{-1}{3}}\right) \cdot \left(x - 0.5\right) - x\right)\right) + 0.91893853320467001\right) + \frac{1}{\left(0.400000000000006406 \cdot \left(x \cdot z\right) + 12.000000000000048 \cdot x\right) - 0.100952278095241613 \cdot \left(x \cdot {z}^{2}\right)}\\
\end{array}double f(double x, double y, double z) {
double r483087 = x;
double r483088 = 0.5;
double r483089 = r483087 - r483088;
double r483090 = log(r483087);
double r483091 = r483089 * r483090;
double r483092 = r483091 - r483087;
double r483093 = 0.91893853320467;
double r483094 = r483092 + r483093;
double r483095 = y;
double r483096 = 0.0007936500793651;
double r483097 = r483095 + r483096;
double r483098 = z;
double r483099 = r483097 * r483098;
double r483100 = 0.0027777777777778;
double r483101 = r483099 - r483100;
double r483102 = r483101 * r483098;
double r483103 = 0.083333333333333;
double r483104 = r483102 + r483103;
double r483105 = r483104 / r483087;
double r483106 = r483094 + r483105;
return r483106;
}
double f(double x, double y, double z) {
double r483107 = y;
double r483108 = 0.0007936500793651;
double r483109 = r483107 + r483108;
double r483110 = z;
double r483111 = r483109 * r483110;
double r483112 = 0.0027777777777778;
double r483113 = r483111 - r483112;
double r483114 = r483113 * r483110;
double r483115 = 2.8498756952009284e+298;
bool r483116 = r483114 <= r483115;
double r483117 = x;
double r483118 = cbrt(r483117);
double r483119 = r483118 * r483118;
double r483120 = log(r483119);
double r483121 = 0.5;
double r483122 = r483117 - r483121;
double r483123 = r483120 * r483122;
double r483124 = 1.0;
double r483125 = r483124 / r483117;
double r483126 = -0.3333333333333333;
double r483127 = pow(r483125, r483126);
double r483128 = log(r483127);
double r483129 = r483128 * r483122;
double r483130 = r483129 - r483117;
double r483131 = r483123 + r483130;
double r483132 = 0.91893853320467;
double r483133 = r483131 + r483132;
double r483134 = 0.083333333333333;
double r483135 = r483114 + r483134;
double r483136 = r483117 / r483135;
double r483137 = r483124 / r483136;
double r483138 = r483133 + r483137;
double r483139 = 0.4000000000000064;
double r483140 = r483117 * r483110;
double r483141 = r483139 * r483140;
double r483142 = 12.000000000000048;
double r483143 = r483142 * r483117;
double r483144 = r483141 + r483143;
double r483145 = 0.10095227809524161;
double r483146 = 2.0;
double r483147 = pow(r483110, r483146);
double r483148 = r483117 * r483147;
double r483149 = r483145 * r483148;
double r483150 = r483144 - r483149;
double r483151 = r483124 / r483150;
double r483152 = r483133 + r483151;
double r483153 = r483116 ? r483138 : r483152;
return r483153;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.0 |
|---|---|
| Target | 1.3 |
| Herbie | 5.1 |
if (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) < 2.8498756952009284e+298Initial program 1.9
rmApplied add-cube-cbrt1.9
Applied log-prod1.9
Applied distribute-rgt-in1.9
Applied associate--l+1.9
Taylor expanded around inf 1.9
rmApplied clear-num2.0
if 2.8498756952009284e+298 < (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) Initial program 59.9
rmApplied add-cube-cbrt59.9
Applied log-prod59.9
Applied distribute-rgt-in59.9
Applied associate--l+60.0
Taylor expanded around inf 59.9
rmApplied clear-num60.0
Taylor expanded around 0 47.0
Final simplification5.1
herbie shell --seed 2020025
(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)))