\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}{\frac{t}{\sqrt{t + a}}}\right)\right)}, x\right)}double f(double x, double y, double z, double t, double a, double b, double c) {
double r264573 = x;
double r264574 = y;
double r264575 = 2.0;
double r264576 = z;
double r264577 = t;
double r264578 = a;
double r264579 = r264577 + r264578;
double r264580 = sqrt(r264579);
double r264581 = r264576 * r264580;
double r264582 = r264581 / r264577;
double r264583 = b;
double r264584 = c;
double r264585 = r264583 - r264584;
double r264586 = 5.0;
double r264587 = 6.0;
double r264588 = r264586 / r264587;
double r264589 = r264578 + r264588;
double r264590 = 3.0;
double r264591 = r264577 * r264590;
double r264592 = r264575 / r264591;
double r264593 = r264589 - r264592;
double r264594 = r264585 * r264593;
double r264595 = r264582 - r264594;
double r264596 = r264575 * r264595;
double r264597 = exp(r264596);
double r264598 = r264574 * r264597;
double r264599 = r264573 + r264598;
double r264600 = r264573 / r264599;
return r264600;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r264601 = x;
double r264602 = y;
double r264603 = 2.0;
double r264604 = exp(r264603);
double r264605 = t;
double r264606 = r264603 / r264605;
double r264607 = 3.0;
double r264608 = r264606 / r264607;
double r264609 = a;
double r264610 = 5.0;
double r264611 = 6.0;
double r264612 = r264610 / r264611;
double r264613 = r264609 + r264612;
double r264614 = r264608 - r264613;
double r264615 = b;
double r264616 = c;
double r264617 = r264615 - r264616;
double r264618 = z;
double r264619 = r264605 + r264609;
double r264620 = sqrt(r264619);
double r264621 = r264605 / r264620;
double r264622 = r264618 / r264621;
double r264623 = fma(r264614, r264617, r264622);
double r264624 = pow(r264604, r264623);
double r264625 = fma(r264602, r264624, r264601);
double r264626 = r264601 / r264625;
return r264626;
}




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 | 3.0 |
| Herbie | 2.2 |
Initial program 3.8
Simplified2.7
rmApplied associate-/l*2.2
Final simplification2.2
herbie shell --seed 2019235 +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.1183266448915811e-50) (/ x (+ x (* y (exp (* 2 (- (+ (* a c) (* 0.83333333333333337 c)) (* a b))))))) (if (< t 5.19658877065154709e-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)))))))))))