\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}{\mathsf{fma}\left(y, {\left(e^{2}\right)}^{\left(\mathsf{fma}\left(\frac{\frac{2}{t}}{3} - \left(a + \frac{5}{6}\right), b - c, \frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}}\right)\right)}, x\right)}double f(double x, double y, double z, double t, double a, double b, double c) {
double r282406 = x;
double r282407 = y;
double r282408 = 2.0;
double r282409 = z;
double r282410 = t;
double r282411 = a;
double r282412 = r282410 + r282411;
double r282413 = sqrt(r282412);
double r282414 = r282409 * r282413;
double r282415 = r282414 / r282410;
double r282416 = b;
double r282417 = c;
double r282418 = r282416 - r282417;
double r282419 = 5.0;
double r282420 = 6.0;
double r282421 = r282419 / r282420;
double r282422 = r282411 + r282421;
double r282423 = 3.0;
double r282424 = r282410 * r282423;
double r282425 = r282408 / r282424;
double r282426 = r282422 - r282425;
double r282427 = r282418 * r282426;
double r282428 = r282415 - r282427;
double r282429 = r282408 * r282428;
double r282430 = exp(r282429);
double r282431 = r282407 * r282430;
double r282432 = r282406 + r282431;
double r282433 = r282406 / r282432;
return r282433;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r282434 = x;
double r282435 = y;
double r282436 = 2.0;
double r282437 = exp(r282436);
double r282438 = t;
double r282439 = r282436 / r282438;
double r282440 = 3.0;
double r282441 = r282439 / r282440;
double r282442 = a;
double r282443 = 5.0;
double r282444 = 6.0;
double r282445 = r282443 / r282444;
double r282446 = r282442 + r282445;
double r282447 = r282441 - r282446;
double r282448 = b;
double r282449 = c;
double r282450 = r282448 - r282449;
double r282451 = z;
double r282452 = cbrt(r282438);
double r282453 = r282452 * r282452;
double r282454 = r282451 / r282453;
double r282455 = r282438 + r282442;
double r282456 = sqrt(r282455);
double r282457 = r282456 / r282452;
double r282458 = r282454 * r282457;
double r282459 = fma(r282447, r282450, r282458);
double r282460 = pow(r282437, r282459);
double r282461 = fma(r282435, r282460, r282434);
double r282462 = r282434 / r282461;
return r282462;
}




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
| Original | 3.8 |
|---|---|
| Target | 2.9 |
| Herbie | 1.4 |
Initial program 3.8
Simplified2.5
rmApplied add-cube-cbrt2.5
Applied times-frac1.4
Final simplification1.4
herbie shell --seed 2019323 +o rules:numerics
(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)))))))))))