x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}x \cdot e^{y \cdot \left(\log z - t\right) + \left(a \cdot \left(\log 1 - b\right) - 1 \cdot \left(a \cdot z\right)\right)}double f(double x, double y, double z, double t, double a, double b) {
double r80901 = x;
double r80902 = y;
double r80903 = z;
double r80904 = log(r80903);
double r80905 = t;
double r80906 = r80904 - r80905;
double r80907 = r80902 * r80906;
double r80908 = a;
double r80909 = 1.0;
double r80910 = r80909 - r80903;
double r80911 = log(r80910);
double r80912 = b;
double r80913 = r80911 - r80912;
double r80914 = r80908 * r80913;
double r80915 = r80907 + r80914;
double r80916 = exp(r80915);
double r80917 = r80901 * r80916;
return r80917;
}
double f(double x, double y, double z, double t, double a, double b) {
double r80918 = x;
double r80919 = y;
double r80920 = z;
double r80921 = log(r80920);
double r80922 = t;
double r80923 = r80921 - r80922;
double r80924 = r80919 * r80923;
double r80925 = a;
double r80926 = 1.0;
double r80927 = log(r80926);
double r80928 = b;
double r80929 = r80927 - r80928;
double r80930 = r80925 * r80929;
double r80931 = r80925 * r80920;
double r80932 = r80926 * r80931;
double r80933 = r80930 - r80932;
double r80934 = r80924 + r80933;
double r80935 = exp(r80934);
double r80936 = r80918 * r80935;
return r80936;
}



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
Initial program 2.1
Taylor expanded around 0 0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2019326
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaApprox from math-functions-0.1.5.2, B"
:precision binary64
(* x (exp (+ (* y (- (log z) t)) (* a (- (log (- 1 z)) b))))))