\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 r484416 = x;
double r484417 = y;
double r484418 = 2.0;
double r484419 = z;
double r484420 = t;
double r484421 = a;
double r484422 = r484420 + r484421;
double r484423 = sqrt(r484422);
double r484424 = r484419 * r484423;
double r484425 = r484424 / r484420;
double r484426 = b;
double r484427 = c;
double r484428 = r484426 - r484427;
double r484429 = 5.0;
double r484430 = 6.0;
double r484431 = r484429 / r484430;
double r484432 = r484421 + r484431;
double r484433 = 3.0;
double r484434 = r484420 * r484433;
double r484435 = r484418 / r484434;
double r484436 = r484432 - r484435;
double r484437 = r484428 * r484436;
double r484438 = r484425 - r484437;
double r484439 = r484418 * r484438;
double r484440 = exp(r484439);
double r484441 = r484417 * r484440;
double r484442 = r484416 + r484441;
double r484443 = r484416 / r484442;
return r484443;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r484444 = x;
double r484445 = y;
double r484446 = 2.0;
double r484447 = z;
double r484448 = t;
double r484449 = cbrt(r484448);
double r484450 = r484449 * r484449;
double r484451 = r484447 / r484450;
double r484452 = a;
double r484453 = r484448 + r484452;
double r484454 = sqrt(r484453);
double r484455 = r484454 / r484449;
double r484456 = r484451 * r484455;
double r484457 = b;
double r484458 = c;
double r484459 = r484457 - r484458;
double r484460 = 5.0;
double r484461 = 6.0;
double r484462 = r484460 / r484461;
double r484463 = r484452 + r484462;
double r484464 = 3.0;
double r484465 = r484448 * r484464;
double r484466 = r484446 / r484465;
double r484467 = r484463 - r484466;
double r484468 = r484459 * r484467;
double r484469 = r484456 - r484468;
double r484470 = r484446 * r484469;
double r484471 = exp(r484470);
double r484472 = r484445 * r484471;
double r484473 = r484444 + r484472;
double r484474 = r484444 / r484473;
return r484474;
}




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 | 3.1 |
| Herbie | 2.6 |
Initial program 3.8
rmApplied add-cube-cbrt3.8
Applied times-frac2.6
Final simplification2.6
herbie shell --seed 2020060
(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.118326644891581e-50) (/ x (+ x (* y (exp (* 2 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b))))))) (if (< t 5.196588770651547e-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)))))))))))