\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}{\frac{t}{\sqrt{t + a}}} - \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 r309483 = x;
double r309484 = y;
double r309485 = 2.0;
double r309486 = z;
double r309487 = t;
double r309488 = a;
double r309489 = r309487 + r309488;
double r309490 = sqrt(r309489);
double r309491 = r309486 * r309490;
double r309492 = r309491 / r309487;
double r309493 = b;
double r309494 = c;
double r309495 = r309493 - r309494;
double r309496 = 5.0;
double r309497 = 6.0;
double r309498 = r309496 / r309497;
double r309499 = r309488 + r309498;
double r309500 = 3.0;
double r309501 = r309487 * r309500;
double r309502 = r309485 / r309501;
double r309503 = r309499 - r309502;
double r309504 = r309495 * r309503;
double r309505 = r309492 - r309504;
double r309506 = r309485 * r309505;
double r309507 = exp(r309506);
double r309508 = r309484 * r309507;
double r309509 = r309483 + r309508;
double r309510 = r309483 / r309509;
return r309510;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r309511 = x;
double r309512 = y;
double r309513 = 2.0;
double r309514 = z;
double r309515 = t;
double r309516 = a;
double r309517 = r309515 + r309516;
double r309518 = sqrt(r309517);
double r309519 = r309515 / r309518;
double r309520 = r309514 / r309519;
double r309521 = b;
double r309522 = c;
double r309523 = r309521 - r309522;
double r309524 = 5.0;
double r309525 = 6.0;
double r309526 = r309524 / r309525;
double r309527 = r309516 + r309526;
double r309528 = 3.0;
double r309529 = r309515 * r309528;
double r309530 = r309513 / r309529;
double r309531 = r309527 - r309530;
double r309532 = r309523 * r309531;
double r309533 = r309520 - r309532;
double r309534 = r309513 * r309533;
double r309535 = exp(r309534);
double r309536 = r309512 * r309535;
double r309537 = r309511 + r309536;
double r309538 = r309511 / r309537;
return r309538;
}




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 | 4.2 |
|---|---|
| Target | 3.1 |
| Herbie | 3.4 |
Initial program 4.2
rmApplied associate-/l*3.4
Final simplification3.4
herbie shell --seed 2019326
(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)))))))))))