\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\frac{x \cdot \left(\left(\sqrt[3]{e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}} \cdot \sqrt[3]{e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}\right) \cdot \sqrt[3]{\left(\sqrt[3]{e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}} \cdot \sqrt[3]{e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}\right) \cdot \sqrt[3]{{\left(\sqrt{e}\right)}^{\left(\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b\right)} \cdot {\left(\sqrt{e}\right)}^{\left(\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b\right)}}}\right)}{y}double f(double x, double y, double z, double t, double a, double b) {
double r21388064 = x;
double r21388065 = y;
double r21388066 = z;
double r21388067 = log(r21388066);
double r21388068 = r21388065 * r21388067;
double r21388069 = t;
double r21388070 = 1.0;
double r21388071 = r21388069 - r21388070;
double r21388072 = a;
double r21388073 = log(r21388072);
double r21388074 = r21388071 * r21388073;
double r21388075 = r21388068 + r21388074;
double r21388076 = b;
double r21388077 = r21388075 - r21388076;
double r21388078 = exp(r21388077);
double r21388079 = r21388064 * r21388078;
double r21388080 = r21388079 / r21388065;
return r21388080;
}
double f(double x, double y, double z, double t, double a, double b) {
double r21388081 = x;
double r21388082 = a;
double r21388083 = log(r21388082);
double r21388084 = t;
double r21388085 = 1.0;
double r21388086 = r21388084 - r21388085;
double r21388087 = r21388083 * r21388086;
double r21388088 = z;
double r21388089 = log(r21388088);
double r21388090 = y;
double r21388091 = r21388089 * r21388090;
double r21388092 = r21388087 + r21388091;
double r21388093 = b;
double r21388094 = r21388092 - r21388093;
double r21388095 = exp(r21388094);
double r21388096 = cbrt(r21388095);
double r21388097 = r21388096 * r21388096;
double r21388098 = exp(1.0);
double r21388099 = sqrt(r21388098);
double r21388100 = pow(r21388099, r21388094);
double r21388101 = r21388100 * r21388100;
double r21388102 = cbrt(r21388101);
double r21388103 = r21388097 * r21388102;
double r21388104 = cbrt(r21388103);
double r21388105 = r21388097 * r21388104;
double r21388106 = r21388081 * r21388105;
double r21388107 = r21388106 / r21388090;
return r21388107;
}




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.1 |
|---|---|
| Target | 10.9 |
| Herbie | 2.0 |
Initial program 2.1
rmApplied add-cube-cbrt2.1
rmApplied add-cube-cbrt2.1
rmApplied *-un-lft-identity2.1
Applied exp-prod2.1
Simplified2.1
rmApplied add-sqr-sqrt2.0
Applied unpow-prod-down2.0
Final simplification2.0
herbie shell --seed 2019168 +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.0) (* 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.0) (* y (log z))))))
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))