x + \frac{e^{y \cdot \log \left(\frac{y}{z + y}\right)}}{y}x + \frac{e^{y \cdot \left(2 \cdot \log \left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right)\right) + y \cdot \log \left(\frac{\sqrt[3]{y}}{\sqrt[3]{z + y}}\right)}}{y}double f(double x, double y, double z) {
double r278306 = x;
double r278307 = y;
double r278308 = z;
double r278309 = r278308 + r278307;
double r278310 = r278307 / r278309;
double r278311 = log(r278310);
double r278312 = r278307 * r278311;
double r278313 = exp(r278312);
double r278314 = r278313 / r278307;
double r278315 = r278306 + r278314;
return r278315;
}
double f(double x, double y, double z) {
double r278316 = x;
double r278317 = y;
double r278318 = 2.0;
double r278319 = cbrt(r278317);
double r278320 = z;
double r278321 = r278320 + r278317;
double r278322 = cbrt(r278321);
double r278323 = r278319 / r278322;
double r278324 = log(r278323);
double r278325 = r278318 * r278324;
double r278326 = r278317 * r278325;
double r278327 = r278317 * r278324;
double r278328 = r278326 + r278327;
double r278329 = exp(r278328);
double r278330 = r278329 / r278317;
double r278331 = r278316 + r278330;
return r278331;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 5.4 |
|---|---|
| Target | 0.9 |
| Herbie | 0.9 |
Initial program 5.4
rmApplied add-cube-cbrt19.4
Applied add-cube-cbrt5.4
Applied times-frac5.4
Applied log-prod1.9
Applied distribute-lft-in1.9
Simplified0.9
Final simplification0.9
herbie shell --seed 2019212
(FPCore (x y z)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, G"
:precision binary64
:herbie-target
(if (< (/ y (+ z y)) 7.1154157598e-315) (+ x (/ (exp (/ -1 z)) y)) (+ x (/ (exp (log (pow (/ y (+ y z)) y))) y)))
(+ x (/ (exp (* y (log (/ y (+ z y))))) y)))