\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 \log \left(e^{\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)}}double f(double x, double y, double z, double t, double a, double b, double c) {
double r417500 = x;
double r417501 = y;
double r417502 = 2.0;
double r417503 = z;
double r417504 = t;
double r417505 = a;
double r417506 = r417504 + r417505;
double r417507 = sqrt(r417506);
double r417508 = r417503 * r417507;
double r417509 = r417508 / r417504;
double r417510 = b;
double r417511 = c;
double r417512 = r417510 - r417511;
double r417513 = 5.0;
double r417514 = 6.0;
double r417515 = r417513 / r417514;
double r417516 = r417505 + r417515;
double r417517 = 3.0;
double r417518 = r417504 * r417517;
double r417519 = r417502 / r417518;
double r417520 = r417516 - r417519;
double r417521 = r417512 * r417520;
double r417522 = r417509 - r417521;
double r417523 = r417502 * r417522;
double r417524 = exp(r417523);
double r417525 = r417501 * r417524;
double r417526 = r417500 + r417525;
double r417527 = r417500 / r417526;
return r417527;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r417528 = x;
double r417529 = y;
double r417530 = 2.0;
double r417531 = z;
double r417532 = t;
double r417533 = a;
double r417534 = r417532 + r417533;
double r417535 = sqrt(r417534);
double r417536 = r417531 * r417535;
double r417537 = r417536 / r417532;
double r417538 = b;
double r417539 = c;
double r417540 = r417538 - r417539;
double r417541 = 5.0;
double r417542 = 6.0;
double r417543 = r417541 / r417542;
double r417544 = r417533 + r417543;
double r417545 = 3.0;
double r417546 = r417532 * r417545;
double r417547 = r417530 / r417546;
double r417548 = r417544 - r417547;
double r417549 = r417540 * r417548;
double r417550 = r417537 - r417549;
double r417551 = exp(r417550);
double r417552 = log(r417551);
double r417553 = r417530 * r417552;
double r417554 = exp(r417553);
double r417555 = r417529 * r417554;
double r417556 = r417528 + r417555;
double r417557 = r417528 / r417556;
return r417557;
}




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 | 3.8 |
Initial program 3.8
rmApplied add-log-exp8.0
Applied add-log-exp16.3
Applied diff-log16.3
Simplified3.8
Final simplification3.8
herbie shell --seed 2020001
(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)))))))))))