\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\left(\left(x \cdot \frac{\sqrt{{\left(\frac{1}{a}\right)}^{1}}}{\sqrt{e^{y \cdot \log \left(\frac{1}{z}\right) + \left(\log \left(\frac{1}{a}\right) \cdot t + b\right)}}}\right) \cdot \frac{\sqrt{{\left(\frac{1}{a}\right)}^{1}}}{\sqrt{e^{y \cdot \log \left(\frac{1}{z}\right) + \left(\log \left(\frac{1}{a}\right) \cdot t + b\right)}}}\right) \cdot \frac{1}{y}double f(double x, double y, double z, double t, double a, double b) {
double r580761 = x;
double r580762 = y;
double r580763 = z;
double r580764 = log(r580763);
double r580765 = r580762 * r580764;
double r580766 = t;
double r580767 = 1.0;
double r580768 = r580766 - r580767;
double r580769 = a;
double r580770 = log(r580769);
double r580771 = r580768 * r580770;
double r580772 = r580765 + r580771;
double r580773 = b;
double r580774 = r580772 - r580773;
double r580775 = exp(r580774);
double r580776 = r580761 * r580775;
double r580777 = r580776 / r580762;
return r580777;
}
double f(double x, double y, double z, double t, double a, double b) {
double r580778 = x;
double r580779 = 1.0;
double r580780 = a;
double r580781 = r580779 / r580780;
double r580782 = 1.0;
double r580783 = pow(r580781, r580782);
double r580784 = sqrt(r580783);
double r580785 = y;
double r580786 = z;
double r580787 = r580779 / r580786;
double r580788 = log(r580787);
double r580789 = r580785 * r580788;
double r580790 = log(r580781);
double r580791 = t;
double r580792 = r580790 * r580791;
double r580793 = b;
double r580794 = r580792 + r580793;
double r580795 = r580789 + r580794;
double r580796 = exp(r580795);
double r580797 = sqrt(r580796);
double r580798 = r580784 / r580797;
double r580799 = r580778 * r580798;
double r580800 = r580799 * r580798;
double r580801 = r580779 / r580785;
double r580802 = r580800 * r580801;
return r580802;
}




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 | 1.8 |
|---|---|
| Target | 11.0 |
| Herbie | 1.2 |
Initial program 1.8
Taylor expanded around inf 1.8
Simplified1.1
rmApplied div-inv1.1
rmApplied add-sqr-sqrt1.1
Applied add-sqr-sqrt1.2
Applied times-frac1.2
Applied associate-*r*1.2
Final simplification1.2
herbie shell --seed 2020025
(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))