\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\frac{x \cdot \frac{{\left(\frac{\sqrt{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 r531842 = x;
double r531843 = y;
double r531844 = z;
double r531845 = log(r531844);
double r531846 = r531843 * r531845;
double r531847 = t;
double r531848 = 1.0;
double r531849 = r531847 - r531848;
double r531850 = a;
double r531851 = log(r531850);
double r531852 = r531849 * r531851;
double r531853 = r531846 + r531852;
double r531854 = b;
double r531855 = r531853 - r531854;
double r531856 = exp(r531855);
double r531857 = r531842 * r531856;
double r531858 = r531857 / r531843;
return r531858;
}
double f(double x, double y, double z, double t, double a, double b) {
double r531859 = x;
double r531860 = 1.0;
double r531861 = sqrt(r531860);
double r531862 = a;
double r531863 = r531861 / r531862;
double r531864 = 1.0;
double r531865 = pow(r531863, r531864);
double r531866 = y;
double r531867 = z;
double r531868 = r531860 / r531867;
double r531869 = log(r531868);
double r531870 = r531866 * r531869;
double r531871 = r531860 / r531862;
double r531872 = log(r531871);
double r531873 = t;
double r531874 = r531872 * r531873;
double r531875 = b;
double r531876 = r531874 + r531875;
double r531877 = r531870 + r531876;
double r531878 = exp(r531877);
double r531879 = r531865 / r531878;
double r531880 = r531859 * r531879;
double r531881 = r531880 / r531866;
return r531881;
}




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.1 |
Initial program 1.8
Taylor expanded around inf 1.9
Simplified1.1
rmApplied *-un-lft-identity1.1
Applied *-un-lft-identity1.1
Applied add-sqr-sqrt1.1
Applied times-frac1.1
Applied unpow-prod-down1.1
Applied times-frac1.1
Applied associate-*r*1.1
Simplified1.1
Final simplification1.1
herbie shell --seed 2020065
(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))