\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\frac{\left(x \cdot \frac{{\left(\frac{1}{\sqrt[3]{a} \cdot \sqrt[3]{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{{\left(\frac{1}{\sqrt[3]{a}}\right)}^{1}}{\sqrt{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 r414133 = x;
double r414134 = y;
double r414135 = z;
double r414136 = log(r414135);
double r414137 = r414134 * r414136;
double r414138 = t;
double r414139 = 1.0;
double r414140 = r414138 - r414139;
double r414141 = a;
double r414142 = log(r414141);
double r414143 = r414140 * r414142;
double r414144 = r414137 + r414143;
double r414145 = b;
double r414146 = r414144 - r414145;
double r414147 = exp(r414146);
double r414148 = r414133 * r414147;
double r414149 = r414148 / r414134;
return r414149;
}
double f(double x, double y, double z, double t, double a, double b) {
double r414150 = x;
double r414151 = 1.0;
double r414152 = a;
double r414153 = cbrt(r414152);
double r414154 = r414153 * r414153;
double r414155 = r414151 / r414154;
double r414156 = 1.0;
double r414157 = pow(r414155, r414156);
double r414158 = y;
double r414159 = z;
double r414160 = r414151 / r414159;
double r414161 = log(r414160);
double r414162 = r414158 * r414161;
double r414163 = r414151 / r414152;
double r414164 = log(r414163);
double r414165 = t;
double r414166 = r414164 * r414165;
double r414167 = b;
double r414168 = r414166 + r414167;
double r414169 = r414162 + r414168;
double r414170 = exp(r414169);
double r414171 = sqrt(r414170);
double r414172 = r414157 / r414171;
double r414173 = r414150 * r414172;
double r414174 = r414151 / r414153;
double r414175 = pow(r414174, r414156);
double r414176 = r414175 / r414171;
double r414177 = r414173 * r414176;
double r414178 = r414177 / r414158;
return r414178;
}




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.9 |
|---|---|
| Target | 10.7 |
| Herbie | 1.4 |
Initial program 1.9
Taylor expanded around inf 1.9
Simplified1.2
rmApplied add-sqr-sqrt1.3
Applied add-cube-cbrt1.4
Applied *-un-lft-identity1.4
Applied times-frac1.4
Applied unpow-prod-down1.4
Applied times-frac1.4
Applied associate-*r*1.4
Final simplification1.4
herbie shell --seed 2019322
(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.88458485041274715) (/ (* x (/ (pow a (- t 1)) y)) (- (+ b 1) (* y (log z)))) (if (< t 852031.22883740731) (/ (* (/ 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))