\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\frac{1}{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\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}}}} \cdot \frac{x}{\frac{\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y} \cdot \sqrt[3]{y}}}{\sqrt[3]{{e}^{\left(\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b\right)}}}}double f(double x, double y, double z, double t, double a, double b) {
double r26168152 = x;
double r26168153 = y;
double r26168154 = z;
double r26168155 = log(r26168154);
double r26168156 = r26168153 * r26168155;
double r26168157 = t;
double r26168158 = 1.0;
double r26168159 = r26168157 - r26168158;
double r26168160 = a;
double r26168161 = log(r26168160);
double r26168162 = r26168159 * r26168161;
double r26168163 = r26168156 + r26168162;
double r26168164 = b;
double r26168165 = r26168163 - r26168164;
double r26168166 = exp(r26168165);
double r26168167 = r26168152 * r26168166;
double r26168168 = r26168167 / r26168153;
return r26168168;
}
double f(double x, double y, double z, double t, double a, double b) {
double r26168169 = 1.0;
double r26168170 = y;
double r26168171 = cbrt(r26168170);
double r26168172 = r26168171 * r26168171;
double r26168173 = a;
double r26168174 = log(r26168173);
double r26168175 = t;
double r26168176 = 1.0;
double r26168177 = r26168175 - r26168176;
double r26168178 = r26168174 * r26168177;
double r26168179 = z;
double r26168180 = log(r26168179);
double r26168181 = r26168180 * r26168170;
double r26168182 = r26168178 + r26168181;
double r26168183 = b;
double r26168184 = r26168182 - r26168183;
double r26168185 = exp(r26168184);
double r26168186 = cbrt(r26168185);
double r26168187 = r26168186 * r26168186;
double r26168188 = r26168172 / r26168187;
double r26168189 = r26168169 / r26168188;
double r26168190 = x;
double r26168191 = cbrt(r26168171);
double r26168192 = cbrt(r26168172);
double r26168193 = r26168191 * r26168192;
double r26168194 = exp(1.0);
double r26168195 = pow(r26168194, r26168184);
double r26168196 = cbrt(r26168195);
double r26168197 = r26168193 / r26168196;
double r26168198 = r26168190 / r26168197;
double r26168199 = r26168189 * r26168198;
return r26168199;
}




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.0 |
|---|---|
| Target | 11.5 |
| Herbie | 1.1 |
Initial program 2.0
rmApplied associate-/l*1.9
rmApplied add-cube-cbrt1.9
Applied add-cube-cbrt1.9
Applied times-frac1.9
Applied *-un-lft-identity1.9
Applied times-frac1.1
rmApplied *-un-lft-identity1.1
Applied exp-prod1.1
Simplified1.1
rmApplied add-cube-cbrt1.1
Applied cbrt-prod1.1
Final simplification1.1
herbie shell --seed 2019171
(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))