\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 \mathsf{fma}\left(z \cdot \sqrt{t + a}, \frac{1}{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 r325408 = x;
double r325409 = y;
double r325410 = 2.0;
double r325411 = z;
double r325412 = t;
double r325413 = a;
double r325414 = r325412 + r325413;
double r325415 = sqrt(r325414);
double r325416 = r325411 * r325415;
double r325417 = r325416 / r325412;
double r325418 = b;
double r325419 = c;
double r325420 = r325418 - r325419;
double r325421 = 5.0;
double r325422 = 6.0;
double r325423 = r325421 / r325422;
double r325424 = r325413 + r325423;
double r325425 = 3.0;
double r325426 = r325412 * r325425;
double r325427 = r325410 / r325426;
double r325428 = r325424 - r325427;
double r325429 = r325420 * r325428;
double r325430 = r325417 - r325429;
double r325431 = r325410 * r325430;
double r325432 = exp(r325431);
double r325433 = r325409 * r325432;
double r325434 = r325408 + r325433;
double r325435 = r325408 / r325434;
return r325435;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r325436 = x;
double r325437 = y;
double r325438 = 2.0;
double r325439 = z;
double r325440 = t;
double r325441 = a;
double r325442 = r325440 + r325441;
double r325443 = sqrt(r325442);
double r325444 = r325439 * r325443;
double r325445 = 1.0;
double r325446 = r325445 / r325440;
double r325447 = b;
double r325448 = c;
double r325449 = r325447 - r325448;
double r325450 = 5.0;
double r325451 = 6.0;
double r325452 = r325450 / r325451;
double r325453 = r325441 + r325452;
double r325454 = 3.0;
double r325455 = r325440 * r325454;
double r325456 = r325438 / r325455;
double r325457 = r325453 - r325456;
double r325458 = r325449 * r325457;
double r325459 = -r325458;
double r325460 = fma(r325444, r325446, r325459);
double r325461 = r325438 * r325460;
double r325462 = exp(r325461);
double r325463 = r325437 * r325462;
double r325464 = r325436 + r325463;
double r325465 = r325436 / r325464;
return r325465;
}




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 | 4.0 |
|---|---|
| Target | 3.1 |
| Herbie | 2.8 |
Initial program 4.0
rmApplied div-inv4.0
Applied fma-neg2.8
Final simplification2.8
herbie shell --seed 2020062 +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)))))))))))