\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\frac{\left(x \cdot \sqrt{\frac{{\left(\frac{1}{a}\right)}^{1}}{e^{y \cdot \log \left(\frac{1}{z}\right) + \left(\log \left(\frac{1}{a}\right) \cdot t + b\right)}}}\right) \cdot \sqrt{\frac{{\left(\frac{1}{a}\right)}^{1}}{e^{y \cdot \log \left(\frac{1}{z}\right) + \left(\log \left(\frac{1}{a}\right) \cdot t + b\right)}}}}{y}double f(double x, double y, double z, double t, double a, double b) {
double r488676 = x;
double r488677 = y;
double r488678 = z;
double r488679 = log(r488678);
double r488680 = r488677 * r488679;
double r488681 = t;
double r488682 = 1.0;
double r488683 = r488681 - r488682;
double r488684 = a;
double r488685 = log(r488684);
double r488686 = r488683 * r488685;
double r488687 = r488680 + r488686;
double r488688 = b;
double r488689 = r488687 - r488688;
double r488690 = exp(r488689);
double r488691 = r488676 * r488690;
double r488692 = r488691 / r488677;
return r488692;
}
double f(double x, double y, double z, double t, double a, double b) {
double r488693 = x;
double r488694 = 1.0;
double r488695 = a;
double r488696 = r488694 / r488695;
double r488697 = 1.0;
double r488698 = pow(r488696, r488697);
double r488699 = y;
double r488700 = z;
double r488701 = r488694 / r488700;
double r488702 = log(r488701);
double r488703 = r488699 * r488702;
double r488704 = log(r488696);
double r488705 = t;
double r488706 = r488704 * r488705;
double r488707 = b;
double r488708 = r488706 + r488707;
double r488709 = r488703 + r488708;
double r488710 = exp(r488709);
double r488711 = r488698 / r488710;
double r488712 = sqrt(r488711);
double r488713 = r488693 * r488712;
double r488714 = r488713 * r488712;
double r488715 = r488714 / r488699;
return r488715;
}




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 | 10.8 |
| Herbie | 1.3 |
Initial program 2.0
Taylor expanded around inf 2.0
Simplified1.3
rmApplied add-sqr-sqrt1.3
Applied associate-*r*1.3
Final simplification1.3
herbie shell --seed 2020081
(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))