\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 r367441 = x;
double r367442 = y;
double r367443 = 2.0;
double r367444 = z;
double r367445 = t;
double r367446 = a;
double r367447 = r367445 + r367446;
double r367448 = sqrt(r367447);
double r367449 = r367444 * r367448;
double r367450 = r367449 / r367445;
double r367451 = b;
double r367452 = c;
double r367453 = r367451 - r367452;
double r367454 = 5.0;
double r367455 = 6.0;
double r367456 = r367454 / r367455;
double r367457 = r367446 + r367456;
double r367458 = 3.0;
double r367459 = r367445 * r367458;
double r367460 = r367443 / r367459;
double r367461 = r367457 - r367460;
double r367462 = r367453 * r367461;
double r367463 = r367450 - r367462;
double r367464 = r367443 * r367463;
double r367465 = exp(r367464);
double r367466 = r367442 * r367465;
double r367467 = r367441 + r367466;
double r367468 = r367441 / r367467;
return r367468;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r367469 = x;
double r367470 = y;
double r367471 = 2.0;
double r367472 = z;
double r367473 = t;
double r367474 = cbrt(r367473);
double r367475 = r367474 * r367474;
double r367476 = r367472 / r367475;
double r367477 = a;
double r367478 = r367473 + r367477;
double r367479 = sqrt(r367478);
double r367480 = r367479 / r367474;
double r367481 = r367476 * r367480;
double r367482 = b;
double r367483 = c;
double r367484 = r367482 - r367483;
double r367485 = 5.0;
double r367486 = 6.0;
double r367487 = r367485 / r367486;
double r367488 = r367477 + r367487;
double r367489 = 3.0;
double r367490 = r367473 * r367489;
double r367491 = r367471 / r367490;
double r367492 = r367488 - r367491;
double r367493 = r367484 * r367492;
double r367494 = r367481 - r367493;
double r367495 = r367471 * r367494;
double r367496 = exp(r367495);
double r367497 = r367470 * r367496;
double r367498 = r367469 + r367497;
double r367499 = r367469 / r367498;
return r367499;
}




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.2 |
| Herbie | 2.6 |
Initial program 3.8
rmApplied add-cube-cbrt3.8
Applied times-frac2.6
Final simplification2.6
herbie shell --seed 2020100
(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)))))))))))