\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}double f(double x, double y, double z, double t, double a, double b, double c) {
double r338285 = x;
double r338286 = y;
double r338287 = 2.0;
double r338288 = z;
double r338289 = t;
double r338290 = a;
double r338291 = r338289 + r338290;
double r338292 = sqrt(r338291);
double r338293 = r338288 * r338292;
double r338294 = r338293 / r338289;
double r338295 = b;
double r338296 = c;
double r338297 = r338295 - r338296;
double r338298 = 5.0;
double r338299 = 6.0;
double r338300 = r338298 / r338299;
double r338301 = r338290 + r338300;
double r338302 = 3.0;
double r338303 = r338289 * r338302;
double r338304 = r338287 / r338303;
double r338305 = r338301 - r338304;
double r338306 = r338297 * r338305;
double r338307 = r338294 - r338306;
double r338308 = r338287 * r338307;
double r338309 = exp(r338308);
double r338310 = r338286 * r338309;
double r338311 = r338285 + r338310;
double r338312 = r338285 / r338311;
return r338312;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r338313 = x;
double r338314 = y;
double r338315 = 2.0;
double r338316 = z;
double r338317 = t;
double r338318 = cbrt(r338317);
double r338319 = r338318 * r338318;
double r338320 = r338316 / r338319;
double r338321 = a;
double r338322 = r338317 + r338321;
double r338323 = sqrt(r338322);
double r338324 = r338323 / r338318;
double r338325 = r338320 * r338324;
double r338326 = b;
double r338327 = c;
double r338328 = r338326 - r338327;
double r338329 = 5.0;
double r338330 = 6.0;
double r338331 = r338329 / r338330;
double r338332 = r338321 + r338331;
double r338333 = 3.0;
double r338334 = r338317 * r338333;
double r338335 = r338315 / r338334;
double r338336 = r338332 - r338335;
double r338337 = r338328 * r338336;
double r338338 = r338325 - r338337;
double r338339 = r338315 * r338338;
double r338340 = exp(r338339);
double r338341 = r338314 * r338340;
double r338342 = r338313 + r338341;
double r338343 = r338313 / r338342;
return r338343;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 3.8 |
|---|---|
| Target | 2.9 |
| Herbie | 2.8 |
Initial program 3.8
rmApplied add-cube-cbrt3.8
Applied times-frac2.8
Final simplification2.8
herbie shell --seed 2019304
(FPCore (x y z t a b c)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"
:precision binary64
:herbie-target
(if (< t -2.1183266448915811e-50) (/ x (+ x (* y (exp (* 2 (- (+ (* a c) (* 0.83333333333333337 c)) (* a b))))))) (if (< t 5.19658877065154709e-123) (/ x (+ x (* y (exp (* 2 (/ (- (* (* z (sqrt (+ t a))) (* (* 3 t) (- a (/ 5 6)))) (* (- (* (+ (/ 5 6) a) (* 3 t)) 2) (* (- a (/ 5 6)) (* (- b c) t)))) (* (* (* t t) 3) (- a (/ 5 6))))))))) (/ x (+ x (* y (exp (* 2 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5 6)) (/ 2 (* t 3))))))))))))
(/ x (+ x (* y (exp (* 2 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5 6)) (/ 2 (* t 3)))))))))))