\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}x \cdot \frac{e^{\log z \cdot y - \left(b - \log a \cdot \left(t - 1\right)\right)}}{y}double f(double x, double y, double z, double t, double a, double b) {
double r448569 = x;
double r448570 = y;
double r448571 = z;
double r448572 = log(r448571);
double r448573 = r448570 * r448572;
double r448574 = t;
double r448575 = 1.0;
double r448576 = r448574 - r448575;
double r448577 = a;
double r448578 = log(r448577);
double r448579 = r448576 * r448578;
double r448580 = r448573 + r448579;
double r448581 = b;
double r448582 = r448580 - r448581;
double r448583 = exp(r448582);
double r448584 = r448569 * r448583;
double r448585 = r448584 / r448570;
return r448585;
}
double f(double x, double y, double z, double t, double a, double b) {
double r448586 = x;
double r448587 = z;
double r448588 = log(r448587);
double r448589 = y;
double r448590 = r448588 * r448589;
double r448591 = b;
double r448592 = a;
double r448593 = log(r448592);
double r448594 = t;
double r448595 = 1.0;
double r448596 = r448594 - r448595;
double r448597 = r448593 * r448596;
double r448598 = r448591 - r448597;
double r448599 = r448590 - r448598;
double r448600 = exp(r448599);
double r448601 = r448600 / r448589;
double r448602 = r448586 * r448601;
return r448602;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 2.0 |
|---|---|
| Target | 11.2 |
| Herbie | 2.1 |
Initial program 2.0
rmApplied *-un-lft-identity2.0
Applied times-frac2.1
Simplified2.1
Simplified18.2
rmApplied add-exp-log18.9
Applied pow-exp18.9
Applied div-exp13.4
Applied add-exp-log13.4
Applied pow-exp13.4
Applied div-exp2.1
Final simplification2.1
herbie shell --seed 2019323 +o rules:numerics
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2, A"
:precision binary64
:herbie-target
(if (< t -0.8845848504127471) (/ (* x (/ (pow a (- t 1)) y)) (- (+ b 1) (* y (log z)))) (if (< t 852031.2288374073) (/ (* (/ x y) (pow a (- t 1))) (exp (- b (* (log z) y)))) (/ (* x (/ (pow a (- t 1)) y)) (- (+ b 1) (* y (log z))))))
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1) (log a))) b))) y))