\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}{y}\sqrt[3]{\frac{x \cdot {e}^{\left(\left(\log a \cdot \left(t - 1.0\right) + \log z \cdot y\right) - b\right)}}{y}} \cdot \left(\sqrt[3]{\frac{x \cdot e^{\left(\log a \cdot \left(t - 1.0\right) + \log z \cdot y\right) - b}}{y}} \cdot \sqrt[3]{\frac{x \cdot e^{\left(\log a \cdot \left(t - 1.0\right) + \log z \cdot y\right) - b}}{y}}\right)double f(double x, double y, double z, double t, double a, double b) {
double r18302946 = x;
double r18302947 = y;
double r18302948 = z;
double r18302949 = log(r18302948);
double r18302950 = r18302947 * r18302949;
double r18302951 = t;
double r18302952 = 1.0;
double r18302953 = r18302951 - r18302952;
double r18302954 = a;
double r18302955 = log(r18302954);
double r18302956 = r18302953 * r18302955;
double r18302957 = r18302950 + r18302956;
double r18302958 = b;
double r18302959 = r18302957 - r18302958;
double r18302960 = exp(r18302959);
double r18302961 = r18302946 * r18302960;
double r18302962 = r18302961 / r18302947;
return r18302962;
}
double f(double x, double y, double z, double t, double a, double b) {
double r18302963 = x;
double r18302964 = exp(1.0);
double r18302965 = a;
double r18302966 = log(r18302965);
double r18302967 = t;
double r18302968 = 1.0;
double r18302969 = r18302967 - r18302968;
double r18302970 = r18302966 * r18302969;
double r18302971 = z;
double r18302972 = log(r18302971);
double r18302973 = y;
double r18302974 = r18302972 * r18302973;
double r18302975 = r18302970 + r18302974;
double r18302976 = b;
double r18302977 = r18302975 - r18302976;
double r18302978 = pow(r18302964, r18302977);
double r18302979 = r18302963 * r18302978;
double r18302980 = r18302979 / r18302973;
double r18302981 = cbrt(r18302980);
double r18302982 = exp(r18302977);
double r18302983 = r18302963 * r18302982;
double r18302984 = r18302983 / r18302973;
double r18302985 = cbrt(r18302984);
double r18302986 = r18302985 * r18302985;
double r18302987 = r18302981 * r18302986;
return r18302987;
}




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 | 10.9 |
| Herbie | 1.8 |
Initial program 1.8
rmApplied add-cube-cbrt1.8
rmApplied *-un-lft-identity1.8
Applied exp-prod1.8
Simplified1.8
Final simplification1.8
herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2, A"
:herbie-target
(if (< t -0.8845848504127471) (/ (* x (/ (pow a (- t 1.0)) y)) (- (+ b 1) (* y (log z)))) (if (< t 852031.2288374073) (/ (* (/ x y) (pow a (- t 1.0))) (exp (- b (* (log z) y)))) (/ (* x (/ (pow a (- t 1.0)) y)) (- (+ b 1) (* y (log z))))))
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))