\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}\left(\left(\left(x - 0.5\right) \cdot \log \left(\sqrt[3]{x} \cdot {\left(\frac{1}{x}\right)}^{\frac{-1}{3}}\right) + \left(\log \left(\sqrt[3]{x}\right) \cdot \left(x - 0.5\right) - x\right)\right) + 0.9189385332046700050057097541866824030876\right) + \frac{\frac{\left(\left(y + 7.936500793651000149400709382518925849581 \cdot 10^{-4}\right) \cdot z - 0.002777777777777800001512975569539776188321\right) \cdot z + 0.08333333333333299564049667651488562114537}{\sqrt{x}}}{\sqrt{x}}double f(double x, double y, double z) {
double r486189 = x;
double r486190 = 0.5;
double r486191 = r486189 - r486190;
double r486192 = log(r486189);
double r486193 = r486191 * r486192;
double r486194 = r486193 - r486189;
double r486195 = 0.91893853320467;
double r486196 = r486194 + r486195;
double r486197 = y;
double r486198 = 0.0007936500793651;
double r486199 = r486197 + r486198;
double r486200 = z;
double r486201 = r486199 * r486200;
double r486202 = 0.0027777777777778;
double r486203 = r486201 - r486202;
double r486204 = r486203 * r486200;
double r486205 = 0.083333333333333;
double r486206 = r486204 + r486205;
double r486207 = r486206 / r486189;
double r486208 = r486196 + r486207;
return r486208;
}
double f(double x, double y, double z) {
double r486209 = x;
double r486210 = 0.5;
double r486211 = r486209 - r486210;
double r486212 = cbrt(r486209);
double r486213 = 1.0;
double r486214 = r486213 / r486209;
double r486215 = -0.3333333333333333;
double r486216 = pow(r486214, r486215);
double r486217 = r486212 * r486216;
double r486218 = log(r486217);
double r486219 = r486211 * r486218;
double r486220 = log(r486212);
double r486221 = r486220 * r486211;
double r486222 = r486221 - r486209;
double r486223 = r486219 + r486222;
double r486224 = 0.91893853320467;
double r486225 = r486223 + r486224;
double r486226 = y;
double r486227 = 0.0007936500793651;
double r486228 = r486226 + r486227;
double r486229 = z;
double r486230 = r486228 * r486229;
double r486231 = 0.0027777777777778;
double r486232 = r486230 - r486231;
double r486233 = r486232 * r486229;
double r486234 = 0.083333333333333;
double r486235 = r486233 + r486234;
double r486236 = sqrt(r486209);
double r486237 = r486235 / r486236;
double r486238 = r486237 / r486236;
double r486239 = r486225 + r486238;
return r486239;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 6.1 |
|---|---|
| Target | 1.1 |
| Herbie | 6.3 |
Initial program 6.1
rmApplied add-cube-cbrt6.1
Applied log-prod6.1
Applied distribute-lft-in6.1
Applied associate--l+6.1
Simplified6.1
Taylor expanded around inf 6.1
rmApplied add-sqr-sqrt6.3
Applied associate-/r*6.3
Final simplification6.3
herbie shell --seed 2019356
(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)))