\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 r362125 = x;
double r362126 = 0.5;
double r362127 = r362125 - r362126;
double r362128 = log(r362125);
double r362129 = r362127 * r362128;
double r362130 = r362129 - r362125;
double r362131 = 0.91893853320467;
double r362132 = r362130 + r362131;
double r362133 = y;
double r362134 = 0.0007936500793651;
double r362135 = r362133 + r362134;
double r362136 = z;
double r362137 = r362135 * r362136;
double r362138 = 0.0027777777777778;
double r362139 = r362137 - r362138;
double r362140 = r362139 * r362136;
double r362141 = 0.083333333333333;
double r362142 = r362140 + r362141;
double r362143 = r362142 / r362125;
double r362144 = r362132 + r362143;
return r362144;
}
double f(double x, double y, double z) {
double r362145 = y;
double r362146 = 0.0007936500793651;
double r362147 = r362145 + r362146;
double r362148 = z;
double r362149 = r362147 * r362148;
double r362150 = 0.0027777777777778;
double r362151 = r362149 - r362150;
double r362152 = r362151 * r362148;
double r362153 = -3.5209545921624923e+232;
bool r362154 = r362152 <= r362153;
double r362155 = 3.095442877025864e+282;
bool r362156 = r362152 <= r362155;
double r362157 = !r362156;
bool r362158 = r362154 || r362157;
double r362159 = x;
double r362160 = 0.5;
double r362161 = r362159 - r362160;
double r362162 = cbrt(r362159);
double r362163 = r362162 * r362162;
double r362164 = log(r362163);
double r362165 = r362161 * r362164;
double r362166 = log(r362162);
double r362167 = r362166 * r362161;
double r362168 = r362167 - r362159;
double r362169 = 0.91893853320467;
double r362170 = r362168 + r362169;
double r362171 = r362165 + r362170;
double r362172 = 2.0;
double r362173 = pow(r362148, r362172);
double r362174 = r362173 / r362159;
double r362175 = r362174 * r362147;
double r362176 = r362148 / r362159;
double r362177 = r362150 * r362176;
double r362178 = r362175 - r362177;
double r362179 = r362171 + r362178;
double r362180 = sqrt(r362159);
double r362181 = log(r362180);
double r362182 = r362181 * r362161;
double r362183 = r362182 - r362159;
double r362184 = r362183 + r362169;
double r362185 = r362182 + r362184;
double r362186 = 0.083333333333333;
double r362187 = r362152 + r362186;
double r362188 = r362187 / r362159;
double r362189 = r362185 + r362188;
double r362190 = r362158 ? r362179 : r362189;
return r362190;
}




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)))